You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Antonio Ruiz Martínez <ar...@dif.um.es> on 2005/01/11 19:53:48 UTC
Big problem generating correct code with WSDL2Java
Hello!
I'm writing you because I'm having a lot of problems to generate a
simple web service from a file .wsdl that is very simple. I wonder if
you could help me please. I'm going to try to describe the steps that
I'm doing. For this example, I'm using axis1.2rc2.
1) The command that I'm using to generate the code is the following:
java org.apache.axis.wsdl.WSDL2Java --server-side --skeletonDeploy true
-p signservice pruebacarm.wsdl
file.wsdl
---------
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:dss="urn:testsign" targetNamespace="urn:testsign" name="urn:testsign">
<types>
<xs:schema targetNamespace="urn:testsign"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="SignRequest">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" type="xs:string"/>
<xs:element name="status" type="xs:int"/>
</xs:sequence>
<xs:attribute name="RequestID" type="xs:string"
use="optional"/>
<xs:attribute name="Profile" type="xs:string"
use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="SignResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="IDres" type="xs:string"/>
<xs:element name="statusRes" type="xs:int"/>
</xs:sequence>
<xs:attribute name="RequestID" type="xs:string"
use="optional"/>
<xs:attribute name="Profile" type="xs:string"
use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
</types>
<message name="SignRequestIn">
<part name="body" element="dss:SignRequest"/>
</message>
<message name="SignRequestOut">
<part name="body" element="dss:SignResponse"/>
</message>
<portType name="SignRequestSOAP">
<operation name="getSign">
<input message="dss:SignRequestIn"/>
<output message="dss:SignRequestOut"/>
</operation>
</portType>
<binding name="SignRequestSOAPBinding" type="dss:SignRequestSOAP">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getSign">
<soap:operation soapAction="urn:eSignService#getSign"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="eSignService">
<port name="eSignServicePort" binding="dss:SignRequestSOAPBinding">
<soap:address
location="http://micropeich.dif.um.es:8080/axis/services/eSignServicePort"/>
</port>
</service>
</definitions>
deploy.wsdd
----------------
<deployment
xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<!-- Services from eSignService WSDL service -->
<service name="eSignServicePort" provider="java:RPC" style="document"
use="literal">
<parameter name="wsdlTargetNamespace" value="urn:testsign"/>
<parameter name="wsdlServiceElement" value="eSignService"/>
<parameter name="wsdlServicePort" value="eSignServicePort"/>
<parameter name="className"
value="signservice.SignRequestSOAPBindingSkeleton"/>
<parameter name="wsdlPortType" value="SignRequestSOAP"/>
<parameter name="allowedMethods" value="*"/>
<typeMapping
xmlns:ns="urn:testsign"
qname="ns:>SignResponse"
type="java:signservice.SignResponse"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle=""
/>
<typeMapping
xmlns:ns="urn:testsign"
qname="ns:>SignRequest"
type="java:signservice.SignRequest"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle=""
/>
</service>
</deployment>
2) I write the code of the SignRequestSOAPImpl.java
3) then compile the code and deploy the service.
Some comments to the code generated by the tool:
- The name that uses to generate the name of the service is the name of
the port in the .wsdl file (in my example, eSignServicePort) when I
think that the name should be the name of the service name (in my
example, eSignService) or the name of the service location. However, the
code that generate in the class ESignServiceLocator.java in the variable:
private java.lang.String eSignServicePort_address =
"http://micropeich.dif.um.es:8080/axis/services/eSignServicePort";
It is using the URL of the location I don't know if this is a bug or
there are indepent things. But this is not my problem because I solved
it putting in the location of the service that the name of the service
is the name of the port.
4) I test it with the following request:
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<m:SignRequest xmlns:m="urn:testsign" RequestID="" Profile="">
<ID>String</ID>
<status>0</status>
</m:SignRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
5) then I'm getting the following message error:
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode
xmlns:ns1="http://xml.apache.org/axis/">ns1:Client</faultcode>
<faultstring>No such operation 'SignRequest'</faultstring>
<detail>
<ns2:hostname
xmlns:ns2="http://xml.apache.org/axis/">micropeich</ns2:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
6) Then undeploy the service and I fix the deploy file
<deployment
xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<!-- Services from eSignService WSDL service -->
<service name="eSignServicePort" provider="java:RPC" style="document"
use="literal">
<parameter name="wsdlTargetNamespace" value="urn:testsign"/>
<parameter name="wsdlServiceElement" value="eSignService"/>
<parameter name="wsdlServicePort" value="eSignServicePort"/>
<parameter name="className"
value="signservice.SignRequestSOAPBindingSkeleton"/>
<parameter name="wsdlPortType" value="SignRequestSOAP"/>
<parameter name="allowedMethods" value="*"/>
<typeMapping
xmlns:ns="urn:testsign"
qname="ns:>SignResponse"
type="java:signservice.SignResponse"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle=""
/>
<typeMapping
xmlns:ns="urn:testsign"
qname="ns:>SignRequest"
type="java:signservice.SignRequest"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle=""
/>
</service>
</deployment>
7) I'm getting the following error:
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server.userException</faultcode>
<faultstring>java.lang.ClassCastException:
org.apache.axis.encoding.ser.BeanDeserializer</faultstring>
<detail>
<ns1:hostname
xmlns:ns1="http://xml.apache.org/axis/">micropeich</ns1:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
Could you help me, please? I have not any idea at all what the problem is?
I have been looking at the example AddressBook and it uses a class
called DOMUtils. Which is the goal of this class? Should I use it? in
afirmative answer: How?
Regards,
Antonio.
Re: Big problem generating correct code with WSDL2Java
Posted by Antonio Ruiz Martínez <ar...@dif.um.es>.
Hola!
Thanks for your comments.
Bill Keese wrote:
>> <faultstring>No such operation 'SignRequest'</faultstring>
>
>
>
> This happens because your operation is called "getSign" not
> "SignRequest", right?
That's right. At the beginning, it doesn't work because the deploy.wsdd
generated by the wsdl2java is not correct. I don't know if this is a bug.
> I don't really understand how this works though. I thought that
> you have the same name for the operation and the top element in your
> request. (Your names are different: "SignRequest" and "getSign")
that works because I changed the deploy file.
>
>> <faultstring>java.lang.ClassCastException:
>> org.apache.axis.encoding.ser.BeanDeserializer</faultstring>
>
>
> Maybe because encodingStyle is not set to an empty string? Instead of
> using typeMapping why don't you use the beanMapping tag?
I'll try using it but I would like to know if I'm doing some step badly
because it is supposed that the WSDL2java should generate the code and
the deploy file properly.
Have you got any idea?
Regards,
Antonio.
>
> Antonio Ruiz Martínez wrote:
>
>> Hello!
>>
>> I'm writing you because I'm having a lot of problems to generate a
>> simple web service from a file .wsdl that is very simple. I wonder if
>> you could help me please. I'm going to try to describe the steps that
>> I'm doing. For this example, I'm using axis1.2rc2.
>>
>> 1) The command that I'm using to generate the code is the following:
>>
>> java org.apache.axis.wsdl.WSDL2Java --server-side --skeletonDeploy
>> true -p signservice pruebacarm.wsdl
>>
>> file.wsdl
>> ---------
>> <definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
>> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
>> xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
>> xmlns:xs="http://www.w3.org/2001/XMLSchema"
>> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>> xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
>> xmlns:dss="urn:testsign" targetNamespace="urn:testsign"
>> name="urn:testsign">
>> <types>
>> <xs:schema targetNamespace="urn:testsign"
>> xmlns:xs="http://www.w3.org/2001/XMLSchema">
>> <xs:element name="SignRequest">
>> <xs:complexType>
>> <xs:sequence>
>> <xs:element name="ID" type="xs:string"/>
>> <xs:element name="status" type="xs:int"/>
>> </xs:sequence>
>> <xs:attribute name="RequestID" type="xs:string"
>> use="optional"/>
>> <xs:attribute name="Profile" type="xs:string"
>> use="optional"/>
>> </xs:complexType>
>> </xs:element>
>> <xs:element name="SignResponse">
>> <xs:complexType>
>> <xs:sequence>
>> <xs:element name="IDres" type="xs:string"/>
>> <xs:element name="statusRes" type="xs:int"/>
>> </xs:sequence>
>> <xs:attribute name="RequestID" type="xs:string"
>> use="optional"/>
>> <xs:attribute name="Profile" type="xs:string"
>> use="required"/>
>> </xs:complexType>
>> </xs:element>
>> </xs:schema>
>> </types>
>> <message name="SignRequestIn">
>> <part name="body" element="dss:SignRequest"/>
>> </message>
>> <message name="SignRequestOut">
>> <part name="body" element="dss:SignResponse"/>
>> </message>
>> <portType name="SignRequestSOAP">
>> <operation name="getSign">
>> <input message="dss:SignRequestIn"/>
>> <output message="dss:SignRequestOut"/>
>> </operation>
>> </portType>
>> <binding name="SignRequestSOAPBinding" type="dss:SignRequestSOAP">
>> <soap:binding style="document"
>> transport="http://schemas.xmlsoap.org/soap/http"/>
>> <operation name="getSign">
>> <soap:operation soapAction="urn:eSignService#getSign"/>
>> <input>
>> <soap:body use="literal"/>
>> </input>
>> <output>
>> <soap:body use="literal"/>
>> </output>
>> </operation>
>> </binding>
>> <service name="eSignService">
>> <port name="eSignServicePort"
>> binding="dss:SignRequestSOAPBinding">
>> <soap:address
>> location="http://micropeich.dif.um.es:8080/axis/services/eSignServicePort"/>
>>
>> </port>
>> </service>
>> </definitions>
>>
>>
>> deploy.wsdd
>> ----------------
>> <deployment
>> xmlns="http://xml.apache.org/axis/wsdd/"
>> xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
>>
>> <!-- Services from eSignService WSDL service -->
>>
>> <service name="eSignServicePort" provider="java:RPC"
>> style="document" use="literal">
>> <parameter name="wsdlTargetNamespace" value="urn:testsign"/>
>> <parameter name="wsdlServiceElement" value="eSignService"/>
>> <parameter name="wsdlServicePort" value="eSignServicePort"/>
>> <parameter name="className"
>> value="signservice.SignRequestSOAPBindingSkeleton"/>
>> <parameter name="wsdlPortType" value="SignRequestSOAP"/>
>> <parameter name="allowedMethods" value="*"/>
>>
>> <typeMapping
>> xmlns:ns="urn:testsign"
>> qname="ns:>SignResponse"
>> type="java:signservice.SignResponse"
>> serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
>>
>> deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
>> encodingStyle=""
>> />
>> <typeMapping
>> xmlns:ns="urn:testsign"
>> qname="ns:>SignRequest"
>> type="java:signservice.SignRequest"
>> serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
>>
>> deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
>> encodingStyle=""
>> />
>> </service>
>> </deployment>
>>
>> 2) I write the code of the SignRequestSOAPImpl.java
>> 3) then compile the code and deploy the service.
>>
>> Some comments to the code generated by the tool:
>> - The name that uses to generate the name of the service is the name
>> of the port in the .wsdl file (in my example, eSignServicePort) when
>> I think that the name should be the name of the service name (in my
>> example, eSignService) or the name of the service location. However,
>> the code that generate in the class ESignServiceLocator.java in the
>> variable:
>>
>> private java.lang.String eSignServicePort_address =
>> "http://micropeich.dif.um.es:8080/axis/services/eSignServicePort";
>>
>> It is using the URL of the location I don't know if this is a bug or
>> there are indepent things. But this is not my problem because I
>> solved it putting in the location of the service that the name of the
>> service is the name of the port.
>>
>> 4) I test it with the following request:
>> <SOAP-ENV:Envelope
>> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
>> xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> xmlns:xsd="http://www.w3.org/2001/XMLSchema">
>> <SOAP-ENV:Body>
>> <m:SignRequest xmlns:m="urn:testsign" RequestID="" Profile="">
>> <ID>String</ID>
>> <status>0</status>
>> </m:SignRequest>
>> </SOAP-ENV:Body>
>> </SOAP-ENV:Envelope>
>>
>> 5) then I'm getting the following message error:
>>
>> <soapenv:Envelope
>> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
>> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>> <soapenv:Body>
>> <soapenv:Fault>
>> <faultcode
>> xmlns:ns1="http://xml.apache.org/axis/">ns1:Client</faultcode>
>> <faultstring>No such operation 'SignRequest'</faultstring>
>> <detail>
>> <ns2:hostname
>> xmlns:ns2="http://xml.apache.org/axis/">micropeich</ns2:hostname>
>> </detail>
>> </soapenv:Fault>
>> </soapenv:Body>
>> </soapenv:Envelope>
>>
>> 6) Then undeploy the service and I fix the deploy file
>> <deployment
>> xmlns="http://xml.apache.org/axis/wsdd/"
>> xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
>>
>> <!-- Services from eSignService WSDL service -->
>>
>> <service name="eSignServicePort" provider="java:RPC"
>> style="document" use="literal">
>> <parameter name="wsdlTargetNamespace" value="urn:testsign"/>
>> <parameter name="wsdlServiceElement" value="eSignService"/>
>> <parameter name="wsdlServicePort" value="eSignServicePort"/>
>> <parameter name="className"
>> value="signservice.SignRequestSOAPBindingSkeleton"/>
>> <parameter name="wsdlPortType" value="SignRequestSOAP"/>
>> <parameter name="allowedMethods" value="*"/>
>>
>> <typeMapping
>> xmlns:ns="urn:testsign"
>> qname="ns:>SignResponse"
>> type="java:signservice.SignResponse"
>> serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
>>
>> deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
>> encodingStyle=""
>> />
>> <typeMapping
>> xmlns:ns="urn:testsign"
>> qname="ns:>SignRequest"
>> type="java:signservice.SignRequest"
>> serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
>>
>> deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
>> encodingStyle=""
>> />
>> </service>
>> </deployment>
>>
>> 7) I'm getting the following error:
>>
>> <soapenv:Envelope
>> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
>> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>> <soapenv:Body>
>> <soapenv:Fault>
>> <faultcode>soapenv:Server.userException</faultcode>
>> <faultstring>java.lang.ClassCastException:
>> org.apache.axis.encoding.ser.BeanDeserializer</faultstring>
>> <detail>
>> <ns1:hostname
>> xmlns:ns1="http://xml.apache.org/axis/">micropeich</ns1:hostname>
>> </detail>
>> </soapenv:Fault>
>> </soapenv:Body>
>> </soapenv:Envelope>
>>
>> Could you help me, please? I have not any idea at all what the
>> problem is?
>> I have been looking at the example AddressBook and it uses a class
>> called DOMUtils. Which is the goal of this class? Should I use it? in
>> afirmative answer: How?
>>
>> Regards,
>> Antonio.
>>
>>
>>
>
>
--
------------------------------------------------------
Antonio Ruiz Martínez
Faculty of Computer Science-University of Murcia
30071 Murcia - Spain
e-mail: arm@dif.um.es or arm [at] dif [dot] um [dot] es
------------------------------------------------------
Re: Big problem generating correct code with WSDL2Java
Posted by Bill Keese <bi...@tech.beacon-it.co.jp>.
> <faultstring>No such operation 'SignRequest'</faultstring>
This happens because your operation is called "getSign" not
"SignRequest", right? I don't really understand how this works
though. I thought that you have the same name for the operation and the
top element in your request. (Your names are different: "SignRequest"
and "getSign")
> <faultstring>java.lang.ClassCastException:
> org.apache.axis.encoding.ser.BeanDeserializer</faultstring>
Maybe because encodingStyle is not set to an empty string? Instead of
using typeMapping why don't you use the beanMapping tag?
Antonio Ruiz Martínez wrote:
> Hello!
>
> I'm writing you because I'm having a lot of problems to generate a
> simple web service from a file .wsdl that is very simple. I wonder if
> you could help me please. I'm going to try to describe the steps that
> I'm doing. For this example, I'm using axis1.2rc2.
>
> 1) The command that I'm using to generate the code is the following:
>
> java org.apache.axis.wsdl.WSDL2Java --server-side --skeletonDeploy
> true -p signservice pruebacarm.wsdl
>
> file.wsdl
> ---------
> <definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
> xmlns:xs="http://www.w3.org/2001/XMLSchema"
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
> xmlns:dss="urn:testsign" targetNamespace="urn:testsign"
> name="urn:testsign">
> <types>
> <xs:schema targetNamespace="urn:testsign"
> xmlns:xs="http://www.w3.org/2001/XMLSchema">
> <xs:element name="SignRequest">
> <xs:complexType>
> <xs:sequence>
> <xs:element name="ID" type="xs:string"/>
> <xs:element name="status" type="xs:int"/>
> </xs:sequence>
> <xs:attribute name="RequestID" type="xs:string"
> use="optional"/>
> <xs:attribute name="Profile" type="xs:string"
> use="optional"/>
> </xs:complexType>
> </xs:element>
> <xs:element name="SignResponse">
> <xs:complexType>
> <xs:sequence>
> <xs:element name="IDres" type="xs:string"/>
> <xs:element name="statusRes" type="xs:int"/>
> </xs:sequence>
> <xs:attribute name="RequestID" type="xs:string"
> use="optional"/>
> <xs:attribute name="Profile" type="xs:string"
> use="required"/>
> </xs:complexType>
> </xs:element>
> </xs:schema>
> </types>
> <message name="SignRequestIn">
> <part name="body" element="dss:SignRequest"/>
> </message>
> <message name="SignRequestOut">
> <part name="body" element="dss:SignResponse"/>
> </message>
> <portType name="SignRequestSOAP">
> <operation name="getSign">
> <input message="dss:SignRequestIn"/>
> <output message="dss:SignRequestOut"/>
> </operation>
> </portType>
> <binding name="SignRequestSOAPBinding" type="dss:SignRequestSOAP">
> <soap:binding style="document"
> transport="http://schemas.xmlsoap.org/soap/http"/>
> <operation name="getSign">
> <soap:operation soapAction="urn:eSignService#getSign"/>
> <input>
> <soap:body use="literal"/>
> </input>
> <output>
> <soap:body use="literal"/>
> </output>
> </operation>
> </binding>
> <service name="eSignService">
> <port name="eSignServicePort"
> binding="dss:SignRequestSOAPBinding">
> <soap:address
> location="http://micropeich.dif.um.es:8080/axis/services/eSignServicePort"/>
>
> </port>
> </service>
> </definitions>
>
>
> deploy.wsdd
> ----------------
> <deployment
> xmlns="http://xml.apache.org/axis/wsdd/"
> xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
>
> <!-- Services from eSignService WSDL service -->
>
> <service name="eSignServicePort" provider="java:RPC" style="document"
> use="literal">
> <parameter name="wsdlTargetNamespace" value="urn:testsign"/>
> <parameter name="wsdlServiceElement" value="eSignService"/>
> <parameter name="wsdlServicePort" value="eSignServicePort"/>
> <parameter name="className"
> value="signservice.SignRequestSOAPBindingSkeleton"/>
> <parameter name="wsdlPortType" value="SignRequestSOAP"/>
> <parameter name="allowedMethods" value="*"/>
>
> <typeMapping
> xmlns:ns="urn:testsign"
> qname="ns:>SignResponse"
> type="java:signservice.SignResponse"
> serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
>
> deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
> encodingStyle=""
> />
> <typeMapping
> xmlns:ns="urn:testsign"
> qname="ns:>SignRequest"
> type="java:signservice.SignRequest"
> serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
>
> deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
> encodingStyle=""
> />
> </service>
> </deployment>
>
> 2) I write the code of the SignRequestSOAPImpl.java
> 3) then compile the code and deploy the service.
>
> Some comments to the code generated by the tool:
> - The name that uses to generate the name of the service is the name
> of the port in the .wsdl file (in my example, eSignServicePort) when
> I think that the name should be the name of the service name (in my
> example, eSignService) or the name of the service location. However,
> the code that generate in the class ESignServiceLocator.java in the
> variable:
>
> private java.lang.String eSignServicePort_address =
> "http://micropeich.dif.um.es:8080/axis/services/eSignServicePort";
>
> It is using the URL of the location I don't know if this is a bug or
> there are indepent things. But this is not my problem because I solved
> it putting in the location of the service that the name of the service
> is the name of the port.
>
> 4) I test it with the following request:
> <SOAP-ENV:Envelope
> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema">
> <SOAP-ENV:Body>
> <m:SignRequest xmlns:m="urn:testsign" RequestID="" Profile="">
> <ID>String</ID>
> <status>0</status>
> </m:SignRequest>
> </SOAP-ENV:Body>
> </SOAP-ENV:Envelope>
>
> 5) then I'm getting the following message error:
>
> <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> <soapenv:Body>
> <soapenv:Fault>
> <faultcode
> xmlns:ns1="http://xml.apache.org/axis/">ns1:Client</faultcode>
> <faultstring>No such operation 'SignRequest'</faultstring>
> <detail>
> <ns2:hostname
> xmlns:ns2="http://xml.apache.org/axis/">micropeich</ns2:hostname>
> </detail>
> </soapenv:Fault>
> </soapenv:Body>
> </soapenv:Envelope>
>
> 6) Then undeploy the service and I fix the deploy file
> <deployment
> xmlns="http://xml.apache.org/axis/wsdd/"
> xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
>
> <!-- Services from eSignService WSDL service -->
>
> <service name="eSignServicePort" provider="java:RPC" style="document"
> use="literal">
> <parameter name="wsdlTargetNamespace" value="urn:testsign"/>
> <parameter name="wsdlServiceElement" value="eSignService"/>
> <parameter name="wsdlServicePort" value="eSignServicePort"/>
> <parameter name="className"
> value="signservice.SignRequestSOAPBindingSkeleton"/>
> <parameter name="wsdlPortType" value="SignRequestSOAP"/>
> <parameter name="allowedMethods" value="*"/>
>
> <typeMapping
> xmlns:ns="urn:testsign"
> qname="ns:>SignResponse"
> type="java:signservice.SignResponse"
> serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
>
> deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
> encodingStyle=""
> />
> <typeMapping
> xmlns:ns="urn:testsign"
> qname="ns:>SignRequest"
> type="java:signservice.SignRequest"
> serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
>
> deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
> encodingStyle=""
> />
> </service>
> </deployment>
>
> 7) I'm getting the following error:
>
> <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> <soapenv:Body>
> <soapenv:Fault>
> <faultcode>soapenv:Server.userException</faultcode>
> <faultstring>java.lang.ClassCastException:
> org.apache.axis.encoding.ser.BeanDeserializer</faultstring>
> <detail>
> <ns1:hostname
> xmlns:ns1="http://xml.apache.org/axis/">micropeich</ns1:hostname>
> </detail>
> </soapenv:Fault>
> </soapenv:Body>
> </soapenv:Envelope>
>
> Could you help me, please? I have not any idea at all what the problem
> is?
> I have been looking at the example AddressBook and it uses a class
> called DOMUtils. Which is the goal of this class? Should I use it? in
> afirmative answer: How?
>
> Regards,
> Antonio.
>
>
>