org.jboss.ws.WSException: arg0 is not a valid property on cl
maffeis Apr 8, 2008 3:38 AMI'm getting the following error in deploying a simple document/literal
web service with jbossws-3.0.1-native-2.0.4.GA on jboss 4.2.2.GA.
org.jboss.ws.WSException: arg0 is not a valid property on class ...
Full stack trace:
09:22:41,781 ERROR [MainDeployer] Could not start deployment: file:/C:/dev/tools/j2ee/jboss-4.2.2.GA/server/viperats/deploy/mobank-server-core.war org.jboss.ws.WSException: arg0 is not a valid property on class com.vipera.ts.server.ws.jaxws.NewOperation at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getElementPropertyAccessor(JAXBContextImpl.java:926) at org.jboss.ws.metadata.accessor.JAXBAccessorFactory.create(JAXBAccessorFactory.java:51) at org.jboss.ws.metadata.umdm.EndpointMetaData.createAccessor(EndpointMetaData.java:713) at org.jboss.ws.metadata.umdm.EndpointMetaData.eagerInitializeAccessors(EndpointMetaData.java:694) at org.jboss.ws.metadata.umdm.EndpointMetaData.initializeInternal(EndpointMetaData.java:567) at org.jboss.ws.metadata.umdm.EndpointMetaData.eagerInitialize(EndpointMetaData.java:553) at org.jboss.ws.metadata.umdm.ServiceMetaData.eagerInitialize(ServiceMetaData.java:435) at org.jboss.ws.metadata.umdm.UnifiedMetaData.eagerInitialize(UnifiedMetaData.java:196) at org.jboss.wsf.stack.jbws.EagerInitializeDeploymentAspect.create(EagerInitializeDeploymentAspect.java:50)
This happens when the WAR holding the web service is deployed.
The WSDL (that's what you get when you create a document/literal WSDL using the Eclipse wizard):
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.example.org/MyTest/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="MyTest" targetNamespace="http://www.example.org/MyTest/"> <wsdl:types> <xsd:schema targetNamespace="http://www.example.org/MyTest/"> <xsd:element name="NewOperation"> <xsd:complexType> <xsd:sequence> <xsd:element name="in" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="NewOperationResponse"> <xsd:complexType> <xsd:sequence> <xsd:element name="out" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="NewOperationRequest"> <wsdl:part element="tns:NewOperation" name="parameters"/> </wsdl:message> <wsdl:message name="NewOperationResponse"> <wsdl:part element="tns:NewOperationResponse" name="parameters"/> </wsdl:message> <wsdl:portType name="MyTest"> <wsdl:operation name="NewOperation"> <wsdl:input message="tns:NewOperationRequest"/> <wsdl:output message="tns:NewOperationResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="MyTestSOAP" type="tns:MyTest"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="NewOperation"> <soap:operation soapAction="http://www.example.org/MyTest/NewOperation"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="MyTest"> <wsdl:port binding="tns:MyTestSOAP" name="MyTestSOAP"> <soap:address location="http://www.example.org/"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
The WebService implementation:
@WebService(name = "MyTest", targetNamespace = "http://www.example.org/MyTest/") public class MyTestWebService implements MyTest { public String newOperation(String in) { return null; } }
web.xml configuration:
<servlet> <servlet-name>MyTest</servlet-name> <servlet-class>com.vipera.ts.server.ws.MyTestWebService</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyTest</servlet-name> <url-pattern>/mt</url-pattern> </servlet-mapping>
Workaround: In the WSDL, rename "in" to "arg0" and "out" to "return", but I'd rather like to avoid that.