[jboss-user] [JBossWS] - NoSuchMethodError on TypeBinding.setBeforeMarshallingCallbac
joshlam
do-not-reply at jboss.com
Thu Feb 22 00:47:22 EST 2007
Hi,
I have created a web service using jbossws and hosted on jboss-4.0.5.GA on WinXP and with the wstool generated the client artifacts. No problem invoking the web service using SOAPUI tool. But when I tried to execute the client code, upon call
Service service = serviceFactory.createService(wsdlURL, SERVICE_NAME, jaxrpcURL); (pls see the client code below)
The following exception was thrown:
| java.lang.NoSuchMethodError: org.jboss.xb.binding.sunday.unmarshalling.TypeBinding.setBeforeMarshallingCallback(Lorg/jboss/xb/binding/sunday/marshalling/TermBeforeMarshallingCallback;)V
| at org.jboss.ws.xop.JBossXBContentAdapter.register(JBossXBContentAdapter.java:210)
| at org.jboss.ws.jbossxb.SchemaBindingBuilder.buildSchemaBinding(SchemaBindingBuilder.java:85)
| at org.jboss.ws.metadata.ServiceMetaData.getSchemaBinding(ServiceMetaData.java:343)
| at org.jboss.ws.metadata.ServiceMetaData.eagerInitialize(ServiceMetaData.java:442)
| at org.jboss.ws.metadata.UnifiedMetaData.eagerInitialize(UnifiedMetaData.java:183)
| at org.jboss.ws.deployment.JSR109ClientMetaDataBuilder.buildMetaData(JSR109ClientMetaDataBuilder.java:132)
| at org.jboss.ws.deployment.JSR109ClientMetaDataBuilder.buildMetaData(JSR109ClientMetaDataBuilder.java:85)
| at org.jboss.ws.jaxrpc.ServiceImpl.<init>(ServiceImpl.java:96)
| at org.jboss.ws.jaxrpc.ServiceFactoryImpl.createService(ServiceFactoryImpl.java:158)
| at org.jboss.ws.jaxrpc.ServiceFactoryImpl.createService(ServiceFactoryImpl.java:143)
| at com.intuit.sds.prs.webservices.std.client.StdClientTest.testWebservice(StdClientTest.java:40)
| 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 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 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
| at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
| at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
|
Here is my client code (in the form of a junit test)
| package com.intuit.sds.prs.webservices.std.client;
|
| import java.io.File;
| import java.net.MalformedURLException;
| import java.net.URL;
| import java.rmi.RemoteException;
|
| import javax.xml.namespace.QName;
| import javax.xml.rpc.Call;
| import javax.xml.rpc.Service;
| import javax.xml.rpc.ServiceException;
|
| import org.apache.log4j.xml.DOMConfigurator;
| import org.jboss.ws.jaxrpc.ServiceFactoryImpl;
|
| import com.intuit.sds.prs.webservices.AddressContactMethod;
| import com.intuit.sds.prs.webservices.StandardizeAddressResponse;
|
| import junit.framework.TestCase;
|
| public class StdClientTest extends TestCase
| {
| private static final String WSDL_LOCATION = "http://localhost:8080/StdWebserviceImpl-2/StandardizeAddressSLSBEndPoint?wsdl";
| private static String NAMESPACE = "http://com.intuit.sds.prs/webservices";
| private static final QName SERVICE_NAME = new QName(NAMESPACE, "StandardizeAddressWebService");
|
| public void testWebservice()
| {
| System.setProperty("javax.xml.rpc.ServiceFactory", "org.jboss.webservice.client.ServiceFactoryImpl");
| DOMConfigurator.configure("./src/log4j.xml");
|
| AddressContactMethod addr = new AddressContactMethod();
| try
| {
| URL wsdlURL = new URL(WSDL_LOCATION);
| URL jaxrpcURL = null;
| jaxrpcURL = new File("src/jaxrpc-mapping.xml").toURL();
|
| ServiceFactoryImpl serviceFactory = new ServiceFactoryImpl();
| Service service = serviceFactory.createService(wsdlURL, SERVICE_NAME, jaxrpcURL);
| Call call = service.createCall();
|
| QName operationName = new QName(NAMESPACE, "standardizeAddress");
| call.setOperationName(operationName);
|
| //Test the call
| StandardizeAddressResponse ctr = (StandardizeAddressResponse) call.invoke(new Object[]{addr});
| AddressContactMethod rAddr = ctr.getResult();
| System.out.println("Addr1: " + rAddr.getAddr1());
| }
| catch (Exception e)
| {
| // TODO Auto-generated catch block
| e.printStackTrace();
| }
| }
| }
|
Here the following is the wsdl and the jaxrpc-mapping.xml respectively
| <definitions name="StandardizeAddressWebService" targetNamespace="http://com.intuit.sds.prs/webservices" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:ns1="http://objects.interfaces.ws.standardization.prs.sds.intuit.com/jaws" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://com.intuit.sds.prs/webservices" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
| <types>
| <schema elementFormDefault="qualified" targetNamespace="http://objects.interfaces.ws.standardization.prs.sds.intuit.com/jaws" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://com.intuit.sds.prs/webservices" xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://objects.interfaces.ws.standardization.prs.sds.intuit.com/jaws" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
| <import namespace="http://com.intuit.sds.prs/webservices" />
| <complexType name="AddressContactMethod">
| <sequence>
| <element name="addr1" nillable="true" type="string" />
| <element name="addr2" nillable="true" type="string" />
| <element name="city" nillable="true" type="string" />
| <element name="countryCode" nillable="true" type="string" />
| <element name="postalCode" nillable="true" type="string" />
| <element name="postalCodeExt" nillable="true" type="string" />
| <element name="stateProvince" nillable="true" type="string" />
| </sequence>
| </complexType>
| <complexType name="IndividualName">
| <sequence>
| <element name="firstName" nillable="true" type="string" />
| <element name="lastName" nillable="true" type="string" />
| </sequence>
| </complexType>
| </schema>
| <schema elementFormDefault="qualified" targetNamespace="http://com.intuit.sds.prs/webservices" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://objects.interfaces.ws.standardization.prs.sds.intuit.com/jaws" xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://com.intuit.sds.prs/webservices" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
| <import namespace="http://objects.interfaces.ws.standardization.prs.sds.intuit.com/jaws" />
| <complexType name="standardizeAddress">
| <sequence>
| <element name="AddressContactMethod_1" nillable="true" type="ns2:AddressContactMethod" />
| </sequence>
| </complexType>
| <complexType name="standardizeAddressResponse">
| <sequence>
| <element name="result" nillable="true" type="ns2:AddressContactMethod" />
| </sequence>
| </complexType>
| <complexType name="standardizeName">
| <sequence>
| <element name="IndividualName_1" nillable="true" type="ns2:IndividualName" />
| </sequence>
| </complexType>
| <complexType name="standardizeNameResponse">
| <sequence>
| <element name="result" nillable="true" type="ns2:IndividualName" />
| </sequence>
| </complexType>
| <element name="standardizeAddress" type="tns:standardizeAddress" />
| <element name="standardizeAddressResponse" type="tns:standardizeAddressResponse" />
| <element name="standardizeName" type="tns:standardizeName" />
| <element name="standardizeNameResponse" type="tns:standardizeNameResponse" />
| </schema>
| </types>
| <message name="EndpointInterface_standardizeName">
| <part element="tns:standardizeName" name="parameters" />
| </message>
| <message name="EndpointInterface_standardizeNameResponse">
| <part element="tns:standardizeNameResponse" name="result" />
| </message>
| <message name="EndpointInterface_standardizeAddressResponse">
| <part element="tns:standardizeAddressResponse" name="result" />
| </message>
| <message name="EndpointInterface_standardizeAddress">
| <part element="tns:standardizeAddress" name="parameters" />
| </message>
| <portType name="EndpointInterface">
| <operation name="standardizeAddress">
| <input message="tns:EndpointInterface_standardizeAddress" />
| <output message="tns:EndpointInterface_standardizeAddressResponse" />
| </operation>
| <operation name="standardizeName">
| <input message="tns:EndpointInterface_standardizeName" />
| <output message="tns:EndpointInterface_standardizeNameResponse" />
| </operation>
| </portType>
| <binding name="EndpointInterfaceBinding" type="tns:EndpointInterface">
| <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
| <operation name="standardizeAddress">
| <soap:operation soapAction="" />
| <input>
| <soap:body use="literal" />
| </input>
| <output>
| <soap:body use="literal" />
| </output>
| </operation>
| <operation name="standardizeName">
| <soap:operation soapAction="" />
| <input>
| <soap:body use="literal" />
| </input>
| <output>
| <soap:body use="literal" />
| </output>
| </operation>
| </binding>
| <service name="StandardizeAddressWebService">
| <port binding="tns:EndpointInterfaceBinding" name="EndpointInterfacePort">
| <soap:address location="http://SDGL04301034:8080/StdWebserviceImpl-2/StandardizeAddressSLSBEndPoint" />
| </port>
| </service>
| </definitions>
|
| <?xml version='1.0' encoding='UTF-8'?><java-wsdl-mapping version='1.1' 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'>
| <package-mapping>
| <package-type>com.intuit.sds.prs.webservices</package-type>
| <namespaceURI>http://com.intuit.sds.prs/webservices</namespaceURI>
| </package-mapping>
| <java-xml-type-mapping>
| <java-type>com.intuit.sds.prs.webservices.StandardizeAddress</java-type>
| <root-type-qname xmlns:typeNS='http://com.intuit.sds.prs/webservices'>typeNS:standardizeAddress</root-type-qname>
| <qname-scope>complexType</qname-scope>
| <variable-mapping>
| <java-variable-name>addressContactMethod_1</java-variable-name>
| <xml-element-name>AddressContactMethod_1</xml-element-name>
| </variable-mapping>
| </java-xml-type-mapping>
| <java-xml-type-mapping>
| <java-type>com.intuit.sds.prs.webservices.AddressContactMethod</java-type>
| <root-type-qname xmlns:typeNS='http://objects.interfaces.ws.standardization.prs.sds.intuit.com/jaws'>typeNS:AddressContactMethod</root-type-qname>
| <qname-scope>complexType</qname-scope>
| <variable-mapping>
| <java-variable-name>addr1</java-variable-name>
| <xml-element-name>addr1</xml-element-name>
| </variable-mapping>
| <variable-mapping>
| <java-variable-name>addr2</java-variable-name>
| <xml-element-name>addr2</xml-element-name>
| </variable-mapping>
| <variable-mapping>
| <java-variable-name>city</java-variable-name>
| <xml-element-name>city</xml-element-name>
| </variable-mapping>
| <variable-mapping>
| <java-variable-name>countryCode</java-variable-name>
| <xml-element-name>countryCode</xml-element-name>
| </variable-mapping>
| <variable-mapping>
| <java-variable-name>postalCode</java-variable-name>
| <xml-element-name>postalCode</xml-element-name>
| </variable-mapping>
| <variable-mapping>
| <java-variable-name>postalCodeExt</java-variable-name>
| <xml-element-name>postalCodeExt</xml-element-name>
| </variable-mapping>
| <variable-mapping>
| <java-variable-name>stateProvince</java-variable-name>
| <xml-element-name>stateProvince</xml-element-name>
| </variable-mapping>
| </java-xml-type-mapping>
| <java-xml-type-mapping>
| <java-type>com.intuit.sds.prs.webservices.StandardizeAddressResponse</java-type>
| <root-type-qname xmlns:typeNS='http://com.intuit.sds.prs/webservices'>typeNS:standardizeAddressResponse</root-type-qname>
| <qname-scope>complexType</qname-scope>
| <variable-mapping>
| <java-variable-name>result</java-variable-name>
| <xml-element-name>result</xml-element-name>
| </variable-mapping>
| </java-xml-type-mapping>
| <java-xml-type-mapping>
| <java-type>com.intuit.sds.prs.webservices.StandardizeName</java-type>
| <root-type-qname xmlns:typeNS='http://com.intuit.sds.prs/webservices'>typeNS:standardizeName</root-type-qname>
| <qname-scope>complexType</qname-scope>
| <variable-mapping>
| <java-variable-name>individualName_1</java-variable-name>
| <xml-element-name>IndividualName_1</xml-element-name>
| </variable-mapping>
| </java-xml-type-mapping>
| <java-xml-type-mapping>
| <java-type>com.intuit.sds.prs.webservices.IndividualName</java-type>
| <root-type-qname xmlns:typeNS='http://objects.interfaces.ws.standardization.prs.sds.intuit.com/jaws'>typeNS:IndividualName</root-type-qname>
| <qname-scope>complexType</qname-scope>
| <variable-mapping>
| <java-variable-name>firstName</java-variable-name>
| <xml-element-name>firstName</xml-element-name>
| </variable-mapping>
| <variable-mapping>
| <java-variable-name>lastName</java-variable-name>
| <xml-element-name>lastName</xml-element-name>
| </variable-mapping>
| </java-xml-type-mapping>
| <java-xml-type-mapping>
| <java-type>com.intuit.sds.prs.webservices.StandardizeNameResponse</java-type>
| <root-type-qname xmlns:typeNS='http://com.intuit.sds.prs/webservices'>typeNS:standardizeNameResponse</root-type-qname>
| <qname-scope>complexType</qname-scope>
| <variable-mapping>
| <java-variable-name>result</java-variable-name>
| <xml-element-name>result</xml-element-name>
| </variable-mapping>
| </java-xml-type-mapping>
| <service-interface-mapping>
| <service-interface>com.intuit.sds.prs.webservices.StandardizeAddressWebService</service-interface>
| <wsdl-service-name xmlns:serviceNS='http://com.intuit.sds.prs/webservices'>serviceNS:StandardizeAddressWebService</wsdl-service-name>
| <port-mapping>
| <port-name>EndpointInterfacePort</port-name>
| <java-port-name>EndpointInterfacePort</java-port-name>
| </port-mapping>
| </service-interface-mapping>
| <service-endpoint-interface-mapping>
| <service-endpoint-interface>com.intuit.sds.prs.webservices.EndpointInterface</service-endpoint-interface>
| <wsdl-port-type xmlns:portTypeNS='http://com.intuit.sds.prs/webservices'>portTypeNS:EndpointInterface</wsdl-port-type>
| <wsdl-binding xmlns:bindingNS='http://com.intuit.sds.prs/webservices'>bindingNS:EndpointInterfaceBinding</wsdl-binding>
| <service-endpoint-method-mapping>
| <java-method-name>standardizeAddress</java-method-name>
| <wsdl-operation>standardizeAddress</wsdl-operation>
| <wrapped-element/>
| <method-param-parts-mapping>
| <param-position>0</param-position>
| <param-type>com.intuit.sds.prs.webservices.AddressContactMethod</param-type>
| <wsdl-message-mapping>
| <wsdl-message xmlns:wsdlMsgNS='http://com.intuit.sds.prs/webservices'>wsdlMsgNS:EndpointInterface_standardizeAddress</wsdl-message>
| <wsdl-message-part-name>AddressContactMethod_1</wsdl-message-part-name>
| <parameter-mode>IN</parameter-mode>
| </wsdl-message-mapping>
| </method-param-parts-mapping>
| <wsdl-return-value-mapping>
| <method-return-value>com.intuit.sds.prs.webservices.AddressContactMethod</method-return-value>
| <wsdl-message xmlns:wsdlMsgNS='http://com.intuit.sds.prs/webservices'>wsdlMsgNS:EndpointInterface_standardizeAddressResponse</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>standardizeName</java-method-name>
| <wsdl-operation>standardizeName</wsdl-operation>
| <wrapped-element/>
| <method-param-parts-mapping>
| <param-position>0</param-position>
| <param-type>com.intuit.sds.prs.webservices.IndividualName</param-type>
| <wsdl-message-mapping>
| <wsdl-message xmlns:wsdlMsgNS='http://com.intuit.sds.prs/webservices'>wsdlMsgNS:EndpointInterface_standardizeName</wsdl-message>
| <wsdl-message-part-name>IndividualName_1</wsdl-message-part-name>
| <parameter-mode>IN</parameter-mode>
| </wsdl-message-mapping>
| </method-param-parts-mapping>
| <wsdl-return-value-mapping>
| <method-return-value>com.intuit.sds.prs.webservices.IndividualName</method-return-value>
| <wsdl-message xmlns:wsdlMsgNS='http://com.intuit.sds.prs/webservices'>wsdlMsgNS:EndpointInterface_standardizeNameResponse</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>
The why I got this is to use wstool in an ant script:
| <wstool config="./config.xml" dest="${gensrc.dir}">
| <classpath>
| <path refid="compile.classpath" />
| </classpath>
| </wstool>
The config.xml used is:
| <?xml version="1.0" encoding="UTF-8"?>
|
| <!--
| wstools -config wstools-config.xml
| -->
|
| <configuration xmlns="http://www.jboss.org/jbossws-tools"
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
| xsi:schemaLocation="http://www.jboss.org/jbossws-tools http://www.jboss.org/jbossws-tools/schema/jbossws-tool_1_0.xsd">
|
|
| <wsdl-java location="src/main/resources/TestService.wsdl">
| <mapping file="../resources/META-INF/jaxrpc-mapping.xml" />
| </wsdl-java>
|
| </configuration>
Would greatly appreciate any help on this.
Thanks.
--
Josh
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4020415#4020415
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4020415
More information about the jboss-user
mailing list