9 Replies Latest reply on Oct 29, 2013 2:22 PM by bourasom

    JBoss 5.0.1.GA, JBossWS 3.0.5, JDK 1.6 - java.lang.Unsupport

    afluegge

      Hello!

      I'm trying to call a simple web service with following configuration: 5.0.1.GA, JBossWS 3.0.5, JDK 1.6.0_14. Details below.

      Callin the service gets the following exception:

      11:33:16,163 ERROR [SOAPFaultHelperJAXWS] SOAP request exception
      java.lang.UnsupportedOperationException: setProperty must be overridden by all subclasses of SOAPMessage
       at javax.xml.soap.SOAPMessage.setProperty(SOAPMessage.java:445)
       at org.jboss.ws.core.soap.SOAPMessageImpl.<init>(SOAPMessageImpl.java:82)
       at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:215)
       at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:193)
       at org.jboss.wsf.stack.jbws.RequestHandlerImpl.processRequest(RequestHandlerImpl.java:455)
       at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleRequest(RequestHandlerImpl.java:295)
       at org.jboss.wsf.stack.jbws.RequestHandlerImpl.doPost(RequestHandlerImpl.java:205)
       at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:131)
       at org.jboss.wsf.common.servlet.AbstractEndpointServlet.service(AbstractEndpointServlet.java:85)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
       at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
       at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
       at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
       at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
       at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
       at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
       at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
       at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
       at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
       at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
       at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
       at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
       at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
       at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601)
       at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
       at java.lang.Thread.run(Thread.java:619)
      


      I suppose that the SOAPMessage class comes from the JDK 1.6 which is incompatible with the one from JBossWS (in jbossws-native-saaj.jar). The jar file is located in the <JBOSS_HOME>/lib/endorsed dir. All suggestions to solve this problem are to copy the jar files to the endorsed dir, but they are already there!

      Can anybody help me?

      Thanks,
      Andreas


      This is the source:

      package test;
      
      import javax.ejb.Stateless;
      import javax.jws.WebMethod;
      import javax.jws.WebService;
      
      import org.apache.commons.logging.Log;
      import org.jboss.seam.annotations.Logger;
      
      @Stateless
      @WebService(name = "testService", serviceName = "testService")
      public class TestService implements TestServiceRemote {
      
       @Logger
       private Log log;
      
       @WebMethod
       public String testService(String name) {
       String txt = "testService:" + name;
      
       log.info("testService:" + name);
      
       return txt;
       }
      }
      
      package test;
      
      import javax.ejb.Remote;
      import javax.jws.WebMethod;
      
      @Remote
      public interface TestServiceRemote {
       @WebMethod
       public String testService(String name);
      }
      


      Deployment is no problem, calling the http:.../TestService?wsdl URL gets the following:

      <definitions name='testService' targetNamespace='http://test/' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://test/' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
       <types>
       <xs:schema targetNamespace='http://test/' version='1.0' xmlns:tns='http://test/' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
       <xs:element name='testService' type='tns:testService'/>
       <xs:element name='testServiceResponse' type='tns:testServiceResponse'/>
       <xs:complexType name='testService'>
       <xs:sequence>
       <xs:element minOccurs='0' name='arg0' type='xs:string'/>
       </xs:sequence>
      
       </xs:complexType>
       <xs:complexType name='testServiceResponse'>
       <xs:sequence>
       <xs:element minOccurs='0' name='return' type='xs:string'/>
       </xs:sequence>
       </xs:complexType>
       </xs:schema>
       </types>
       <message name='testService_testServiceResponse'>
      
       <part element='tns:testServiceResponse' name='testServiceResponse'></part>
       </message>
       <message name='testService_testService'>
       <part element='tns:testService' name='testService'></part>
       </message>
       <portType name='testService'>
       <operation name='testService' parameterOrder='testService'>
       <input message='tns:testService_testService'></input>
       <output message='tns:testService_testServiceResponse'></output>
      
       </operation>
       </portType>
       <binding name='testServiceBinding' type='tns:testService'>
       <soap:binding style='document' transport='http://schemas.xmlsoap.org/soap/http'/>
       <operation name='testService'>
       <soap:operation soapAction=''/>
       <input>
       <soap:body use='literal'/>
       </input>
      
       <output>
       <soap:body use='literal'/>
       </output>
       </operation>
       </binding>
       <service name='testService'>
       <port binding='tns:testServiceBinding' name='testServicePort'>
       <soap:address location='http://127.0.0.1:8080/spaceserver-spaceserver/TestService'/>
       </port>
      
       </service>
      </definitions>