camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Willem Jiang <willem.ji...@gmail.com>
Subject Re: CXF CORBA binding problem
Date Wed, 18 Aug 2010 11:26:27 GMT
Can you try to use CXF to invoke the CORBA service first?
I'm not sure the CXF can talk the CORBA server rightly.

Willem

M.Ismail wrote:
> 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,
> 
> 


Mime
View raw message