Not converting header element into function argument
----------------------------------------------------
Key: XFIRE-754
URL: http://jira.codehaus.org/browse/XFIRE-754
Project: XFire
Issue Type: Bug
Environment: XFire 1.2.2, Tomcat 5.5, XP Pro
Reporter: Matthew
Assigned To: Dan Diephouse
Priority: Critical
Attachments: TestService.wsdl
I created a service implementation class from the attached wsdl and used that
to build a web service:
<wsgen outputDirectory="${build.src}"
wsdl="../${admin.etc}/TestService.wsdl"
package="test.ws"
overwrite="true"/>
(On a side note, the wsdl attribute doesn't take into account the "basedir"
attribute)
I initialized the service in the servlet init method:
public class MyServlet extends XFireServlet {
public void init() throws ServletException
{
super.init();
ObjectServiceFactory factory = new
ObjectServiceFactory(xfire.getTransportManager());
URL url = null;
try {
url = new URL("file://\\WebService\\etc\\TestService.wsdl");
} catch (Exception e) {
e.printStackTrace();
}
QName qn = new QName("http://ws.test", "TestServiceService");
Properties props = new Properties();
props.put(ObjectServiceFactory.PORT_TYPE, new QName("http://ws.test",
"TestService"));
Service service = factory.create(TestService.class, qn, url, props);
service.setProperty(ObjectInvoker.SERVICE_IMPL_CLASS,
TestServiceServiceImpl.class);
getController().getServiceRegistry().register(service);
}
}
I then called the release method using the following soap message which is
valid according to the wsdl:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:tns3="http://xml.test.com/ws/session"
xmlns:tns1="http://TestService.ws.test.com">
<soap:Header>
<tns3:sessionID>0</tns3:sessionID>
</soap:Header>
<soap:Body>
<tns1:release>
</tns1:release>
</soap:Body>
</soap:Envelope>
I get the error below...
Looking at the fillInHolders method at the top of the stack trace below. It
appears that it is counting the operation's soap body and header elements and
then comparing that to just the the actual soap message's body only. There's
also a part in the list for releaseRequest when there is no such part. I would
think that it should be creating a holder for the header element sessionId
since it is in both the input and output of the operation but the generated
skeleton method has only an in parameter.
INFO: Fault occurred!
org.codehaus.xfire.fault.XFireFault: Not enough message parts were received for
the operation.
at
org.codehaus.xfire.service.binding.ServiceInvocationHandler.fillInHolders(ServiceInvocationHandler.java:226)
at
org.codehaus.xfire.service.binding.ServiceInvocationHandler.invoke(ServiceInvocationHandler.java:71)
at
org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at
org.codehaus.xfire.transport.DefaultEndpoint.onReceive(DefaultEndpoint.java:64)
at
org.codehaus.xfire.transport.AbstractChannel.receive(AbstractChannel.java:38)
at
org.codehaus.xfire.transport.http.XFireServletController.invoke(XFireServletController.java:301)
at
org.codehaus.xfire.transport.http.XFireServletController.doService(XFireServletController.java:130)
at
org.codehaus.xfire.transport.http.XFireServlet.doPost(XFireServlet.java:116)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe from this list please visit:
http://xircles.codehaus.org/manage_email