> -----Original Message----- > From: Lukas Zapletal [mailto:[EMAIL PROTECTED] > Sent: 2007年8月3日 18:21 > To: [email protected] > Cc: [EMAIL PROTECTED] > Subject: Re: YOKO & CXF CORBA Web Service using Provider<CorbaMessage> > > > Hello, > > > To get Dispatch/Provider interface working with CORBA > binding, we need to figure out what the T is in the Provider<T>. > > I understand. Its a question to Yoko developers. > > > If you use CORBA server & web services client as described > in YOKO ws\hello_world sample (i.e., the server is using > CORBA binding, the client is using SOAP or XML binding), > Dispatch<Source> should definitely work, because what sent on > the wire is SOAP or XML message. > > You say you have CORBA service and WS client implemented with > Dispatch<Source> should work? Or what you mean exactly with working > Dispatch? >
Corba service and WS client (using SOAP or XML binding) with Dispatch<Source> should work. The problem you run into (NPE in CorbaStreamOutInterceptor.java:78 or NPE in TypeMapCache.java:38) seems all related to Corba binding not being properly initialized, CXF runtime tries to retrieve Corba binding info from service model, but it returns null. > Talking about WS client calling CORBA we have tried to use dynamic > proxy over CORBA and it doesnt work: > > QName svcQname = new QName( > "http://schemas.apache.org/yoko/idl/calc", > "com.pikeelectronic.calc.CalculatorCORBAService"); > QName portQName = new QName( > "http://schemas.apache.org/yoko/idl/calc", > "com.pikeelectronic.calc.CalculatorCORBAPort"); > > File wsdl = new File("calc-soapbinding.wsdl"); > Service svc = Service.create(wsdl.toURL(),svcQname); > ComPikeelectronicCalcCalculator calc = > svc.getPort(portQName, ComPikeelectronicCalcCalculator.class); > double result = calc.add(4, 5); > System.out.println(result); > > When I run this with SOAP binding it works but when I try to do this > with CORBA binding I am getting exception: > > INFO: Interceptor has thrown exception, unwinding now > java.lang.NullPointerException > at > org.apache.yoko.bindings.corba.interceptors.CorbaStreamOutInte > rceptor.handleOutBoundMessage(CorbaStreamOutInterceptor.java:78) > at > org.apache.yoko.bindings.corba.interceptors.CorbaStreamOutInte > rceptor.handleMessage(CorbaStreamOutInterceptor.java:65) > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIn > terceptorChain.java:206) > at > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:253) > at > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:204) > at > org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) > at > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy. > java:134) > at $Proxy34.add(Unknown Source) > at com.pikeelectronic.calc.WSDIIClient.main(WSDIIClient.java:46) > javax.xml.ws.WebServiceException: java.lang.NullPointerException > at > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy. > java:172) > at $Proxy34.add(Unknown Source) > at com.pikeelectronic.calc.WSDIIClient.main(WSDIIClient.java:46) > Caused by: java.lang.NullPointerException > at > org.apache.yoko.bindings.corba.interceptors.CorbaStreamOutInte > rceptor.handleOutBoundMessage(CorbaStreamOutInterceptor.java:78) > at > org.apache.yoko.bindings.corba.interceptors.CorbaStreamOutInte > rceptor.handleMessage(CorbaStreamOutInterceptor.java:65) > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIn > terceptorChain.java:206) > at > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:253) > at > org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:204) > at > org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) > at > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy. > java:134) > ... 2 more > > > > > > > Jervis > > > > -----Original Message----- > > From: Lukas Zapletal [ mailto:[EMAIL PROTECTED] > > Sent: 2007年8月2日 23:00 > > To: [email protected]; [EMAIL PROTECTED] > > Subject: Re: YOKO & CXF CORBA Web Service using > Provider<CorbaMessage> > > > > > > Hello, > > > > the operation info and CORBA parameters are not the reason why do we > > need the support. We would like to create a web service > provider that > > will be accessible from CORBA client. We have no clue how to do this > > because we cannot simply create Provider<CorbaMessage>, > > Provider<SOAPMessage> or even Provider<Source>. Exception > occurs when > > we try this so it seems nobody ever used it before and the code > > contains a bug or we are doing something wrong. > > > > On the other side we are also trying to call (normal) CORBA service > > with web service client implemented in CXF/Yoko dynamicaly (DII > > client). We do not know if is it possible to create SOAPMessage and > > pass it to Yoko CORBA binding along with WSDL file to make a dynamic > > call. > > > > It seems to me the terms "corba cxf binding" and "dynamic" > cannot live > > together... > > > > Best regards, Lukas > > > > 2007/8/2, Liu, Jervis <[EMAIL PROTECTED]>: > > > Hi, have a new question. I suppose the reason why you > want to use Provider interface for CORBA binding is that you > want to access "raw CORBA message payload" so that you can > parse operation info and input parameters by yourself. > However the question is what the "raw CORBA message payload" > is? In the world of SOAP binding or XML binding, the content > sent on the wire normally can be represented as XML, thus we > can have typed provider interface like Provider<Source>, > Provider<SOAPMessage>. However, in the world of CORBA, I > don't think we have a well-defined type to represent "raw > CORBA message payload", do we? Please note, > org.apache.yoko.bindings.corba.CorbaMessage is not the one we > are looking for. Same as the > org.apache.cxf.binding.soap.SoapMessage and > org.apache.cxf.binding.xml.XMLMessage, they are just a > content holder, which represent the whole input/output > message rather than the message payload. The type class that > can be used in Provider<T> is sth that can be produced by > Object<T> = DataReader.read(...). Before we can go ahead to > support Provider<T> for CORBA binding, we really need to > figure out what the T is. > > > > > > BTW, if what you want is CorbaMessage, you can access it > from Exchange. See Dan's previous comment in this thread on > how to access Exchange. > > > > > > I will send this message across to yoko mailing list, > hopefully Yoko guys can give some insight on this. > > > > > > Cheers, > > > Jervis > > > > > > > > > -----Original Message----- > > > From: [EMAIL PROTECTED] [ mailto:[EMAIL PROTECTED] > > > Sent: 2007年7月30日 19:52 > > > To: [email protected]; Liu, Jervis > > > Subject: RE: YOKO & CXF CORBA Web Service using > Provider<CorbaMessage> > > > > > > > > > Hi Jervis, it really sounds great, cxf would be more > flexible then. Thank you for your replies. So do you plan > adding support of that to cxf? And would it be possible to > know when? :-) > > > > > > Cheers, > > > Michael > > > > > > > > > -----Original Message----- > > > From: Liu, Jervis [ mailto:[EMAIL PROTECTED] > > > Sent: Monday, July 30, 2007 1:12 PM > > > To: [email protected]; [EMAIL PROTECTED] > > > Cc: Michal ?afr; [EMAIL PROTECTED] > > > Subject: RE: YOKO & CXF CORBA Web Service using > Provider<CorbaMessage> > > > > > > Coming to think of this again, I found supporting > Provider<CorbaMessage> isn't that difficult as I originally > thought. We have some manual checks of binding type in > DispatchInDatabindingInterceptor\DispatchOutDatabindingInterce > ptor, such as if (binding == soapbinding) then blabla. > Actually we were just being lazy, we should really implement > DispatchInDatabindingInterceptor as > DispatchInSoapBindingDatabindingInterceptor and > DispatchInXMLbindingDatabindingInterceptor. This way, > different dispatch/provider interceptors for different > bindings can be added by corresponding binding providers, > which allows the support of new bindings without the need to > modify existing code base. E.g., adding CORBA binding > support for dispatch/provider involves in writing a > DispatchInCorbaBindingDatabindingInterceptor, doing whatever > you want in this interceptor then making sure the > CORBABinding provider has this > DispatchInCorbaBindingDatabindingInterceptor registered into > interceptor chain during provider/dispatch case. > > > > > > Cheers, > > > Jervis > > > > > > -----Original Message----- > > > From: Daniel Kulp [ mailto:[EMAIL PROTECTED] > > > Sent: 2007年7月28日 11:23 > > > To: [email protected] > > > Cc: Michal ?afr; [EMAIL PROTECTED] > > > Subject: Re: YOKO & CXF CORBA Web Service using > Provider<CorbaMessage> > > > > > > > > > > > > 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 > > > > > > > > > ---------------------------- > > > 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 > > > > > -- > 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
