[JBossWS] - Unsupported content type: application/x-www-form-urlencoded
by florian79
I try to create a SOAP- connection between jboss-ws and an AJAX- Client (WebBrowser). The WebService is proper deployed.
If I start a AJAX-Request to the WebService's URL then I will get the following exception:
| 09:59:04,171 ERROR [SOAPFaultHelperJAXWS] SOAP request exception
| javax.xml.soap.SOAPException: Unsupported content type: application/x-www-form-urlencoded
| at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:240)
| at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:179)
| at org.jboss.ws.core.server.ServiceEndpoint.processRequest(ServiceEndpoint.java:197)
| at org.jboss.ws.core.server.ServiceEndpointManager.processRequest(ServiceEndpointManager.java:448)
| at org.jboss.ws.core.server.AbstractServiceEndpointServlet.doPost(AbstractServiceEndpointServlet.java:114)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
| at org.jboss.ws.core.server.AbstractServiceEndpointServlet.service(AbstractServiceEndpointServlet.java:75)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
| 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:230)
| at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
| at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
| at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
| at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
| at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
| at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
| at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
| at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
| at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
| at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580)
| at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
| at java.lang.Thread.run(Thread.java:595)
|
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4060734#4060734
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4060734
17 years, 5 months
[JBossWS] - JBoss 4.2.0 web service not exposing getters
by pixel
Hi,
I have what I hope is a fairly simple problem, and I suspect I am just missing something obvious. I have a web service with a method which returns a POJO containing Strings, longs and booleans. I can access the variables directly if I set @XmlAccessorType(XmlAccessType.FIELD), but I can't get the service to expose the getters. Is this possible, as I want some logic in the getters.
Web Service
| @Stateless
| @WebContext(contextRoot="/web-services", secureWSDLAccess=false)
| @WebService(name="MobileUpdate", serviceName = "MobileUpdate")
| @SOAPBinding(style = SOAPBinding.Style.RPC)
| public class MobileUpdateService {
| @WebMethod
| public MobileConfigResponse getConfig( String msisdn ) {
| return new MobileConfigAction().act( msisdn );
| }
| }
|
Returned POJOs
| @XmlAccessorType(XmlAccessType.FIELD)
| public class MobileConfigResponse {
|
| protected String[] errors;
| protected String config;
| protected long id;
|
| MobileConfigResponse() {}
|
| public MobileConfigResponse( String[] _errors, String _config, long _id ) {
| errors = _errors;
| config = _config;
| id = _id;
| }
|
| public String[] getErrors){
| return errors;
| }
|
| public boolean isError() {
| return errors != null && errors.length > 0
| }
|
| public String getConfig() {
| return config;
| }
|
| public long getId() {
| return id;
| }
|
| }
|
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4060696#4060696
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4060696
17 years, 5 months
[JBossWS] - Re: HalloWorld Problem
by florian79
I do not know if I understood your question, but I think I start from WSDL:
| public class TheServiceImplTest
| {
| TheService mySessionBean;
| @Before
| public void setUp() throws Exception
| {
| String strURL = "http://localhost:8080/TheServiceImplService/TheServiceImpl";
| String strNameSpace = "http://www.tai.it/TheService";
| String strQName = "HalloWorldWS";
| URL url = new URL(strURL + "?wsdl");
| QName qname = new QName(strNameSpace,strQName);
| Service service = Service.create(url, qname );
| TheService mySessionBean = service.getPort(TheService.class);
| }
| @Test
| public final void testGetHalloWorld()
| {
| String strTemp = mySessionBean.getHalloWorld();
| System.out.println(strTemp);
| }
| }
|
I implemented the service exactly as you described:
The Interface:
| import javax.ejb.Local;
| import javax.jws.WebService;
| import javax.jws.soap.SOAPBinding;
| @WebService(name="TheServicePortType",targetNamespace="http://www.tai.it/TheService")
| SOAPBinding.Use.LITERAL)
| @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
| @Local
| public interface TheService
| {
| public String getHalloWorld();
| }
|
The Implementation:
| import javax.ejb.Stateless;
| import javax.jws.WebService;
|
| @WebService(
| endpointInterface="com.dooris.ws.TheService",
| targetNamespace="http://www.tai.it/TheService",
| serviceName="TheService",
| portName="TheServiceSOAP"
| )
| @Stateless
| public class TheServiceImpl implements TheService
| {
| public final String getHalloWorld()
| {
| return "Hallo Welt";
| }
| }
|
The Exception:
| javax.xml.ws.WebServiceException: org.jboss.ws.metadata.wsdl.WSDLException: javax.wsdl.WSDLException: WSDLException (at /definitions/message[1]/part): faultCode=UNBOUND_PREFIX: Unable to determine namespace of 'tns:getHalloWorldResponse'.
| at javax.xml.ws.Service.create(Service.java:731)
| at com.dooris.ws.TheServiceImplTest.initByService(TheServiceImplTest.java:30)
| at com.dooris.ws.TheServiceImplTest.setUp(TheServiceImplTest.java:18)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.junit.internal.runners.BeforeAndAfterRunner.invokeMethod(BeforeAndAfterRunner.java:74)
| at org.junit.internal.runners.BeforeAndAfterRunner.runBefores(BeforeAndAfterRunner.java:50)
| at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:33)
| at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
| at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
| at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:71)
| at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
| at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
| at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
| at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
| at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
| at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
| at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
| at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
| at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
| at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
| Caused by: org.jboss.ws.metadata.wsdl.WSDLException: javax.wsdl.WSDLException: WSDLException (at /definitions/message[1]/part): faultCode=UNBOUND_PREFIX: Unable to determine namespace of 'tns:getHalloWorldResponse'.
| at org.jboss.ws.tools.wsdl.WSDLDefinitionsFactory.parse(WSDLDefinitionsFactory.java:155)
| at org.jboss.ws.metadata.umdm.ServiceMetaData.getWsdlDefinitions(ServiceMetaData.java:321)
| at org.jboss.ws.metadata.builder.jaxws.JAXWSClientMetaDataBuilder.buildMetaData(JAXWSClientMetaDataBuilder.java:83)
| at org.jboss.ws.core.jaxws.spi.ServiceDelegateImpl.<init>(ServiceDelegateImpl.java:140)
| at org.jboss.ws.core.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:61)
| at javax.xml.ws.Service.<init>(Service.java:83)
| at org.jboss.ws.core.jaxws.client.ServiceExt.<init>(ServiceExt.java:60)
| at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
| at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
| at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
| at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
| at javax.xml.ws.Service.create(Service.java:726)
| ... 22 more
| Caused by: javax.wsdl.WSDLException: WSDLException (at /definitions/message[1]/part): faultCode=UNBOUND_PREFIX: Unable to determine namespace of 'tns:getHalloWorldResponse'.
| at com.ibm.wsdl.util.xml.DOMUtils.getQName(DOMUtils.java:309)
| at com.ibm.wsdl.util.xml.DOMUtils.getQualifiedAttributeValue(DOMUtils.java:367)
| at com.ibm.wsdl.xml.WSDLReaderImpl.getQualifiedAttributeValue(WSDLReaderImpl.java:2019)
| at com.ibm.wsdl.xml.WSDLReaderImpl.parsePart(WSDLReaderImpl.java:1278)
| at com.ibm.wsdl.xml.WSDLReaderImpl.parseMessage(WSDLReaderImpl.java:1257)
| at com.ibm.wsdl.xml.WSDLReaderImpl.parseDefinitions(WSDLReaderImpl.java:309)
| at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:2265)
| at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:2229)
| at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:2282)
| at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:2303)
| at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:2335)
| at org.jboss.ws.tools.wsdl.WSDLDefinitionsFactory.parse(WSDLDefinitionsFactory.java:130)
| ... 33 more
|
The WSDL:
| <definitions name='TheService' targetNamespace='http://www.tai.it/TheService' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://www.tai.it/TheService' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
| <types>
| <xs:schema targetNamespace='http://www.tai.it/TheService' version='1.0' xmlns:tns='http://www.tai.it/TheService' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
| <xs:element name='getHalloWorld' type='tns:getHalloWorld'/>
| <xs:element name='getHalloWorldResponse' type='tns:getHalloWorldResponse'/>
| <xs:complexType name='getHalloWorld'/>
| <xs:complexType name='getHalloWorldResponse'>
| <xs:sequence>
| <xs:element minOccurs='0' name='return' type='xs:string'/>
|
| </xs:sequence>
| </xs:complexType>
| </xs:schema>
| </types>
| <message name='TheServicePortType_getHalloWorldResponse'>
| <part element='tns:getHalloWorldResponse' name='getHalloWorldResponse'></part>
| </message>
| <message name='TheServicePortType_getHalloWorld'>
| <part element='tns:getHalloWorld' name='getHalloWorld'></part>
|
| </message>
| <portType name='TheServicePortType'>
| <operation name='getHalloWorld' parameterOrder='getHalloWorld'>
| <input message='tns:TheServicePortType_getHalloWorld'></input>
| <output message='tns:TheServicePortType_getHalloWorldResponse'></output>
| </operation>
| </portType>
| <binding name='TheServicePortTypeBinding' type='tns:TheServicePortType'>
| <soap:binding style='document' transport='http://schemas.xmlsoap.org/soap/http'/>
|
| <operation name='getHalloWorld'>
| <soap:operation soapAction=''/>
| <input>
| <soap:body use='literal'/>
| </input>
| <output>
| <soap:body use='literal'/>
| </output>
| </operation>
|
| </binding>
| <service name='TheService'>
| <port binding='tns:TheServicePortTypeBinding' name='TheServiceSOAP'>
| <soap:address location='http://localhost:8080/TheServiceImplService/TheServiceImpl'/>
| </port>
| </service>
| </definitions>
|
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4060695#4060695
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4060695
17 years, 5 months