JBoss 5.0.1.GA, JBossWS 3.0.5, JDK 1.6 - java.lang.Unsupport
afluegge Jul 10, 2009 6:00 AMHello!
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>