Hi Michal, The short answer is we do not support Provider<CorbaMessage> right now in CXF, I will discuss into details why we can not support Provider<CorbaMessage> with standard JAX-WS APIs in a following email. You mentioned CORBA binding is working for you with the SEI style(client and server generated by wsdltojava), so why you wanted to try Provider interface? Is it because you want to access raw message that sent and received by CORBA binding? If this is the case, interceptors might help. I am not familiar with YOKO, but the underlying principles should be same as other bindings, i.e., they should have some CORBA binding interceptors that take an input stream, parse the input to get binding operation info, such as operation name, input parameter types etc so that they know how to dispatch the request into implementation. At the same time, some other CORBA binding interceptors will retrieve the payload from request (maybe the CDR format?) and turn it into some kind of objects that represent CORBA payload (maybe the CorbaMessage u referred to?). Lets say interceptor B, C, D are used by CORBA binding to do the work mentioned about, at the end of interceptor D, both operation info and message payload will be available for accessing. So if you can ask YOKO team, they might help you to find out what interceptors are used by CORBA binding and how they work. You shall be able to access raw information from these interceptor directly. If you prefer not modify or use these CORBA interceptors directly, you can write you own interceptor. As long as you put this interceptor in a proper position of interceptor chain, you shall be able access all the information as well. An example of how to write and configure your own interceptor can be found from samples\streamInterceptor in CXF distribution.
Hope this helps, Jervis -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Sent: 2007?7?30? 16:31 To: [email protected] Subject: RE: YOKO & CXF CORBA Web Service using Provider<CorbaMessage> Thanks guys for your helpful replies. Isn't there any way how to solve my problem using Interceptor? I'll try ServerFactoryBean as you mentioned. Thanks > Michal, > Right now, we don't support any Provider (or Dispatch) that takes the raw > CXF Message types. That's a good suggestion though. Could you log a > Jira for it? > > What's worse, looking at the code for the Dispatch/Provider stuff on > trunk, it only will work for XML and SOAP bindings. It specifically > checks for those and does "bad" things. I was hoping to say you could > do something like: > > public class CalculatorImpl implements Provider<XMLStreamReader> { > } > > to use the data from the CORBA stream reader, but that doesn't even work > right now. Even trying a Source doesn't work. I think some Jira's > need to be added for that as well. > > > Dan > > > > On Friday 27 July 2007 09:29, Michal Šafr wrote: > > > > firstly I'm not sure, if this is CXF or YOKO problem, so please excuse > > me if I've sent this problem to a wrong place. I've got the problem > > described below. > > > > I started from simple WSDL describing service with CORBA binding. I > > generated standalone server and client using CXF tool wsdl2java > > -server (-client) . Implemented service and everything worked fine > > without any problem. I was able to call WS using generated client and > > WS was returning expected values. Then I decided to implement WS using > > interface javax.xml.ws.Provider so I had: > > //Service class, annotations are not mentioned here, but i changed > @WebService annotation to @WebServiceProvider and added @ServiceMode > > public class CalculatorImpl implements Provider<CorbaMessage> { > > public CorbaMessage invoke(CorbaMessage arg0) { > > System.out.println("corba service called"); > > return arg0; > > } > > } > > > > Every time I try to call WS a receive following exception on the > client side: > > > > org.omg.CORBA.MARSHAL: vmcid: SUN minor code: 207 completed: No > > at > com.sun.corba.se.impl.logging.ORBUtilSystemException.endOfStream(ORBUt >ilSyst emException.java:6386) > > at > com.sun.corba.se.impl.logging.ORBUtilSystemException.endOfStream(ORBUt >ilSyst emException.java:6408) > > at > com.sun.corba.se.impl.encoding.BufferManagerReadStream.underflow(Buffe >rManag erReadStream.java:93) > > at > com.sun.corba.se.impl.encoding.CDRInputStream_1_1.grow(CDRInputStream_ >1_1.ja va:75) > > at > com.sun.corba.se.impl.encoding.CDRInputStream_1_2.alignAndCheck(CDRInp >utStre am_1_2.java:80) > > at > com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_longlong(CDRInp >utStre am_1_0.java:504) > > at > com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_double(CDRInput >Stream _1_0.java:526) > > at > com.sun.corba.se.impl.encoding.CDRInputStream.read_double(CDRInputStre >am.jav a:153) > > at > com.pikeelectronic.calc._CalculatorStub.add(_CalculatorStub.java:182) > > at > com.pikeelectronic.calc.CORBAClient.Client.main(Client.java:32) > > > > And following exception on the server side: > > > > 27.7.2007 13:21:05 org.apache.cxf.phase.PhaseInterceptorChain > doIntercept > > INFO: Interceptor has thrown exception, unwinding now > > java.lang.NullPointerException > > at java.lang.Class.isAssignableFrom(Native Method) > > at > org.apache.cxf.databinding.source.XMLStreamDataReader.read(XMLStreamDa >taRead er.java:56) > > at > org.apache.cxf.databinding.source.XMLStreamDataReader.read(XMLStreamDa >taRead er.java:52) > > at > org.apache.cxf.databinding.source.XMLStreamDataReader.read(XMLStreamDa >taRead er.java:48) > > at > org.apache.cxf.interceptor.BareInInterceptor.handleMessage(BareInInter >ceptor .java:138) > > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercepto >rChain .java:206) > > at > org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitia >tionOb server.java:67) > > at > org.apache.yoko.bindings.corba.runtime.CorbaDSIServant.invoke(CorbaDSI >Servan t.java:156) > > at > org.apache.yoko.orb.OBPortableServer.ServantDispatcher.dispatch(Servan >tDispa tcher.java:225) > > at > org.apache.yoko.orb.OBPortableServer.POA_impl._OB_dispatch(POA_impl.ja >va:160 7) > > at > org.apache.yoko.orb.OB.DispatchRequest_impl.invoke(DispatchRequest_imp >l.java > > :56) > > at > org.apache.yoko.orb.OB.DispatchSameThread_impl.dispatch(DispatchStrate >gyFact ory_impl.java:53) > > at org.apache.yoko.orb.OB.Upcall.invoke(Upcall.java:360) > > at > org.apache.yoko.orb.OB.GIOPConnectionThreaded.execReceive(GIOPConnecti >onThre aded.java:502) > > at > org.apache.yoko.orb.OB.GIOPConnectionThreaded$ReceiverThread.run(GIOPC >onnect ionThreaded.java:64) > > 27.7.2007 13:21:06 org.apache.cxf.phase.PhaseInterceptorChain > doIntercept > > INFO: Interceptor has thrown exception, unwinding now > > org.apache.yoko.bindings.corba.CorbaBindingException: > java.lang.NullPointerException > > at > org.apache.yoko.bindings.corba.interceptors.CorbaStreamFaultOutInterce >ptor.h andleMessage(CorbaStreamFaultOutInterceptor.java:113) > > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercepto >rChain .java:206) > > at > org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessa >ge(Abs tractFaultChainInitiatorObserver.java:86) > > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercepto >rChain .java:223) > > at > org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitia >tionOb server.java:67) > > at > org.apache.yoko.bindings.corba.runtime.CorbaDSIServant.invoke(CorbaDSI >Servan t.java:156) > > at > org.apache.yoko.orb.OBPortableServer.ServantDispatcher.dispatch(Servan >tDispa tcher.java:225) > > at > org.apache.yoko.orb.OBPortableServer.POA_impl._OB_dispatch(POA_impl.ja >va:160 7) > > at > org.apache.yoko.orb.OB.DispatchRequest_impl.invoke(DispatchRequest_imp >l.java > > :56) > > at > org.apache.yoko.orb.OB.DispatchSameThread_impl.dispatch(DispatchStrate >gyFact ory_impl.java:53) > > at org.apache.yoko.orb.OB.Upcall.invoke(Upcall.java:360) > > at > org.apache.yoko.orb.OB.GIOPConnectionThreaded.execReceive(GIOPConnecti >onThre aded.java:502) > > at > org.apache.yoko.orb.OB.GIOPConnectionThreaded$ReceiverThread.run(GIOPC >onnect ionThreaded.java:64) > > Caused by: java.lang.NullPointerException > > at java.lang.Class.isAssignableFrom(Native Method) > > at > org.apache.cxf.databinding.source.XMLStreamDataReader.read(XMLStreamDa >taRead er.java:56) > > at > org.apache.cxf.databinding.source.XMLStreamDataReader.read(XMLStreamDa >taRead er.java:52) > > at > org.apache.cxf.databinding.source.XMLStreamDataReader.read(XMLStreamDa >taRead er.java:48) > > at > org.apache.cxf.interceptor.BareInInterceptor.handleMessage(BareInInter >ceptor .java:138) > > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercepto >rChain .java:206) > > ... 9 more > > > > I have changed nothing else than WS implementation on server side. > Could anyone help please? Every advice is welcome, thank you very > much. -- J. Daniel Kulp Principal Engineer IONA P: 781-902-8727 C: 508-380-7194 [EMAIL PROTECTED] http://www.dankulp.com/blog ---------------------------- IONA Technologies PLC (registered in Ireland) Registered Number: 171387 Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland
