Dear ALL!
There is trivial sample code which is not running in some reason. Please
point me where is a bug.
Application should retrieve WSDL by URL and call method from that WS.
Code snippet:
import java.net.URL;
import javax.xml.namespace.QName;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.engine.AxisConfiguration;
public class Client {
public static void main(String[] argv) {
try {
ServiceClient client = new ServiceClient(
null,
new
URL("http://127.0.0.1:8080/axis2/services/MyService?wsdl"),
new QName("http://example1.userguide", "MyService"),
"MyServiceHttpport"
);
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs =
fac.createOMNamespace("http://example1.userguide", "ns1");
OMElement method = fac.createOMElement("echo", omNs);
OMElement value = fac.createOMElement("value", omNs);
value.setText("Hello , my first service utilization");
method.addChild(value);
OMElement result = client.sendReceive(method);
System.out.println(result);
} catch (Throwable th) {
th.printStackTrace();
}
}
}
Unfortunately it throws runtime error:
2007-11-20 13:43:02,632 ERROR
org.apache.axis2.description.WSDL11ToAxisServiceBuilder - RPC-literal
type message part parameters should have a type attribute
org.apache.axis2.description.WSDL11ToAxisServiceBuilder$WSDLProcessingException:
RPC-literal type message part parameters should have a type attribute
at
org.apache.axis2.description.WSDL11ToAxisServiceBuilder.addPartToElement(WSDL11ToAxisServiceBuilder.java:1992)
at
org.apache.axis2.description.WSDL11ToAxisServiceBuilder.getNewComplextType(WSDL11ToAxisServiceBuilder.java:1879)
at
org.apache.axis2.description.WSDL11ToAxisServiceBuilder.createSchemaForPorttype(WSDL11ToAxisServiceBuilder.java:1544)
at
org.apache.axis2.description.WSDL11ToAxisServiceBuilder.generateWrapperSchema(WSDL11ToAxisServiceBuilder.java:1431)
at
org.apache.axis2.description.WSDL11ToAxisServiceBuilder.populateService(WSDL11ToAxisServiceBuilder.java:255)
at
org.apache.axis2.description.AxisService.createClientSideAxisService(AxisService.java:1644)
at
org.apache.axis2.description.AxisService.createClientSideAxisService(AxisService.java:1608)
at org.apache.axis2.client.ServiceClient.<init>(ServiceClient.java:215)
at com.fizzback.qa.gates.fake.Client.main(Client.java:56)
... etc.
It is strange for me because similar sample code from inet source is
working correctly:
...
EndpointReference targetEPR = new
EndpointReference("http://localhost:8080/axis2/services/MyService");
OMElement payload = getEchoOMElement();
Options options = new Options();
options.setTo(targetEPR);
options.setAction("urn:echo");
ServiceClient sender = new ServiceClient();
sender.setOptions(options);
OMElement result = sender.sendReceive(payload);
...
A WSDL for test service is as follow:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ns1="http://org.apache.axis2/xsd"
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:ns0="http://example1.userguide"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://example1.userguide">
<wsdl:documentation>MyService</wsdl:documentation>
<wsdl:types>
<xs:schema xmlns:ns="http://example1.userguide" attributeFormDefault="qualified"
elementFormDefault="qualified" targetNamespace="http://example1.userguide">
<xs:complexType name="Exception">
<xs:sequence>
<xs:element minOccurs="0" name="Exception" nillable="true"
type="xs:anyType"/>
</xs:sequence>
</xs:complexType>
<xs:element name="XMLStreamException">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="XMLStreamException" nillable="true"
type="xs:anyType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="echo">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="echo" nillable="true"
type="xs:anyType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="echoResponse">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="return" nillable="true"
type="xs:anyType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ping">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="ping" nillable="true"
type="xs:anyType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="pingF">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="param0" nillable="true"
type="xs:anyType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</wsdl:types>
<wsdl:message name="pingFRequest">
<wsdl:part name="parameters" element="ns0:pingF"/>
</wsdl:message>
<wsdl:message name="pingFResponse"/>
<wsdl:message name="echoRequest">
<wsdl:part name="parameters" element="ns0:echo"/>
</wsdl:message>
<wsdl:message name="echoResponse">
<wsdl:part name="parameters" element="ns0:echoResponse"/>
</wsdl:message>
<wsdl:message name="XMLStreamException">
<wsdl:part name="parameters" element="ns0:XMLStreamException"/>
</wsdl:message>
<wsdl:message name="pingRequest">
<wsdl:part name="parameters" element="ns0:ping"/>
</wsdl:message>
<wsdl:message name="pingResponse"/>
<wsdl:portType name="MyServicePortType">
<wsdl:operation name="pingF">
<wsdl:input message="ns0:pingFRequest" wsaw:Action="urn:pingF"/>
<wsdl:output message="ns0:pingFResponse"
wsaw:Action="urn:pingFResponse"/>
</wsdl:operation>
<wsdl:operation name="echo">
<wsdl:input message="ns0:echoRequest" wsaw:Action="urn:echo"/>
<wsdl:output message="ns0:echoResponse"
wsaw:Action="urn:echoResponse"/>
<wsdl:fault message="ns0:XMLStreamException" name="XMLStreamException"
wsaw:Action="urn:echoXMLStreamException"/>
</wsdl:operation>
<wsdl:operation name="ping">
<wsdl:input message="ns0:pingRequest" wsaw:Action="urn:ping"/>
<wsdl:output message="ns0:pingResponse"
wsaw:Action="urn:pingResponse"/>
<wsdl:fault message="ns0:XMLStreamException" name="XMLStreamException"
wsaw:Action="urn:pingXMLStreamException"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="MyServiceSOAP11Binding" type="ns0:MyServicePortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document"/>
<wsdl:operation name="pingF">
<soap:operation soapAction="urn:pingF" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="echo">
<soap:operation soapAction="urn:echo" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="XMLStreamException">
<soap:fault use="literal" name="XMLStreamException"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ping">
<soap:operation soapAction="urn:ping" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="XMLStreamException">
<soap:fault use="literal" name="XMLStreamException"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="MyServiceSOAP12Binding" type="ns0:MyServicePortType">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document"/>
<wsdl:operation name="pingF">
<soap12:operation soapAction="urn:pingF" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="echo">
<soap12:operation soapAction="urn:echo" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
<wsdl:fault name="XMLStreamException">
<soap12:fault use="literal" name="XMLStreamException"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="ping">
<soap12:operation soapAction="urn:ping" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
<wsdl:fault name="XMLStreamException">
<soap12:fault use="literal" name="XMLStreamException"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="MyServiceHttpBinding" type="ns0:MyServicePortType">
<http:binding verb="POST"/>
<wsdl:operation name="pingF">
<http:operation location="MyService/pingF"/>
<wsdl:input>
<mime:content type="text/xml" part="pingF"/>
</wsdl:input>
</wsdl:operation>
<wsdl:operation name="echo">
<http:operation location="MyService/echo"/>
<wsdl:input>
<mime:content type="text/xml" part="echo"/>
</wsdl:input>
<wsdl:output>
<mime:content type="text/xml" part="echo"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="ping">
<http:operation location="MyService/ping"/>
<wsdl:input>
<mime:content type="text/xml" part="ping"/>
</wsdl:input>
<wsdl:output>
<mime:content type="text/xml" part="ping"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="MyService">
<wsdl:port name="MyServiceSOAP11port_http"
binding="ns0:MyServiceSOAP11Binding">
<soap:address
location="http://127.0.0.1:8080/axis2/services/MyService"/>
</wsdl:port>
<wsdl:port name="MyServiceSOAP12port_http"
binding="ns0:MyServiceSOAP12Binding">
<soap12:address
location="http://127.0.0.1:8080/axis2/services/MyService"/>
</wsdl:port>
<wsdl:port name="MyServiceHttpport" binding="ns0:MyServiceHttpBinding">
<http:address
location="http://127.0.0.1:8080/axis2/services/MyService"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
If you have seen some mistake in my code please tell me. Thanks in advance.
Dima.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]