I've a legacy C++ application exposing a CORBA interface and I need to access
it from the ESB.
In general I think a clean integration with CORBA would be a great
feature....anyway in my case I would use:
1) a jbi4corba binding component in provider mode, but I 'm getting some
errors.
2) a CXF-BC-SU in provider mode with the corba binding
I think the second chance is more coherent with an architecture based on
YOKO/CXF/SERVICE MIX, as jbi4corba seems better integrated on OPEN ESB.
YOKO corba binding works great on CXF.
AFAIK YOKO is integrated with the CXF 2.1X releases, not on the 2.0X.
I tried with SMIX 3.3 (based on CXF 2.2) craeting a CXF-SU-BC in provider
mode, starting from the CXF corba example.
This is the idl:
module cxf {
//change this to an interface once we support corba:object & wsa
references.
struct Account {
string name;
long balance;
};
exception AccountNotFoundException {
string name;
};
exception AccountAlreadyExistsException {
string name;
};
interface Bank {
Account
getAccount(
in string name
) raises (AccountNotFoundException);
boolean
createAccount(
in string name, out Account account
) raises (AccountAlreadyExistsException);
};
};
xmlns:corba="http://cxf.apache.org/bindings/corba"
this is the generated WSDL
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
targetNamespace="http://cxf.apache.org/schemas/cxf/idl/HelloWorld"
xmlns:corba="http://cxf.apache.org/bindings/corba"
xmlns:ns1="http://cxf.apache.org/schemas/cxf/idl/HelloWorld/corba/typemap/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://cxf.apache.org/schemas/cxf/idl/HelloWorld"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<corba:typeMapping
targetNamespace="http://cxf.apache.org/schemas/cxf/idl/HelloWorld/corba/typemap/"
/>
<wsdl:types>
<xs:schema attributeFormDefault="unqualified"
elementFormDefault="unqualified"
targetNamespace="http://cxf.apache.org/schemas/cxf/idl/HelloWorld"
xmlns="http://cxf.apache.org/schemas/cxf/idl/HelloWorld"
xmlns:ns1="http://cxf.apache.org/schemas/cxf/idl/HelloWorld/corba/typemap/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://cxf.apache.org/schemas/cxf/idl/HelloWorld"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xs:element name="greetMeResponse" type="xs:string">
</xs:element>
<xs:element name="greetMe" type="xs:string">
</xs:element>
</xs:schema>
</wsdl:types>
<wsdl:message name="greetMe">
<wsdl:part name="inparameter" element="tns:greetMe">
</wsdl:part>
</wsdl:message>
<wsdl:message name="greetMeResponse">
<wsdl:part name="outparameter" element="tns:greetMeResponse">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="HelloWorld">
<wsdl:operation name="greetMe">
<wsdl:input name="greetMeRequest" message="tns:greetMe">
</wsdl:input>
<wsdl:output name="greetMeResponse" message="tns:greetMeResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="HelloWorldCORBABinding" type="tns:HelloWorld">
<corba:binding repositoryID="IDL:HelloWorld:1.0" />
<wsdl:operation name="greetMe">
<corba:operation name="greetMe">
<corba:param mode="in" idltype="corba:string" name="inparameter" />
<corba:return idltype="corba:string" name="outparameter" />
</corba:operation>
<wsdl:input name="greetMeRequest">
</wsdl:input>
<wsdl:output name="greetMeResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="HelloWorldCORBAService">
<wsdl:port name="HelloWorldCORBAPort"
binding="tns:HelloWorldCORBABinding">
<corba:address location="corbaname::localhost:1050#HelloWorld" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
when a deploy my sample service assembly I get the following exception:
<stack-trace><![CDATA[javax.jbi.management.DeploymentException:
org.apache.cxf.endpoint.EndpointException
at
org.apache.servicemix.cxfbc.CxfBcProvider.validate(CxfBcProvider.java:475)
at
org.apache.servicemix.common.AbstractDeployer.validate(AbstractDeployer.java:58)
at
org.apache.servicemix.common.xbean.BaseXBeanDeployer.validate(BaseXBeanDeployer.java:55)
at
org.apache.servicemix.common.xbean.AbstractXBeanDeployer.deploy(AbstractXBeanDeployer.java:96)
at
org.apache.servicemix.common.BaseServiceUnitManager.doDeploy(BaseServiceUnitManager.java:88)
at
org.apache.servicemix.common.BaseServiceUnitManager.deploy(BaseServiceUnitManager.java:69)
at
org.apache.servicemix.jbi.framework.DeploymentService.deployServiceAssembly(DeploymentService.java:508)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.updateServiceAssembly(AutoDeploymentService.java:353)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.updateArchive(AutoDeploymentService.java:256)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.updateExternalArchive(AutoDeploymentService.java:204)
at
org.apache.servicemix.jbi.container.JBIContainer.updateExternalArchive(JBIContainer.java:494)
at
org.apache.servicemix.jbi.container.JBIContainer.updateExternalArchive(JBIContainer.java:504)
at
org.apache.servicemix.jbi.framework.AdminCommandsService.deployServiceAssembly(AdminCommandsService.java:209)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:216)
at
org.apache.servicemix.jbi.management.BaseStandardMBean.invoke(BaseStandardMBean.java:323)
at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
at
com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
at
javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1426)
at
javax.management.remote.rmi.RMIConnectionImpl.access$200(RMIConnectionImpl.java:72)
at
javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1264)
at java.security.AccessController.doPrivileged(Native Method)
at
javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1366)
at
javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:788)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Caused by: org.apache.cxf.endpoint.EndpointException
at
org.apache.cxf.endpoint.EndpointImpl.createBinding(EndpointImpl.java:132)
at org.apache.cxf.endpoint.EndpointImpl.<init>(EndpointImpl.java:81)
at
org.apache.servicemix.cxfbc.CxfBcProvider.validate(CxfBcProvider.java:456)
... 40 more
Caused by: org.apache.cxf.BusException: No binding factory for namespace
http://cxf.apache.org/bindings/corba registered.
at
org.apache.cxf.binding.BindingFactoryManagerImpl.getBindingFactory(BindingFactoryManagerImpl.java:91)
at
org.apache.cxf.endpoint.EndpointImpl.createBinding(EndpointImpl.java:129)
... 42 more
]]></stack-trace>
</exception-info>
</task-result-details>
</component-task-result-details>
</component-task-result>
</jbi-task-result>
</jbi-task>
at
org.apache.servicemix.jbi.framework.ManagementSupport.failure(ManagementSupport.java:125)
at
org.apache.servicemix.jbi.framework.ManagementSupport.failure(ManagementSupport.java:111)
at
org.apache.servicemix.jbi.framework.DeploymentService.deployServiceAssembly(DeploymentService.java:543)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.updateServiceAssembly(AutoDeploymentService.java:353)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.updateArchive(AutoDeploymentService.java:256)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.updateExternalArchive(AutoDeploymentService.java:204)
at
org.apache.servicemix.jbi.container.JBIContainer.updateExternalArchive(JBIContainer.java:494)
at
org.apache.servicemix.jbi.container.JBIContainer.updateExternalArchive(JBIContainer.java:504)
at
org.apache.servicemix.jbi.framework.AdminCommandsService.deployServiceAssembly(AdminCommandsService.java:209)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:216)
at
org.apache.servicemix.jbi.management.BaseStandardMBean.invoke(BaseStandardMBean.java:323)
at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
at
com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
at
javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1426)
at
javax.management.remote.rmi.RMIConnectionImpl.access$200(RMIConnectionImpl.java:72)
at
javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1264)
at java.security.AccessController.doPrivileged(Native Method)
at
javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1366)
at
javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:788)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Seems the binding corba does not work.
Am I missing something or is it a missing feature?
--
View this message in context:
http://www.nabble.com/Yoko-integration-tp22203205p22224625.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.