3 Replies Latest reply on Apr 9, 2008 12:24 AM by thomas.diesler

    org.jboss.ws.WSException: arg0 is not a valid property on cl

    maffeis

      I'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.