Hi, i am using the XFireServlet because i need to pass parameters to
my Implementation class of the WebService:
public void init() throws ServletException
{
super.init();
try
{
ObjectServiceFactory factory = new
ObjectServiceFactory(getXFire().getTransportManager(), null);
//we don't want to expose compareTo
factory.addIgnoredMethods("java.lang.Comparable");
String wsdlLocation = "file:///D:my.wsdl";
URL wsdlURL = new URL(wsdlLocation);
HashMap props = new HashMap();
props.put(ObjectServiceFactory.PORT_TYPE, new
QName("http://www.securit.be/webservice", "WebServiceSEI"));
//create all the elements neccesary to create the
service:
Class clazz = WebServiceSEI.class;
QName serviceName = new
QName("http://www.securit.be/webservice",
"WebService");
Service service = factory.create(clazz, serviceName,
wsdlURL,props);
service.setInvoker(new BeanInvoker(new
WebServiceImpl(params)));
// Tell XFire to cache a DOM document for the various
in/out/fault flows
service.addInHandler(new
org.codehaus.xfire.util.dom.DOMInHandler());
service.addOutHandler(new
org.codehaus.xfire.util.dom.DOMOutHandler());
service.addFaultHandler(new
org.codehaus.xfire.util.dom.DOMOutHandler());
// Add a logging handler to each flow
service.addInHandler(new
org.codehaus.xfire.util.LoggingHandler());
service.addOutHandler(new
org.codehaus.xfire.util.LoggingHandler());
service.addFaultHandler(new
org.codehaus.xfire.util.LoggingHandler());
// we register the service with the controller that
handles soap requests
getController().getServiceRegistry().register(service);
}
catch (Exception e)
{
e.printStackTrace();
}
}
When i use this servlet and call the web service, i get the following
exception (if logging is turned on of course) on the server:
Received message to /dman/ws/DManWebService
adding handler [EMAIL PROTECTED]
to phase dispatch
adding handler [EMAIL PROTECTED]
to phase parse
adding handler [EMAIL PROTECTED]
to phase pre-invoke
adding handler [EMAIL PROTECTED]
to phase dispatch
adding handler [EMAIL PROTECTED]
to phase dispatch
adding handler [EMAIL PROTECTED]
to phase dispatch
adding handler [EMAIL PROTECTED]
to phase service
adding handler [EMAIL PROTECTED]
to phase service
adding handler [EMAIL PROTECTED] to phase parse
adding handler [EMAIL PROTECTED] to phase user
Invoking phase transport
Invoking phase parse
Invoking handler org.codehaus.xfire.util.dom.DOMInHandler in phase parse
Invoking handler org.codehaus.xfire.soap.handler.ReadHeadersHandler in
phase parse
Invoking phase pre-dispatch
Invoking phase dispatch
Invoking handler org.codehaus.xfire.handler.LocateBindingHandler in
phase dispatch
Invoking handler org.codehaus.xfire.soap.handler.SoapBodyHandler in
phase dispatch
Fault occurred!
org.codehaus.xfire.fault.XFireFault: Parameter
{http://www.securit.be/webservice}requestDdmById does not exist!
at
org.codehaus.xfire.service.binding.AbstractBinding.read(AbstractBinding.java:201)
at
org.codehaus.xfire.service.binding.DocumentBinding.readMessage(DocumentBinding.java:35)
at
org.codehaus.xfire.soap.handler.SoapBodyHandler.invoke(SoapBodyHandler.java:42)
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:304)
at
org.codehaus.xfire.transport.http.XFireServletController.doService(XFireServletController.java:129)
at
org.codehaus.xfire.transport.http.XFireServlet.doPost(XFireServlet.java:116)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:722)
at
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
at org.mortbay.jetty.handler.HandlerList.handle(HandlerList.java:49)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
at org.mortbay.jetty.Server.handle(Server.java:324)
at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
at
org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:648)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
at
org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
at
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
adding handler [EMAIL PROTECTED]
to phase post-invoke
adding handler [EMAIL PROTECTED]
to phase transport
adding handler [EMAIL PROTECTED] to phase send
adding handler [EMAIL PROTECTED]
to phase user
adding handler [EMAIL PROTECTED] to
phase post-invoke
adding handler [EMAIL PROTECTED] to phase user
Invoking phase post-invoke
Invoking handler org.codehaus.xfire.util.dom.DOMOutHandler in phase post-invoke
Invoking handler
org.codehaus.xfire.soap.handler.FaultSoapSerializerHandler in phase
post-invoke
Invoking phase policy
Invoking phase user
Invoking handler org.codehaus.xfire.util.LoggingHandler in phase user
<?xml version="1.0" encoding="UTF-8"?>
<soap:Fault>
<faultcode>soap:Client</faultcode>
<faultstring>Parameter
{http://www.securit.be/dman/ddm/webservice}requestDdmById does not
exist!</faultstring>
</soap:Fault>
The wsdl is available, but the client cant call the webservice.
when i use spring (as used in the jaxws-spring example) everything
works, but I need to create my implemtation with the call:
service.setInvoker(new BeanInvoker(new WebServiceImpl(params)));
Any Help would be appreciated
Guy
---------------------------------------------------------------------
To unsubscribe from this list please visit:
http://xircles.codehaus.org/manage_email