You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-user@xml.apache.org by Marcia Perry <mp...@lbl.gov> on 2002/03/06 00:45:21 UTC
Apache SOAP-RPC client for WSDP webservice
Hi,
I'm trying to use Apache SOAP-RPC to write a client that invokes a web
service that was developed and deployed under WSDP. I have a WSDL doc
generated under WSDP for this web service and the web.xml deployment
descriptor. Following several Apache SOAP-RPC client code samples,
I wrote the AddIntsClient.java below.
I get the Fault Code "env:Server" w/ FaultString = "Internal server error
(class com.sun.xml.rpc.soap.streaming.SOAPProtocolViolationException)". I
tried several strings passed into the Call method setTargetObjectURI()
seeing that WSDP's xml docs do not use a 'urn' entry. No luck. Dunno if
this is the cause of the error.
I was hoping that someone was able to invoke a WSDP web service from
an Apache SOAP-RPC client and could shed some light on this or provide
a sample code snippet.
Thanks for any help anyone can offer,
Marc
______________________________________________________
MY WSDL:
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="IntegerAdditionService" targetNamespace="http://addints.org/wsdl"
xmlns:tns="http://addints.org/wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:
xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/s
oap/">
<types/>
<message name="getSum">
<part name="int_1" type="xsd:int"/>
<part name="int_2" type="xsd:int"/></message>
<message name="getSumResponse">
<part name="result" type="xsd:int"/></message>
<portType name="AddIntsIFPortType">
<operation name="getSum">
<input message="tns:getSum"/>
<output message="tns:getSumResponse"/></operation></portType>
<binding name="AddIntsIFBinding" type="tns:AddIntsIFPortType">
<operation name="getSum">
<input>
<soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="en
coded" namespace="http://addints.org/wsdl"/></input>
<output>
<soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="en
coded" namespace="http://addints.org/wsdl"/></output>
<soap:operation soapAction=""/></operation>
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/></bi
nding>
<service name="IntegerAddition">
<port name="AddIntsIFPort" binding="tns:AddIntsIFBinding">
<soap:address
location="http://myhost.lbl.gov:8080/jaxrpc-addints/jaxrpc/AddIntsIF"/></port></service>
</definitions>
_______________________________________________
MY CLIENT:
import org.apache.soap.util.xml.*;
import org.apache.soap.rpc.*;
import org.apache.soap.*;
import java.util.Vector;
import java.net.URL;
public class AddIntsClient {
public static void main(String[] args)
{
Response r = null;
Call c = new Call();
Vector parameters = new Vector();
/***** SAME ERROR W/ EVERY c.setTargetObjectURI param BELOW *****/
//c.setTargetObjectURI("urn:xml-soap-addints-demo");
c.setTargetObjectURI("IntegerAdditionService");
//c.setTargetObjectURI("IntegerAddition");
//c.setTargetObjectURI("JAXRPCEndpoint");
//c.setTargetObjectURI("Integer Addition Application");
//c.setTargetObjectURI("http://scooby.lbl.gov:8080/jaxrpc-addints/jaxrpc/Ad
dIntsIF");
c.setMethodName("getSum");
c.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
parameters.addElement(new Parameter("x", Integer.class, args[0], null));
parameters.addElement(new Parameter("y", Integer.class, args[1], null));
c.setParams(parameters);
try {
/*r = c.invoke(
new URL("http://myhost.lbl.gov:8080/soap/servlet/rpcrouter"), "");
*/
// Using URL="http://myhost.lbl.gov:8080/jaxrpc-addints" and letting
// the web.xml deployment descriptor figure this out doesn't work either.
r = c.invoke(
new URL("http://myhost.lbl.gov:8080/jaxrpc-addints/jaxrpc/AddIntsIF
"), "");
} catch(Exception e) {
System.out.println("Error for c.invoke(): ");
e.printStackTrace(); }
if (r.generatedFault())
{
Fault f = r.getFault();
System.out.println("Error Occurred: ");
System.out.println(" Fault Code = " + f.getFaultCode());
System.out.println(" FaultString = " + f.getFaultString());
}
else
{
Parameter result = r.getReturnValue();
System.out.println(args[0] + " + " + args[1] + " = " + result.getValue(
));
}
}
}
----------------------------------------------------------------
Marc Perry MPerry@lbl.gov
Lawrence Berkeley National Laboratory WORK# (510) 486-6786
1 Cyclotron Road FAX# (510) 486-6363
Berkeley, CA 94720 MS: 50A-3111