2 Replies Latest reply on Oct 7, 2004 10:44 AM by p_nevilleuk

    ws4ee client programming question

    dexterwong

      Hi,
      I deployed the samples-server-web.war to the default server running on jboss-4.0.0DR2 (windows xp).Using a browser I can see the web service from http://localhost:8080/ws4ee/services.
      I'm having problems invoking the web service from a my client programs, ex

      1) My client code looks like

      import javax.xml.namespace.QName;
      import javax.xml.rpc.*;
      import java.net.URL;
      import com.underworld.crimeportal.*;

      public class Test2
      {
      public static void main(String []args) throws Exception
      {
      URL url = new URL("http://localhost:8081/samples-server-web/exactpath/jse?wsdl");
      QName qname = new QName("http://com.underworld.crimeportal/ws4ee", "OrganizationServiceJSE");

      ServiceFactory factory = ServiceFactory.newInstance();
      Service service = factory.createService(url, qname);
      OrganizationEndpoint endpoint = (OrganizationEndpoint)service.getPort(OrganizationEndpoint.class);

      String info = endpoint.getContactInfo("mafia");
      System.out.println(info);
      }
      }
      The output is
      C:\jboss-4.0.0RC1\dwong\output-samples\classes>java -classpath C:\jboss-4.0.0RC1
      \dwong\output-samples\classes;%CLASSPATH% Test2
      log4j:WARN No appenders could be found for logger (org.jboss.webservice.EngineCo
      nfigurationFinder).
      log4j:WARN Please initialize the log4j system properly.
      Exception in thread "main" java.lang.reflect.UndeclaredThrowableException
      at $Proxy0.getContactInfo(Unknown Source)
      at Test2.main(Test2.java:17)
      Caused by: org.xml.sax.SAXException: SimpleDeserializer encountered a child elem
      ent, which is NOT expected, in something it was trying to deserialize.
      at org.apache.axis.encoding.ser.SimpleDeserializer.onStartChild(SimpleDe
      serializer.java:204)
      at org.apache.axis.encoding.DeserializationContextImpl.startElement(Dese
      rializationContextImpl.java:1181)
      at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.ja
      va:244)
      at org.apache.axis.message.SOAPElementAxisImpl.publishToHandler(SOAPElem
      entAxisImpl.java:1409)
      at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:264)
      at org.apache.axis.message.RPCElement.getParams(RPCElement.java:398)
      at org.apache.axis.client.Call.invoke(Call.java:2605)
      at org.apache.axis.client.Call.invoke(Call.java:2487)
      at org.apache.axis.client.Call.invoke(Call.java:1948)
      at org.apache.axis.client.AxisClientProxy.invoke(AxisClientProxy.java:25
      1)
      ... 2 more

      The output from the jboss console window is
      05:49:32,233 INFO [OrganizationEndpointImpl] init: org.apache.axis.transport.ht
      tp.ServletEndpointContextImpl@14886d3
      05:49:32,243 INFO [OrganizationEndpointImpl] getContactInfo:
      05:49:32,243 INFO [OrganizationEndpointImpl] destroy: org.apache.axis.transport
      .http.ServletEndpointContextImpl@14886d3

      2) I create another client using axis1.2 beta. I take the server-web.wsdl and run
      WSDL2Java. I create the following file

      package crimeportal.underworld.com.ws4ee;

      public class Test {
      public static void main(String[] args) throws Exception {
      OrganizationServiceJSELocator loc = new OrganizationServiceJSELocator();
      OrganizationEndpoint oep = loc.getOrganizationPort(new java.net.URL (args[0]));
      System.out.println(oep.getContactInfo("hi"));
      }
      }

      The output is
      C:\axis-1_2beta\samples\test\crimeportal\underworld\com\ws4ee>java -classpath C:
      \axis-1_2beta\samples\test;%CLASSPATH% crimeportal.underworld.com.ws4ee.Test htt
      p://localhost:8081/ws4ee/services/OrganizationServiceJSE
      log4j:WARN No appenders could be found for logger (org.apache.axis.i18n.ProjectR
      esourceBundle).
      log4j:WARN Please initialize the log4j system properly.
      Exception in thread "main" AxisFault
      faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
      faultSubcode:
      faultString: org.xml.sax.SAXException: SimpleDeserializer encountered a child e
      lement, which is NOT expected, in something it was trying to deserialize.
      faultActor:
      faultNode:
      faultDetail:
      {http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXException: Simple
      Deserializer encountered a child element, which is NOT expected, in something it
      was trying to deserialize.
      at org.apache.axis.encoding.ser.SimpleDeserializer.onStartChild(SimpleDe
      serializer.java:148)

      Using tcpmon I can see the request is ok, but the respone is strange. The soap body
      contains element with some encrypted data.

      HTTP/1.1 200 OK

      Set-Cookie: JSESSIONID=45B0E56815B17F7F5E2348029221934B; Path=/ws4ee

      Content-Type: text/xml; charset=utf-8;charset=utf-8

      Date: Thu, 30 Sep 2004 12:49:10 GMT

      Server: Apache-Coyote/1.1

      Connection: close



      <?xml version="1.0" encoding="UTF-8"?>
      <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>
      <ns1:getContactInfoReturn xmlns:ns1="http://com.underworld.crimeportal/ws4ee">
      VGhlICcnIGJvc3MgaXMgY3VycmVudGx5IG91dCBvZiBvZmZpY2UsIHBsZWFzZSBjYWxsIGFnYWluLg==
      </ns1:getContactInfoReturn>
      </soapenv:Body>
      </soapenv:Envelope>

      Does anyone have an example on writing a client that talks to a
      ws2ee document/literal web service? Any help greatly appreciated.

      -dwong

        • 1. Re: ws4ee client programming question
          dexterwong

          Hi,
          I upgraded to the latest jboss 4.0 and it's now working. Cool.

          • 2. Re: ws4ee client programming question
            p_nevilleuk

            I also require an example of using a message style web service for jbossws. If you find one, please let me know!

            Seems that for rpc style, jboss generates the wsdd and drops it in data/wsdl/jarname. The service tag here has the attribute style set to 'rpc' so I am guessing that other styles will still be available.

            I'm hoping that it won't be a case of switching back to jbossdotnet. I cannot find any mention of message style web services in the j2ee web service spec and therefore I am concerned that we may have to switch back.


            Hopefully someone will be able to comment soon.


            Regards,
            Peter