[jboss-user] [JBossWS] - Problems with Web Services on JBoss 4.2.1

chui do-not-reply at jboss.com
Wed Jul 25 15:09:56 EDT 2007


Hi there!

I'm trying to run my application with JBoss AS 4.2.1, but I found some strange differences between 4.2.1 and 4.0.5 (which I was using before). It seems like JBoss 4.2.1 uses default values or default manners of naming everything!! Examples:

1-) With 4.0.5 I was using the namespace http://endpoints/jaws/ and everything was ok. But with 4.2.1, the operations' namespace comes from the package where the classes are. If I put my endpoint interfaces in a package "endpoints.jaws", I just can't call the service's methods because the operations' namespace becomes "http://jaws.endpoints". I avoided this error by changing my namespace to a simple "http://endpoints/" and putting the interfaces in the package "endpoints"... (But I'd like to know if it's possible to keep using http://endpoints/jaws, or JBoss 4.0.5 won't allow the deployment of these services anymore... =/)

2-) Well, when I changed the namespace, the webservices were available on JBossWS... and I got stuck. This is the error I receive:

2007-07-25 15:29:25,046 ERROR [org.jboss.ws.core.jaxws.SOAPFaultHelperJAXWS] SOAP request exception
  | org.jboss.ws.WSException: Cannot find child element: arg0
  | 	at org.jboss.ws.core.CommonSOAPBinding.getParameterFromMessage(CommonSOAPBinding.java:866)
  | 	at org.jboss.ws.core.CommonSOAPBinding.unbindRequestMessage(CommonSOAPBinding.java:325)
  | 	at org.jboss.ws.core.server.AbstractServiceEndpointInvoker.invoke(AbstractServiceEndpointInvoker.java:187)
  | 	at org.jboss.ws.core.server.ServiceEndpoint.processRequest(ServiceEndpoint.java:212)
  | 	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:157)
  | 	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)

As you can see, my WSDL file doesn't have this part name "arg0":

<?xml version="1.0" encoding="UTF-8"?>
  | <definitions name='Commands' targetNamespace='http://endpoints/' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://endpoints/' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
  |  <types/>
  |  <message name='Commands_execute'>
  |   <part name='String_1' type='xsd:string'/>
  |  </message>
  |  <message name='Commands_executeResponse'>
  |   <part name='result' type='xsd:string'/>
  |  </message>
  |  <portType name='Commands'>
  |   <operation name='execute' parameterOrder='String_1'>
  |    <input message='tns:Commands_execute'/>
  |    <output message='tns:Commands_executeResponse'/>
  |   </operation>
  |  </portType>
  |  <binding name='CommandsBinding' type='tns:Commands'>
  |   <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
  |   <operation name='execute'>
  |    <soap:operation soapAction=''/>
  |    <input>
  |     <soap:body namespace='http://endpoints/' use='literal'/>
  |    </input>
  |    <output>
  |     <soap:body namespace='http://endpoints/' use='literal'/>
  |    </output>
  |   </operation>
  |  </binding>
  |  <service name='Commands'>
  |   <port binding='tns:CommandsBinding' name='CommandsPort'>
  |    <soap:address location='REPLACE_WITH_ACTUAL_URL'/>
  |   </port>
  |  </service>
  | </definitions>

Even if I replace the String_1 occurences by arg0 I get the error above. I don't know what to do, could anyone help me please??? Why does JBoss use this values instead of the WSDL values?!

Thanks...
Chui

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4067567#4067567

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4067567



More information about the jboss-user mailing list