5 Replies Latest reply on Jun 21, 2005 4:34 AM by Alexander

    Complex bean deserialization with WS4EE (JBoss 4.0.2)

    Alexander Newbie

      Hello,

      I have a problem with bean deserialization on the client side of my WS4EE web service. I have mapped my custom data types with an ws4ee-deployment.xml descriptor. After debugging the server side I learned that everything works fine there: the bean serializer and deserializers are found for all beans and the messages are properly processed. But on the client side the deserialization is not working.

      Here are the descriptors:

      WSDL:
      --------

      <definitions name="HelloWorldService"
       targetNamespace="http://webservice.hw.de"
       xmlns:tns="http://webservice.hw.de"
       xmlns="http://schemas.xmlsoap.org/wsdl/"
       xmlns:ns2="http://webservice.hw.de/types"
       xmlns:xsd="http://www.w3.org/2001/XMLSchema"
       xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
       <types>
       <schema
       targetNamespace="http://webservice.hw.de/types"
       xmlns:tns="http://webservice.hw.de/types"
       xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
       xmlns="http://www.w3.org/2001/XMLSchema">
       <complexType name="MyBean">
       <sequence>
       <element
       name="name"
       type="string"
       nillable="true"/>
       <element
       name="rollenArray"
       type="tns:Rollen"
       nillable="true"
       minOccurs="0"
       maxOccurs="unbounded"/>
       <element
       name="rollenStrings"
       type="string"
       nillable="true"
       minOccurs="0"
       maxOccurs="unbounded"/>
       </sequence>
       </complexType>
       <complexType name="Rollen">
       <sequence>
       <element
       name="rolle1"
       type="string"
       nillable="true"/>
       <element
       name="rolle2"
       type="string"
       nillable="true"/>
       </sequence>
       </complexType>
       </schema>
       </types>
       <message name="HelloWorldEndpoint_sayBeanHello">
       <part name="String_1" type="xsd:string"/>
       </message>
       <message name="HelloWorldEndpoint_sayBeanHelloResponse">
       <part name="result" type="ns2:MyBean"/>
       </message>
       <portType name="HelloWorldEndpoint">
       <operation name="sayBeanHello" parameterOrder="String_1">
       <input message="tns:HelloWorldEndpoint_sayBeanHello"/>
       <output
       message="tns:HelloWorldEndpoint_sayBeanHelloResponse"/>
       </operation>
       </portType>
       <binding name="HelloWorldEndpointBinding"
       type="tns:HelloWorldEndpoint">
       <soap:binding
       transport="http://schemas.xmlsoap.org/soap/http"
       style="rpc"/>
       <operation name="sayBeanHello">
       <soap:operation soapAction=""/>
       <input>
       <soap:body use="literal"
       namespace="http://webservice.hw.de"/>
       </input>
       <output>
       <soap:body use="literal"
       namespace="http://webservice.hw.de"/>
       </output>
       </operation>
       </binding>
       <service name="HelloWorldService">
       <port name="HelloWorldEndpointPort"
       binding="tns:HelloWorldEndpointBinding">
       <soap:address
       location="REPLACE_WITH_ACTUAL_URL"/>
       </port>
       </service>
      </definitions>
      


      WS4EE-DEPLOYMENT:
      -------------------------
      <deployment
       xmlns='http://xml.apache.org/axis/wsdd/'
       xmlns:java='http://xml.apache.org/axis/wsdd/providers/java'
       xmlns:soap='http://schemas.xmlsoap.org/soap/encoding/'
       xmlns:xsi='http://www.w3.org/2000/10/XMLSchema-instance'
       xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
      
       <typeMapping
       qname='tns:Rollen'
       xmlns:tns='http://webservice.hw.de/types'
       type='java:de.hw.webservice.Rollen'
       serializer='org.jboss.axis.encoding.ser.BeanSerializerFactory'
       deserializer='org.jboss.axis.encoding.ser.BeanDeserializerFactory'
       encodingStyle=''>
       </typeMapping>
      
       <typeMapping
       qname='tns:MyBean'
       xmlns:tns='http://webservice.hw.de/types'
       type='java:de.hw.webservice.MyBean'
       serializer='org.jboss.axis.encoding.ser.BeanSerializerFactory'
       deserializer='org.jboss.axis.encoding.ser.BeanDeserializerFactory'
       encodingStyle=''>
       </typeMapping>
      </deployment>
      

      On the client side the Result bean is not recognized. The stack trace looks like this:

      DEBUG [BeanDeserializer] onStartChild: rollenArray
      DEBUG [DeserializationContextImpl] Enter:getDeserializer: [class=class [Lde.hw.webservice.Rollen;,xmlType={http://schemas.xmlsoap.org/soap/encoding/}Array]
      DEBUG [DeserializationContextImpl] Exit:getDeserializer: null
      DEBUG [BeanDeserializer] Using itemXmlType = null
      DEBUG [DeserializationContextImpl] Pushing handler org.jboss.axis.encoding.DeserializerImpl@1de0c09
      DEBUG [DeserializerImpl] Deser got type {http://www.w3.org/2001/XMLSchema}string
      DEBUG [DeserializationContextImpl] Enter:getDeserializer: [class=null,xmlType={http://www.w3.org/2001/XMLSchema}string]
      DEBUG [DeserializationContextImpl] Exit:getDeserializer: org.jboss.axis.encoding.ser.SimpleDeserializer@e85825
      DEBUG [DeserializationContextImpl] Exit: DeserializationContextImpl::startElement()
      DEBUG [DeserializationContextImpl] Enter: DeserializationContextImpl::startElement(, rolle1)
      ERROR [Call] Exception:
      org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.
      at org.jboss.axis.encoding.ser.SimpleDeserializer.onStartChild(SimpleDeserializer.java:206)
      at org.jboss.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:1168)
      at org.jboss.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:244)
      at org.jboss.axis.message.SOAPElementAxisImpl.publishToHandler(SOAPElementAxisImpl.java:1386)
      at org.jboss.axis.message.RPCElement.deserialize(RPCElement.java:262)
      at org.jboss.axis.message.RPCElement.getParams(RPCElement.java:396)
      at org.jboss.axis.client.Call.invoke(Call.java:2662)
      at org.jboss.axis.client.Call.invoke(Call.java:2538)
      at org.jboss.axis.client.Call.invokeInternal(Call.java:1976)
      at org.jboss.axis.client.Call.invoke(Call.java:1914)
      at org.jboss.webservice.client.CallImpl.invoke(CallImpl.java:265)
      at org.jboss.axis.client.AxisClientProxy.invoke(AxisClientProxy.java:381)
      at $Proxy8.sayBeanHello(Unknown Source)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at org.jboss.webservice.client.PortProxy.invoke(PortProxy.java:105)
      at $Proxy9.sayBeanHello(Unknown Source)
      at de.hw.client.WsTestClient.callBeanWsViaEndpointInterface(WsTestClient.java:134)
      at de.hw.client.WsTestClient.main(WsTestClient.java:46)

      CLIENT:
      ----------
      public class WsTestClient {
       private static final String WSDL_STRING = "http://127.0.0.1:8080/HelloWorld_EJB/HelloWorldEndpoint?wsdl";
       private static final String SERVICE_NAME = "HelloWorldService";
       private static final String NAMESPACE_URL = "http://webservice.hw.tsystems.de";
       private static final String PORT_NAME = "HelloWorldEndpointPort";
      
       public static void main(String[] args) {
       WsTestClient clientObj = new WsTestClient();
       MyBean bean = clientObj.callBeanWsViaEndpointInterface();
      
       System.out.println("Hello " + bean.getName() + "!");
       System.out.println("Rollen: " + bean.getRollenStrings()[0] + ", " +
       bean.getRollenStrings()[1]);
       System.out.println("Rollen: " + bean.getRollenArray()[0].getRolle1() +
       ", " + bean.getRollenArray()[0].getRolle2() + ", " +
       bean.getRollenArray()[1].getRolle1() + ", " +
       bean.getRollenArray()[1].getRolle2());
       }
      
       private MyBean callBeanWsViaEndpointInterface() {
       MyBean result = null;
      
       try {
       QName qname = new QName(WsTestClient.NAMESPACE_URL,
       WsTestClient.SERVICE_NAME);
       ServiceFactory factory = ServiceFactory.newInstance();
       Service service = factory.createService(new URL(
       WsTestClient.WSDL_STRING), qname);
       HelloWorldEndpoint hello = (HelloWorldEndpoint) service.getPort(HelloWorldEndpoint.class);
       result = hello.sayBeanHello("Bean");
       } catch (MalformedURLException e) {
       e.printStackTrace();
       } catch (RemoteException e) {
       e.printStackTrace();
       } catch (ServiceException e) {
       e.printStackTrace();
       }
      
       return result;
       }
      }
      


      The Rollen array is not deserialized by the BeanSerializer but by the SimpleDeserializer. Do I also have to package an ws4ee-deployment descriptor on the client side? And if yes: where do I have to copy it when I use a POJO as client...

      Thanx for your time!

        • 2. Re: Complex bean deserialization with WS4EE (JBoss 4.0.2)
          Alexander Newbie

          Hi Thomas,

          thank you for your quick answer. I tried to solve the problem by exchanging the "ServiceFactoryImpl.class" file in the "jboss-ws4ee-client.jar"-library ("JBOSS-HOME/client"-dir). But that did not help. I still get the same error when I am trying to deserialize the Rollen[]. Any other idea how I could solve this? I am in a bit in a rush, because I am writing my final thesis and this problem is keeping me busy for two weeks now...

          Greetings from Stuttgart,

          Alex

          PS: I double-checked that the replaced class is effectively found and used by inserting logging statements...

          • 3. Re: Complex bean deserialization with WS4EE (JBoss 4.0.2)
            Alexander Newbie

            Hi again,

            I guess I am getting closer! In fact my client used this code:

            QName qname = new QName(WsTestClient.NAMESPACE_URL,
             WsTestClient.SERVICE_NAME);
            ServiceFactory factory = ServiceFactory.newInstance();
            Service service = factory.createService(new URL(
             WsTestClient.WSDL_STRING), qname);
            HelloWorldEndpoint hello = (HelloWorldEndpoint) service.getPort(HelloWorldEndpoint.class);
             result = hello.sayBeanHello("Bean");
            


            After your hint and some research about the "ServiceFactoryImpl" I came to the conclusion that this is way better:

            QName qname = new QName(WsTestClient.NAMESPACE_URL,
             WsTestClient.SERVICE_NAME);
            URL mappingURL = new File(WsTestClient.MAPPING_STRING).toURL();
            URL metaDataURL = new File(WsTestClient.METADATA_STRING).toURL();
            
            System.out.println("****** " + mappingURL);
            System.out.println("****** " + metaDataURL);
            
            ServiceFactoryImpl factory = (ServiceFactoryImpl) ServiceFactory.newInstance();
            Service service = factory.createService(new URL(
             WsTestClient.WSDL_STRING), mappingURL, null, qname, null);
            
            HelloWorldEndpoint hello = (HelloWorldEndpoint) service.getPort(HelloWorldEndpoint.class);
            result = hello.sayBeanHello("Bean");
            


            But now something else is going wrong:

            [java] ****** file:/C:/Eigene Dateien/lg004740/diplom/data/Beispiele/HelloWorld/HelloWorld_EJB/META-INF/HW-mapping.xml
            [java] ****** file:/C:/Eigene Dateien/lg004740/diplom/data/Beispiele/HelloWorld/HelloWorld_EJB/META-INF/ws4ee-mapping.xml
            [java] 23:05:41,687 INFO [ServiceFactoryImpl] ****** createService(URL wsdlLocation, URL mappingLocation, URL ws4eeMetaData, QName serviceName, String portName)
            [java] 23:05:41,767 ERROR [ServiceFactoryImpl] Failed to get parser's XMLReader
            [java] org.jboss.xml.binding.JBossXBException: Failed to get parser's XMLReader
            [java] at org.jboss.xml.binding.parser.sax.SaxJBossXBParser.setFeature(SaxJBossXBParser.java:112)
            [java] at org.jboss.xml.binding.parser.sax.SaxJBossXBParser.<init>(SaxJBossXBParser.java:71)
            [java] at org.jboss.xml.binding.Unmarshaller.<init>(Unmarshaller.java:68)
            [java] at org.jboss.xml.binding.Unmarshaller.<init>(Unmarshaller.java:52)
            [java] at org.jboss.webservice.metadata.jaxrpcmapping.JavaWsdlMappingFactory.parse(JavaWsdlMappingFactory.java:59)
            [java] at org.jboss.webservice.client.ServiceFactoryImpl.createService(ServiceFactoryImpl.java:170)
            [java] at de.tsystems.hw.client.WsTestClient.callBeanWsViaEndpointInterface(WsTestClient.java:144)
            [java] at de.tsystems.hw.client.WsTestClient.main(WsTestClient.java:52)
            [java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            [java] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
            [java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            [java] at java.lang.reflect.Method.invoke(Unknown Source)
            [java] at org.apache.tools.ant.taskdefs.ExecuteJava.run(ExecuteJava.java:193)
            [java] at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:130)
            [java] at org.apache.tools.ant.taskdefs.Java.run(Java.java:705)
            [java] at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:177)
            [java] at org.apache.tools.ant.taskdefs.Java.execute(Java.java:83)
            [java] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
            [java] at org.apache.tools.ant.Task.perform(Task.java:364)
            [java] at org.apache.tools.ant.Target.execute(Target.java:341)
            [java] at org.apache.tools.ant.Target.performTasks(Target.java:369)
            [java] at org.apache.tools.ant.Project.executeTarget(Project.java:1214)
            [java] at org.apache.tools.ant.Project.executeTargets(Project.java:1062)
            [java] at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.run(InternalAntRunner.java:383)
            [java] at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.main(InternalAntRunner.java:136)
            [java] Caused by: org.xml.sax.SAXNotRecognizedException: Feature: http://apache.org/xml/features/validation/schema
            [java] at org.apache.crimson.parser.XMLReaderImpl.setFeature(Unknown Source)
            [java] at org.jboss.xml.binding.parser.sax.SaxJBossXBParser.setFeature(SaxJBossXBParser.java:108)
            [java] ... 24 more
            [java] javax.xml.rpc.ServiceException: org.jboss.xml.binding.JBossXBException: Failed to get parser's XMLReader
            [java] at org.jboss.webservice.client.ServiceFactoryImpl.createService(ServiceFactoryImpl.java:179)
            [java] at de.tsystems.hw.client.WsTestClient.callBeanWsViaEndpointInterface(WsTestClient.java:144)
            [java] at de.tsystems.hw.client.WsTestClient.main(WsTestClient.java:52)
            [java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            [java] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
            [java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            [java] at java.lang.reflect.Method.invoke(Unknown Source)
            [java] at org.apache.tools.ant.taskdefs.ExecuteJava.run(ExecuteJava.java:193)
            [java] at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:130)
            [java] at org.apache.tools.ant.taskdefs.Java.run(Java.java:705)
            [java] at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:177)
            [java] at org.apache.tools.ant.taskdefs.Java.execute(Java.java:83)
            [java] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
            [java] at org.apache.tools.ant.Task.perform(Task.java:364)
            [java] at org.apache.tools.ant.Target.execute(Target.java:341)
            [java] at org.apache.tools.ant.Target.performTasks(Target.java:369)
            [java] at org.apache.tools.ant.Project.executeTarget(Project.java:1214)
            [java] at org.apache.tools.ant.Project.executeTargets(Project.java:1062)
            [java] at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.run(InternalAntRunner.java:383)
            [java] at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.main(InternalAntRunner.java:136)
            [java] Caused by: org.jboss.xml.binding.JBossXBException: Failed to get parser's XMLReader
            [java] at org.jboss.xml.binding.parser.sax.SaxJBossXBParser.setFeature(SaxJBossXBParser.java:112)
            [java] at org.jboss.xml.binding.parser.sax.SaxJBossXBParser.<init>(SaxJBossXBParser.java:71)
            [java] at org.jboss.xml.binding.Unmarshaller.<init>(Unmarshaller.java:68)
            [java] at org.jboss.xml.binding.Unmarshaller.<init>(Unmarshaller.java:52)
            [java] at org.jboss.webservice.metadata.jaxrpcmapping.JavaWsdlMappingFactory.parse(JavaWsdlMappingFactory.java:59)
            [java] at org.jboss.webservice.client.ServiceFactoryImpl.createService(ServiceFactoryImpl.java:170)
            [java] ... 19 more
            [java] Caused by: org.xml.sax.SAXNotRecognizedException: Feature: http://apache.org/xml/features/validation/schema
            [java] at org.apache.crimson.parser.XMLReaderImpl.setFeature(Unknown Source)
            [java] at org.jboss.xml.binding.parser.sax.SaxJBossXBParser.setFeature(SaxJBossXBParser.java:108)
            [java] ... 24 more
            


            And the "HW-mapping.xml"-file

            <?xml version="1.0" encoding="UTF-8"?>
            <java-wsdl-mapping xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://www.ibm.com/webservices/xsd/j2ee_jaxrpc_mapping_1_1.xsd" version="1.1">
             <package-mapping>
             <package-type>de.tsystems.hw.webservice</package-type>
             <namespaceURI>http://webservice.hw.tsystems.de</namespaceURI>
             </package-mapping>
             <package-mapping>
             <package-type>de.tsystems.hw.webservice</package-type>
             <namespaceURI>http://webservice.hw.tsystems.de/types</namespaceURI>
             </package-mapping>
             <java-xml-type-mapping>
             <java-type>de.tsystems.hw.webservice.MyBean</java-type>
             <root-type-qname xmlns:typeNS="http://webservice.hw.tsystems.de/types">typeNS:MyBean</root-type-qname>
             <qname-scope>complexType</qname-scope>
             <variable-mapping>
             <java-variable-name>name</java-variable-name>
             <xml-element-name>name</xml-element-name>
             </variable-mapping>
             <variable-mapping>
             <java-variable-name>rollenArray</java-variable-name>
             <xml-element-name>rollenArray</xml-element-name>
             </variable-mapping>
             </java-xml-type-mapping>
             <java-xml-type-mapping>
             <java-type>de.tsystems.hw.webservice.Rollen</java-type>
             <root-type-qname xmlns:typeNS="http://webservice.hw.tsystems.de/types">typeNS:Rollen</root-type-qname>
             <qname-scope>complexType</qname-scope>
             <variable-mapping>
             <java-variable-name>rolle1</java-variable-name>
             <xml-element-name>rolle1</xml-element-name>
             </variable-mapping>
             <variable-mapping>
             <java-variable-name>rolle2</java-variable-name>
             <xml-element-name>rolle2</xml-element-name>
             </variable-mapping>
             </java-xml-type-mapping>
             <java-xml-type-mapping>
             <java-type>de.tsystems.hw.webservice.Rollen[]</java-type>
             <anonymous-type-qname>http://webservice.hw.tsystems.de/types:MyBean>rollenArray[0,unbounded]</anonymous-type-qname>
             <qname-scope>complexType</qname-scope>
             </java-xml-type-mapping>
             <service-interface-mapping>
             <service-interface>de.tsystems.hw.webservice.HelloWorldService</service-interface>
             <wsdl-service-name xmlns:serviceNS="http://webservice.hw.tsystems.de">serviceNS:HelloWorldService</wsdl-service-name>
             <port-mapping>
             <port-name>HelloWorldEndpointPort</port-name>
             <java-port-name>HelloWorldEndpointPort</java-port-name>
             </port-mapping>
             </service-interface-mapping>
             <service-endpoint-interface-mapping>
             <service-endpoint-interface>de.tsystems.hw.webservice.HelloWorldEndpoint</service-endpoint-interface>
             <wsdl-port-type xmlns:portTypeNS="http://webservice.hw.tsystems.de">portTypeNS:HelloWorldEndpoint</wsdl-port-type>
             <wsdl-binding xmlns:bindingNS="http://webservice.hw.tsystems.de">bindingNS:HelloWorldEndpointBinding</wsdl-binding>
             <service-endpoint-method-mapping>
             <java-method-name>sayBeanHello</java-method-name>
             <wsdl-operation>sayBeanHello</wsdl-operation>
             <method-param-parts-mapping>
             <param-position>0</param-position>
             <param-type>java.lang.String</param-type>
             <wsdl-message-mapping>
             <wsdl-message xmlns:wsdlMsgNS="http://webservice.hw.tsystems.de">wsdlMsgNS:HelloWorldEndpoint_sayBeanHello</wsdl-message>
             <wsdl-message-part-name>String_1</wsdl-message-part-name>
             <parameter-mode>IN</parameter-mode>
             </wsdl-message-mapping>
             </method-param-parts-mapping>
             <wsdl-return-value-mapping>
             <method-return-value>de.tsystems.hw.webservice.MyBean</method-return-value>
             <wsdl-message xmlns:wsdlMsgNS="http://webservice.hw.tsystems.de">wsdlMsgNS:HelloWorldEndpoint_sayBeanHelloResponse</wsdl-message>
             <wsdl-message-part-name>result</wsdl-message-part-name>
             </wsdl-return-value-mapping>
             </service-endpoint-method-mapping>
             <service-endpoint-method-mapping>
             <java-method-name>sayHello</java-method-name>
             <wsdl-operation>sayHello</wsdl-operation>
             <method-param-parts-mapping>
             <param-position>0</param-position>
             <param-type>java.lang.String</param-type>
             <wsdl-message-mapping>
             <wsdl-message xmlns:wsdlMsgNS="http://webservice.hw.tsystems.de">wsdlMsgNS:HelloWorldEndpoint_sayHello</wsdl-message>
             <wsdl-message-part-name>String_1</wsdl-message-part-name>
             <parameter-mode>IN</parameter-mode>
             </wsdl-message-mapping>
             </method-param-parts-mapping>
             <wsdl-return-value-mapping>
             <method-return-value>java.lang.String</method-return-value>
             <wsdl-message xmlns:wsdlMsgNS="http://webservice.hw.tsystems.de">wsdlMsgNS:HelloWorldEndpoint_sayHelloResponse</wsdl-message>
             <wsdl-message-part-name>result</wsdl-message-part-name>
             </wsdl-return-value-mapping>
             </service-endpoint-method-mapping>
             </service-endpoint-interface-mapping>
            </java-wsdl-mapping>
            


            Can you point me to a good tutorial/the wiki page explaining the "ServiceFactoryImpl"-stuff? I haven't found anything about that before you pointed me to that direction?!

            Thanx,
            Alex

            • 4. Re: Complex bean deserialization with WS4EE (JBoss 4.0.2)
              Thomas Diesler Master

              You could read the DII wiki if you are using DII.

              http://wiki.jboss.org/wiki/Wiki.jsp?page=WSClientDII

              This however, completely ignores the benefits of the WS4EE client programing model. So what motivates you to use DII?

              • 5. Re: Complex bean deserialization with WS4EE (JBoss 4.0.2)
                Alexander Newbie

                Hello Thomas,

                please correct me if I am wrong, but I am using the JAX-RPC Dynamic
                Proxies API and not DII?! At least Monson-Haefel is referring to it that way
                (J2EE Web Services). After all I want to stress the fact of web service
                interoperability. My final thesis is about a SOA in a Java surrounding, but
                in fact I want to make the point that web services provide the possibility to
                connect from various platforms. This and the possibility to wrap EJBs as
                web services were the main criteria for the selection of web services as
                implementation technology. And in order to connect from other than Java
                platforms, I need to obtain the WSDL and connect via standard means -
                not via the JNDI enc. Because of that I am trying to figure out how to
                deserialize the Beans properly. Is there a way to do that? Or is
                WS4EE/Axis and its inherent means of bean serialization/deserialization
                not capable of doing that without connecting via the JNDI. That would be a
                major limitation! Do you know how to overcome the latest exception I
                documented?

                Greetings,
                Alex