External WebServices
kdeboer Jan 3, 2006 10:28 AMI have a problem for which i did not get an answer in the forum. Probably this wa because my question was unclear:
I am trying to access external webservice in the J2EE client way. The WSDL have been generated using AXIS and some PL/SQL generation toolkit.
A t first the WSDLs were generated in Document Literal UnWrapped style. later they were changed on my request to Document Literal Wrapped. But this did not sole my problem (see the stacktrace). I do not know whether the problems are caused by the server implementation or by my client. The client is an adapted version of Thomas Diesler's JBoss WS 4.03 test case.
During the execution of the testcase the client registers the service in the JNDI of a local running server.
Is it possible to work this way with a external service on a remote host?
What can be the cause of the stack trace below?:
2006-01-03 14:54:32,562 DEBUG [org.jboss.axis.encoding.ser.BeanDeserializer:322] onStartChild: {urn:ws.kgb.itude.com}Naam 2006-01-03 14:54:32,562 ERROR [org.jboss.axis.client.Call:2689] Exception: org.xml.sax.SAXException: Invalid element in nl.denhaag.gbd.wsclient.sport.verenigingdetail.service.DhgThemaWsSptVSportverenigingDetaiTMasterRecordAttrs - Naam at org.jboss.axis.encoding.ser.BeanDeserializer.onStartChild(BeanDeserializer.java:432) 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:1389) 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:2685) at org.jboss.axis.client.Call.invoke(Call.java:2561) at org.jboss.axis.client.Call.invokeInternal(Call.java:1982) at org.jboss.axis.client.Call.invoke(Call.java:1920) at org.jboss.webservice.client.CallImpl.invoke(CallImpl.java:265) at org.jboss.axis.client.AxisClientProxy.invokeSEIMethod(AxisClientProxy.java:286) at org.jboss.webservice.client.PortProxy.invoke(PortProxy.java:177) at $Proxy4.slctVerDtl(Unknown Source) at nl.denhaag.gbd.wsclient.sport.verenigingdetail.service.client.SportVerenigingDetailServiceDelegate.selectSportVerenigingDetail(SportVerenigingDetailServiceDelegate.java:50) at nl.denhaag.gbd.wsclient.sport.test.SportServiceTestCase.testVerenigingDetail(SportServiceTestCase.java:85) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22) at junit.extensions.TestSetup$1.protect(TestSetup.java:19) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.extensions.TestSetup.run(TestSetup.java:23) at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:297) at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:672) at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:567) 2006-01-03 14:54:32,578 ERROR [org.jboss.webservice.client.PortProxy:291] Port error org.xml.sax.SAXException: Invalid element in nl.denhaag.gbd.wsclient.sport.verenigingdetail.service.DhgThemaWsSptVSportverenigingDetaiTMasterRecordAttrs - Naam at org.jboss.axis.encoding.ser.BeanDeserializer.onStartChild(BeanDeserializer.java:432)
Naam is a property of the DhgThemaWsSptVSportverenigingDetaiTMasterRecordAttrs class. And Naam is an element in the return SOAP envelope. I do see strange / unusual namespace definitions in the WSDL and in the SOAP return envelope
This is the SOAP response:
<?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><slctVerDtlReturn xmlns="urn:ws.kgb.itude.com"><masterResult><Naam>SV Die Haghe</Naam><Straat>Dr.L.J.Rogierstraat</Straat><Huisnummer>100</Huisnummer><Huisletter xsi:nil="true"/><Toevoeging xsi:nil="true"/><Postcode>2552 LB</Postcode><Woonplaats>DEN HAAG</Woonplaats><Contactpersoon>Graaf, W.P.J. van de</Contactpersoon><Tel>070-3913558</Tel><Email>info@svdiehaghe.nl</Email><Website>www.svdiehaghe.nl</Website></masterResult><detailResult><item xmlns="">Voetbal</item></detailResult></slctVerDtlReturn></soapenv:Body></soapenv:Envelope>
This is the WSDL:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="urn:ws.kgb.itude.com" xmlns:impl="urn:ws.kgb.itude.com" xmlns:intf="urn:ws.kgb.itude.com" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns2="urn:generated.ws.kgb.itude.com" xmlns:tns1="urn:plsql.generated.ws.kgb.itude.com" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<!--WSDL created by Apache Axis version: 1.3
Built on Oct 05, 2005 (05:23:37 EDT)-->
<wsdl:types>
</wsdl:types>
<wsdl:message name="SptVSportverenigingDetailFactoryServiceException">
<wsdl:part name="fault" element="impl:fault"/>
</wsdl:message>
<wsdl:message name="slctVerDtlResponse">
<wsdl:part name="slctVerDtlReturn" element="impl:slctVerDtlReturn"/>
</wsdl:message>
<wsdl:message name="slctVerDtlRequest">
<wsdl:part name="Sportverenigingid" element="impl:Sportverenigingid"/>
</wsdl:message>
<wsdl:portType name="SptVSportverenigingDetailFactoryServiceInterface">
<wsdl:operation name="slctVerDtl">
<wsdl:input name="slctVerDtlRequest" message="impl:slctVerDtlRequest"/>
<wsdl:output name="slctVerDtlResponse" message="impl:slctVerDtlResponse"/>
<wsdl:fault name="SptVSportverenigingDetailFactoryServiceException" message="impl:SptVSportverenigingDetailFactoryServiceException"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="SPT_V_SPORTVERENIGING_DETAILSoapBinding" type="impl:SptVSportverenigingDetailFactoryServiceInterface">
<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="slctVerDtl">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="slctVerDtlRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="slctVerDtlResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="SptVSportverenigingDetailFactoryServiceException">
<wsdlsoap:fault name="SptVSportverenigingDetailFactoryServiceException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="SptVSportverenigingDetailFactoryServiceInterfaceService">
<wsdl:port name="SPT_V_SPORTVERENIGING_DETAIL" binding="impl:SPT_V_SPORTVERENIGING_DETAILSoapBinding">
<wsdlsoap:address location="http://195.86.21.39/KgbSptWS/services/SPT_V_SPORTVERENIGING_DETAIL"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
WS client code generated with the following WScompile options:
-d build -s src -f:wsi -f:documentliteral -import -keep conf\application-client\META-INF\wsdl\sportverenigingdetailconfig.xml -mapping conf\application-client\META-INF\wsdl\jaxrpc-mapping-sportverenigingdetail.xml
And last this is the JAXRPC mapping 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" version="1.1" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://www.ibm.com/webservices/xsd/j2ee_jaxrpc_mapping_1_1.xsd"> <package-mapping> <package-type>nl.denhaag.gbd.wsclient.sport.verenigingdetail.service</package-type> <namespaceURI>urn:ws.kgb.itude.com</namespaceURI> </package-mapping> <package-mapping> <package-type>nl.denhaag.gbd.wsclient.sport.verenigingdetail.service</package-type> <namespaceURI>urn:plsql.generated.ws.kgb.itude.com</namespaceURI> </package-mapping> <package-mapping> <package-type>nl.denhaag.gbd.wsclient.sport.verenigingdetail.service</package-type> <namespaceURI>urn:generated.ws.kgb.itude.com</namespaceURI> </package-mapping> <java-xml-type-mapping> <java-type>nl.denhaag.gbd.wsclient.sport.verenigingdetail.service.SptVSportverenigingDetailFactoryServiceException</java-type> <root-type-qname xmlns:typeNS="urn:generated.ws.kgb.itude.com">typeNS:SptVSportverenigingDetailFactoryServiceException</root-type-qname> <qname-scope>complexType</qname-scope> <variable-mapping> <java-variable-name>detailMessage</java-variable-name> <xml-element-name>detailMessage</xml-element-name> </variable-mapping> </java-xml-type-mapping> <java-xml-type-mapping> <java-type>nl.denhaag.gbd.wsclient.sport.verenigingdetail.service.ArrayOf_xsd_string</java-type> <root-type-qname xmlns:typeNS="urn:ws.kgb.itude.com">typeNS:ArrayOf_xsd_string</root-type-qname> <qname-scope>complexType</qname-scope> <variable-mapping> <java-variable-name>item</java-variable-name> <xml-element-name>item</xml-element-name> </variable-mapping> </java-xml-type-mapping> <java-xml-type-mapping> <java-type>nl.denhaag.gbd.wsclient.sport.verenigingdetail.service.WsSptVSportverenigingDetaiSlctVerDtlReturn</java-type> <root-type-qname xmlns:typeNS="urn:plsql.generated.ws.kgb.itude.com">typeNS:WsSptVSportverenigingDetaiSlctVerDtlReturn</root-type-qname> <qname-scope>complexType</qname-scope> <variable-mapping> <java-variable-name>masterResult</java-variable-name> <xml-element-name>masterResult</xml-element-name> </variable-mapping> <variable-mapping> <java-variable-name>detailResult</java-variable-name> <xml-element-name>detailResult</xml-element-name> </variable-mapping> </java-xml-type-mapping> <java-xml-type-mapping> <java-type>nl.denhaag.gbd.wsclient.sport.verenigingdetail.service.DhgThemaWsSptVSportverenigingDetaiTMasterRecordAttrs</java-type> <root-type-qname xmlns:typeNS="urn:plsql.generated.ws.kgb.itude.com">typeNS:DhgThemaWsSptVSportverenigingDetaiTMasterRecordAttrs</root-type-qname> <qname-scope>complexType</qname-scope> <variable-mapping> <java-variable-name>naam</java-variable-name> <xml-element-name>Naam</xml-element-name> </variable-mapping> <variable-mapping> <java-variable-name>straat</java-variable-name> <xml-element-name>Straat</xml-element-name> </variable-mapping> <variable-mapping> <java-variable-name>huisnummer</java-variable-name> <xml-element-name>Huisnummer</xml-element-name> </variable-mapping> <variable-mapping> <java-variable-name>huisletter</java-variable-name> <xml-element-name>Huisletter</xml-element-name> </variable-mapping> <variable-mapping> <java-variable-name>toevoeging</java-variable-name> <xml-element-name>Toevoeging</xml-element-name> </variable-mapping> <variable-mapping> <java-variable-name>postcode</java-variable-name> <xml-element-name>Postcode</xml-element-name> </variable-mapping> <variable-mapping> <java-variable-name>woonplaats</java-variable-name> <xml-element-name>Woonplaats</xml-element-name> </variable-mapping> <variable-mapping> <java-variable-name>contactpersoon</java-variable-name> <xml-element-name>Contactpersoon</xml-element-name> </variable-mapping> <variable-mapping> <java-variable-name>tel</java-variable-name> <xml-element-name>Tel</xml-element-name> </variable-mapping> <variable-mapping> <java-variable-name>email</java-variable-name> <xml-element-name>Email</xml-element-name> </variable-mapping> <variable-mapping> <java-variable-name>website</java-variable-name> <xml-element-name>Website</xml-element-name> </variable-mapping> </java-xml-type-mapping> <java-xml-type-mapping> <java-type>java.lang.String[]</java-type> <anonymous-type-qname>urn:ws.kgb.itude.com:ArrayOf_xsd_string>item[0,unbounded]</anonymous-type-qname> <qname-scope>complexType</qname-scope> </java-xml-type-mapping> <exception-mapping> <exception-type>nl.denhaag.gbd.wsclient.sport.verenigingdetail.service.SptVSportverenigingDetailFactoryServiceException</exception-type> <wsdl-message xmlns:exMsgNS="urn:ws.kgb.itude.com">exMsgNS:SptVSportverenigingDetailFactoryServiceException</wsdl-message> <constructor-parameter-order> <element-name>detailMessage</element-name> </constructor-parameter-order> </exception-mapping> <service-interface-mapping> <service-interface>nl.denhaag.gbd.wsclient.sport.verenigingdetail.service.SptVSportverenigingDetailFactoryServiceInterfaceService</service-interface> <wsdl-service-name xmlns:serviceNS="urn:ws.kgb.itude.com">serviceNS:SptVSportverenigingDetailFactoryServiceInterfaceService</wsdl-service-name> <port-mapping> <port-name>SPT_V_SPORTVERENIGING_DETAIL</port-name> <java-port-name>SPT_V_SPORTVERENIGING_DETAIL</java-port-name> </port-mapping> </service-interface-mapping> <service-endpoint-interface-mapping> <service-endpoint-interface>nl.denhaag.gbd.wsclient.sport.verenigingdetail.service.SptVSportverenigingDetailFactoryServiceInterface</service-endpoint-interface> <wsdl-port-type xmlns:portTypeNS="urn:ws.kgb.itude.com">portTypeNS:SptVSportverenigingDetailFactoryServiceInterface</wsdl-port-type> <wsdl-binding xmlns:bindingNS="urn:ws.kgb.itude.com">bindingNS:SPT_V_SPORTVERENIGING_DETAILSoapBinding</wsdl-binding> <service-endpoint-method-mapping> <java-method-name>slctVerDtl</java-method-name> <wsdl-operation>slctVerDtl</wsdl-operation> <method-param-parts-mapping> <param-position>0</param-position> <param-type>java.math.BigDecimal</param-type> <wsdl-message-mapping> <wsdl-message xmlns:wsdlMsgNS="urn:ws.kgb.itude.com">wsdlMsgNS:slctVerDtlRequest</wsdl-message> <wsdl-message-part-name>Sportverenigingid</wsdl-message-part-name> <parameter-mode>IN</parameter-mode> </wsdl-message-mapping> </method-param-parts-mapping> <wsdl-return-value-mapping> <method-return-value>nl.denhaag.gbd.wsclient.sport.verenigingdetail.service.WsSptVSportverenigingDetaiSlctVerDtlReturn</method-return-value> <wsdl-message xmlns:wsdlMsgNS="urn:ws.kgb.itude.com">wsdlMsgNS:slctVerDtlResponse</wsdl-message> <wsdl-message-part-name>slctVerDtlReturn</wsdl-message-part-name> </wsdl-return-value-mapping> </service-endpoint-method-mapping> </service-endpoint-interface-mapping> </java-wsdl-mapping>