Hi, 

I'm using camel 2.3 to communicate with a CORBA server. I have generated a
WSDL from the IDLs and then the java stubs from the WSDL and I ran the
generated client without a problem. The client simply attempt to create a
session from and after receiving a session object it uses it to invoke some
operations. Here is the CXF code: 

           ECITECITSessionCORBAService ecitSessionService = new
ECITECITSessionCORBAService(wsdlURL, ECIT_SERVICE_NAME);
        ECITECITSession ecitSession =
ecitSessionService.getECITECITSessionCORBAPort();  

            java.lang.String _createSession_aInterface = "intf1";
            java.lang.String _createSession_aUsername = "user1";
            java.lang.String _createSession_aPassword = "password";
            try {
                javax.xml.ws.wsaddressing.W3CEndpointReference
_createSession__return = null;
               
               _createSession__return = ecitSession.createSession("ECIT", 
                                                                                
                        _createSession_aUsername,
_createSession_aPassword);
               
               ECITECITSession ecitSessionRet =
ecitSessionService.getPort(_createSession__return,ECITECITSession.class);
               System.out.println("Result: "+_createSession__return);
               
               javax.xml.ws.wsaddressing.W3CEndpointReference epr =
                   ecitSessionRet.newTransaction("774", 150L, "524", "015");    
        
               
               ECIECITransactionController transController = 
                                
eciTransControllerService.getPort(epr,ECIECITransactionController.class);

and Here is how I tried to port this code to camel:

String cxfSessionFactory = "cxf://corbaname::"+confBean.getEmIP()+":"+
confBean.getEmPort()+ "#ECISessionFactory?"+
                                                                        
"serviceClass="+ cxf.ECITECITSession.class.getName()+                           
                                        
                                                                        
"&dataFormat=POJO"+
                                                                        
"&portName={http://www.its.ws}ECIT.ECITSessionCORBAPort"+
                                                                        
"&serviceName={http://www.its.ws}ECIT.ECITSessionCORBAService"+
                                                                        
"&wsdlURL="+confBean.getEmWSDL();
        
        String cxfNewTransaction = "cxf://corbaname::"+confBean.getEmIP()+":"+
confBean.getEmPort()+ "#ECISessionFactory?"+
                "serviceClass="+ cxf.ECITECITSession.class.getName()+           
                                                        
                "&dataFormat=POJO"+
                "&portName={http://www.its.ws}ECIT.ECITSessionCORBAPort"+
                "&serviceName={http://www.its.ws}ECIT.ECITSessionCORBAService"+
                "&wsdlURL="+confBean.getEmWSDL();
        
        
                
        from("direct:processEmRequests")
        .routeId("Em sub route")
        .unmarshal(jaxbUrrFinalApi)
        
        .choice()
        .when(bean("EmLoginBean","isLoggedIn").isNotEqualTo(constant(true)))
        
                .doTry()
                        .process(new EmLoginProcessor())
                        .to(cxfSessionFactory)    
                        .process(new UrrXmlReqToEmProcessor())
                        .to(cxfNewTransaction )
                        .to("direct:processEmResp")
                .doCatch(ECIEPermissionDenied.class,ECIESystemDown.class)
                .process(new ExceptionProcessorHandler())
                .end()

        .end();

As you notice I'm using the "cxf://corbaname?" to refer to the name of the
CORBA object that I want to get a reference of e.g when creating a session I
use "ECISessionFactory". In both the cxf and Camel I'm able to invoke
createSession operation and get the return value successfully. However, the
problem here is that in camel after I get the session and try to invoke
newTransaction I get the following CORBA exception:

org.omg.CORBA.BAD_OPERATION:   vmcid: 0x45520000  minor code: 4  completed:
No

I used WireShark to sniff the GIOP packet try to know the reason and I found
that in Camel's case instead of calling the operation "newTransaction"
directly, a call to "_is_a" then a call to "resolve_str" then finally a call
to "newTransaction" which fails giving the above CORBA exception. I'm not
sure what is the problem here. Can anyone help?

Thanks,


-- 
View this message in context: 
http://camel.465427.n5.nabble.com/CXF-CORBA-binding-problem-tp2638356p2638356.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to