Skip to main content
Summary How can multiple Orbix Naming Services be exposed as SOAP over HTTP endpoints via the Artix router?
Article Number 17444
Environment All Supported Operating Systems Artix 5.5 Orbix 6.x JAX-RPC C based Artix router
Question/Problem Description How can multiple Orbix Naming Services be exposed as SOAP over HTTP endpoints via the Artix router?
How to expose the Orbix Naming Service as a Web Service?
Clarifying Information
Error Message
Defect/Enhancement Number
Cause
Resolution The Orbix Naming Service can be exposed in the same way as any other CORBA service. The IDL must first be mapped to WSDL, this can be achieved using the idltowsdl tool. The intricacies of such tool is outside the scope of this article, but can be reviewed in the Artix for CORBA guide. Once the WSDL for the Naming Service is available it should be populated with the IOR of the indirect persistent reference of the Naming Service, this will avoid any need to update the IOR as the connection will always be established via the locator. This WSDL can then be updated to add SOAP binding and HTTP transport, thus adding a new port when the WSDL is deployed. A route can then be added between the two existing ports. To add a second Naming Service it is simply a case of adding a new CORBA port with a reference to the second Naming Service reference as the interface remains the same, a new SOAP/HTTP port will also be needed. For example a second route could be added to the samples/routing/corba_soap_http demo as below:

    <service name="CorbaService">
        <port binding="corbatm:CorbaBinding" name="CorbaPort">
            <corba:address location="file:../../hello_world_service.ior"/>
        </port>
    </service>
    <service name="HTTPSoapService">
        <port binding="corbatm:SOAPBinding" name="HTTPSoapPort">
            <soap:address
                location="http://localhost:9000"/>
        </port>
    </service>
    <service name="CorbaService2">
        <port binding="corbatm:CorbaBinding" name="CorbaPort2">
            <corba:address location="file:../../hello_world_service2.ior"/>
        </port>
    </service>
    <service name="HTTPSoapService2">
        <port binding="corbatm:SOAPBinding" name="HTTPSoapPort2">
            <soap:address
                location="http://localhost:9002"/>
        </port>
    </service>   
    <ns1:route name="route_1">
        <ns1:source port="HTTPSoapPort" service="corbatm:HTTPSoapService"/>
        <ns1:destination port="CorbaPort" service="corbatm:CorbaService"/>
    </ns1:route>
    <ns1:route name="route_2">
        <ns1:source port="HTTPSoapPort2" service="corbatm:HTTPSoapService2"/>
        <ns1:destination port="CorbaPort2" service="corbatm:CorbaService2"/>
    </ns1:route>
Workaround
Notes
Attachment
Created date: 06 September 2011
Last Modified: 13 February 2013
Last Published: 23 June 2012
First Published date: 10 September 2011

#KnowledgeDocs
#Orbix