JAX-WS does not support DII except the Dispatch interface, the old JAX-RPC spec 
does. The reason is because DII in its nature, does not work well with Doc/Lit 
style web services. BTW, one could also argue Dispatch interface is more 
powerful than DII.

Cheers,
Jervis 

-----Original Message-----
From: Lukas Zapletal [mailto:[EMAIL PROTECTED]
Sent: 2007年8月2日 16:11
To: cxf-user@incubator.apache.org
Subject: Re: YOKO & CXF CORBA Web Service using Provider<CorbaMessage>


Hello,

is it possible to call CORBA service with CXF using DII? How could I
pass the request through the binding?

LZ

2007/7/30, Liu, Jervis <[EMAIL PROTECTED]>:
> 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: cxf-user@incubator.apache.org
> 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
>


-- 
Lukas Zapletal
http://lukas.zapletalovi.com

----------------------------
IONA Technologies PLC (registered in Ireland)
Registered Number: 171387
Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland

Reply via email to