Solved. I was setting some properties via services.xml but not when using the 
API. Setting the service's properties in the servlet implementation solved the 
problem.


From: [EMAIL PROTECTED]: [EMAIL PROTECTED]: Thu, 28 Jun 2007 10:51:43 
+0200Subject: [xfire-user] JAXB2 unmarshalling problem


(was: [xfire-user] Using external properties file) I'm writing a web service 
using XFire 1.2.6 with JAXB2 bindings in a schema-firstdevelopment project. 
XFire is configured using the services.xml file and annotationsand all is 
working fine. Now I need to start myself the service to set some properties in 
the service'simplementation class before exposing it (thanks to Yanick) but it 
seems that I'm doingsomething wrong as I got the following exception while 
unmarshalling the client request. Nothing changed except the servlet invocation 
so I guess I'm doing something wrongbut I can't help myself. Here's the 
details: javax.xml.bind.UnmarshalException: unexpected element (uri:"myns", 
local:"schemaVer"). Expected elements are 
<{myns}getUserID>,<{myns}getUserIDResponse>,... at 
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:525)
 at 
com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:199) at 
com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:194) at 
com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Loader.java:71)
 at 
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext$DefaultRootLoader.childElement(UnmarshallingContext.java:922)
 at 
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:366)
 at 
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:347)
 at 
com.sun.xml.bind.v2.runtime.unmarshaller.InterningXmlVisitor.startElement(InterningXmlVisitor.java:35)
 at 
com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleStartElement(StAXStreamConnector.java:201)
 at 
com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:135)
 at 
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:337)
 at 
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:309)
 at org.codehaus.xfire.jaxb2.JaxbType.readObject(JaxbType.java:203) at 
org.codehaus.xfire.aegis.AegisBindingProvider.readParameter(AegisBindingProvider.java:169)
 at 
org.codehaus.xfire.service.binding.AbstractBinding.read(AbstractBinding.java:206)
 at 
org.codehaus.xfire.service.binding.WrappedBinding.readMessage(WrappedBinding.java:51)
 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:710) at 
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)... Servlet 
implementation: import org.codehaus.xfire.jaxb2.JaxbServiceFactory;import 
org.codehaus.xfire.service.invoker.ObjectInvoker;import 
org.codehaus.xfire.service.Service;import 
org.codehaus.xfire.service.invoker.BeanInvoker;import 
org.codehaus.xfire.transport.http.XFireServlet;import 
javax.servlet.ServletException; public class SOAPServlet extends XFireServlet{  
public void init() throws ServletException  {    super.init();       
MyServiceImpl instance = new MyServiceImpl();  //instance.setSomeProperty();    
 JaxbServiceFactory factory = new 
JaxbServiceFactory(getXFire().getTransportManager(), null);    Service service 
= factory.create(MyService.class, "MyService", null, null);    
service.setProperty(ObjectInvoker.SERVICE_IMPL_CLASS, MyServiceImpl.class);    
service.setInvoker(new BeanInvoker(instance));    
getController().getServiceRegistry().register(service);  }} Service interface: 
import javax.jws.WebMethod;import javax.jws.WebParam;import 
javax.jws.WebService;@WebService(name="MyServiceIntf")public interface 
MyService{    @WebMethod    getUserIDResponse 
getUserID(@WebParam(name="getUserID") getUserID body);     @WebMethod    .... 
Service class implementation: import javax.jws.WebService;import 
javax.jws.soap.SOAPBinding;@WebService(serviceName="MyService")@SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)public
 class MyServiceImpl implements MyService{ //Some properties     public 
getUserIDResponse getUserID(getUserID body)    .... Client request (conformant 
to the bounded schema): <getUserId xmlns="myns"> <schemaVer name="tdfschema" 
ver="0.2"/> <userInfo>  <userID>someuser</userID>  <password>somepwd</password> 
</userInfo></getUserID>Thanks for any help

2 GB di spazio, protezione da virus e spyware...GRATIS! Windows Live Hotmail 
_________________________________________________________________
Sai cosa รจ successo oggi?
http://notizie.msn.it

Reply via email to