6 Replies Latest reply: Dec 31, 2010 1:07 AM by ShuiXin Zhang RSS

Getting the JBoss naming service with corbaloc

jlsredondo Newbie

I'm trying to contact the JBoss Naming Service using the syntax of corbaloc. Since it's based on jacorb, it should be possible for a client (java o c++)
to get the object reference of the JBoss Naming Service as follows:


Object o = orb.string_to_object("corbaloc:iiop:1.2@myserver:port/JBossCorbaORB/Naming/root").


However, I get the exception Object_not_exist. I've configured JBoss IIOP in order to show a GUI about the
different POAs (in particular the RootPOA/Naming). In the text area of the monitor of this POA, I get the message
"rid: 0 oid: root opname: _is_a- invoke: object key not previously generated! ".
However , having a look at the file CorbaORBService.java, the root context of the Naming Service is constructed with oid ="root"
and within a POA called "Naming".

Is there something that I have to configure, something that I have to change ?

Thanks in advance.

  • 1. Re: Getting the JBoss naming service with corbaloc
    Guenter Graf Newbie

    I had the same problem. I was not able to connect from a Orbix 2000 C++ via corbaloc to JBOSS/JacOrb (using an IOR file however was no problem)

    But then I was successful with the following syntax:

    "corbaloc::127.0.0.1:3528/JBoss/Naming/root"

    Bye
    Guenter

  • 2. Re: Getting the JBoss naming service with corbaloc
    rakesh Newbie

    I am still having trouble connecting to the Naming Server. I also see a number of people in the forum are having trouble. If you can reply back on what is wrong here it will help a whole bunch of people. Thanks in advance for your help.

    VM Parameters
    Djava.security.policy=client.policy -Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB -Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton ConverterClient

    environment settings in cosnaming.jndi.properties
    java.naming.factory.initial=com.sun.jndi.cosnaming.CNCtxFactory
    java.naming.provider.url=corbaloc::127.0.0.1:3528/JBoss/Naming/root

    C:\DDS\env\j2sdk1.4.2_01\bin\javaw -classpath "D:\cde\testiiop\converter-ejb\classes;D:\cde\testiiop\converter-ejb\resources;D:\jboss-3.2.3\server\all\lib\jboss-iiop.jar;D:\jboss-3.2.3\server\all\lib\jboss-j2ee.jar;D:\jboss-3.2.3\server\all\lib\jacorb.jar;D:\jboss-3.2.3\server\all\lib\jboss.jar;C:\DDS\env\j2sdk1.4.2_01\jre\javaws\javaws.jar;C:\DDS\env\j2sdk1.4.2_01\jre\lib\charsets.jar;C:\DDS\env\j2sdk1.4.2_01\jre\lib\ext\dnsns.jar;C:\DDS\env\j2sdk1.4.2_01\jre\lib\ext\ldapsec.jar;C:\DDS\env\j2sdk1.4.2_01\jre\lib\ext\localedata.jar;C:\DDS\env\j2sdk1.4.2_01\jre\lib\ext\sunjce_provider.jar;C:\DDS\env\j2sdk1.4.2_01\jre\lib\im\indicim.jar;C:\DDS\env\j2sdk1.4.2_01\jre\lib\im\thaiim.jar;C:\DDS\env\j2sdk1.4.2_01\jre\lib\jce.jar;C:\DDS\env\j2sdk1.4.2_01\jre\lib\jsse.jar;C:\DDS\env\j2sdk1.4.2_01\jre\lib\plugin.jar;C:\DDS\env\j2sdk1.4.2_01\jre\lib\rt.jar;C:\DDS\env\j2sdk1.4.2_01\jre\lib\sunrsasign.jar;C:\DDS\env\j2sdk1.4.2_01\lib\dt.jar;C:\DDS\env\j2sdk1.4.2_01\lib\htmlconverter.jar;C:\DDS\env\j2sdk1.4.2_01\lib\tools.jar" -Djava.security.policy=client.policy -Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB -Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton ConverterClient
    javax.naming.NameNotFoundException [Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]

    at com.sun.jndi.cosnaming.ExceptionMapper.mapException(ExceptionMapper.java:44)

    at com.sun.jndi.cosnaming.CNCtx.callResolve(CNCtx.java:453)

    at com.sun.jndi.cosnaming.CNCtx.lookup(CNCtx.java:492)

    at com.sun.jndi.cosnaming.CNCtx.lookup(CNCtx.java:470)

    at javax.naming.InitialContext.lookup(InitialContext.java:347)

    at ConverterClient.testConversion(ConverterClient.java:40)null



    at ConverterClient.main(ConverterClient.java:52)

    Caused by: org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0

    at org.omg.CosNaming.NamingContextPackage.NotFoundHelper.read(NotFoundHelper.java:72)

    at org.omg.CosNaming._NamingContextStub.resolve(_NamingContextStub.java:251)

    at com.sun.jndi.cosnaming.CNCtx.callResolve(CNCtx.java:440)

    ... 5 more

  • 3. Re: Getting the JBoss naming service with corbaloc
    Francisco Reverbel Novice

    This is the script run-jboss323-client.sh, which I use on Linux:

    #!/bin/sh
    
    CP=.
    CP=$CP:$JBOSS_HOME/client/jacorb.jar
    CP=$CP:$JBOSS_HOME/client/jbossall-client.jar
    
    PROPS="-Djava.security.manager"
    PROPS="$PROPS -Djava.security.policy=./client.policy"
    PROPS="$PROPS -Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB"
    PROPS="$PROPS
    -Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton"
    PROPS="$PROPS -Djacorb.verbosity=0"
    PROPS="$PROPS -Djacorb.suppress_no_props_warning=on"
    PROPS="$PROPS -Djacorb.hashtable_class=java.util.Hashtable"
    
    java -classpath $CP $PROPS $*
    
    

    This client.policy file is overkill, but it works:
    grant {
     // Allow everything for now
     permission java.security.AllPermission;
    };
    

    I have a jndi.properties file that looks like this:
    java.naming.factory.initial=com.sun.jndi.cosnaming.CNCtxFactory
    java.naming.provider.url=corbaloc::my.host.name:3528/JBoss/Naming/root
    

    These settings work with JDK 1.4.x and JBoss 3.2.3. The corbaloc URL above will not work with JDK 1.3.x.
    The run-jboss323-client.sh script will not work with JBoss 3.2.4RC1. (JBoss 3.2.4RC1 uses JacORB 2.1,
    which requires avalon-framework.jar and expects different property settings.)

    Hope this helps,

    Francisco


  • 5. Re: Getting the JBoss naming service with corbaloc
    Javier Peña Newbie

    I'm having the same exception as rakeshtl had before and looks like some other people in this forum also getting same problem. I modified the JBossDukesBank example that comes with the J2EE tutorial to use RMI/IIOP. The example works fine when not using IIOP. I did everything that is mentioned in the http://www.jboss.org/developers/projects/jboss/IIOP document as far as modifing the jboss.xml file in the dd/ejb directory and changing the jndi.properties file in the dd/client directory. I tried several things for the java.naming.provider.url property in the jndi.properties. I tried using the corbaloc address with localhost, 127.0.0.1, 10.0.1.2 with no luck. I even tried without a corbaloc address and just the IOR string with the bunch of hex digits that JBoss server shows in the console and still didn't work. I'm using JBoss 4.0.2 and Java 1.4.2 on MacOS X Tiger for the client and the server. I'm actually running the java client on the same machine as the server.
    Here's my jndi.properties file

    # For IIOP client communication
    java.naming.factory.initial=com.sun.jndi.cosnaming.CNCtxFactory
    #java.naming.provider.url=corbaloc::127.0.0.1:3528/JBoss/Naming/root
    java.naming.provider.url=corbaloc::10.0.1.2:3528/JBoss/Naming/root
    #java.naming.provider.url=corbaloc::localhost:3528/JBoss/Naming/root
    #java.naming.provider.url=corbaloc::aluminio.local:3528/JBoss/Naming/root
    #java.naming.provider.url=corbaloc::192.168.1.104:3528/JBoss/Naming/root
    #java.naming.provider.url=IOR:000000000000002B49444C3A6F6D672E6F72672F436F734E616D696E672F4E616D696E67436F6E746578744578743A312E3000000000000200000000000000D0000102000000000931302E302E312E3200000DC8000000114A426F73732F4E616D696E672F726F6F74000000000000050000000000000008000000004A414300000000010000001C00000000000100010000000105010001000101090000000105010001000000210000004C000000000000000100000000000000240000001C0000007E00000000000000010000000931302E302E312E3200000DC9000000000000000000000000000000000000000000000000000000000000002000000004000000000000001F0000000400000003000000010000002000000000000000020000002000000004000000000000001F0000000400000003

    # Uncomment this out if no IIOP comunication is needed
    #java.naming.factory.initial=org.jboss.security.jndi.LoginInitialContextFactory
    #java.naming.provider.url=jnp://localhost:1099

    # this was commented out before
    #org.jnp.interfaces.NamingContextFactory

    java.naming.factory.url.pkgs=org.jboss.naming.client
    java.naming.security.principal=200
    java.naming.security.credentials=j2ee
    java.naming.security.protocol=client-login
    j2ee.clientName=bank-client



    I also added the java arguments mentioned by Francisco in the previous post so the jboss-build.xml file looks like the following for running the client.

    <!-- Run the standalone client -->

    ${java.class.path}

    <!-- The following vm args are needed for connecting the client via IIOP -->








    <!-- this was the one added for the bank example -->









    when I run the java client I get the following exception

    [java] javax.naming.NameNotFoundException [Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]
    [java] at com.sun.jndi.cosnaming.ExceptionMapper.mapException(ExceptionMapper.java:44)
    [java] at com.sun.jndi.cosnaming.CNCtx.callResolve(CNCtx.java:453)
    [java] at com.sun.jndi.cosnaming.CNCtx.lookup(CNCtx.java:492)
    [java] at com.sun.jndi.cosnaming.CNCtx.lookup(CNCtx.java:470)
    [java] at javax.naming.InitialContext.lookup(InitialContext.java:347)
    [java] at org.jboss.naming.client.java.javaURLContextFactory$EncContextProxy.invoke(javaURLContextFactory.java:114)
    [java] at $Proxy0.lookup(Unknown Source)
    [java] at javax.naming.InitialContext.lookup(InitialContext.java:347)
    [java] at com.sun.ebank.util.EJBGetter.getCustomerControllerHome(EJBGetter.java:69)
    [java] at com.sun.ebank.appclient.DataModel.(DataModel.java:126)
    [java] at com.sun.ebank.appclient.EventHandle.(EventHandle.java:52)
    [java] at com.sun.ebank.appclient.BankAdmin.main(BankAdmin.java:593)
    [java] Caused by: org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0
    [java] at org.omg.CosNaming.NamingContextPackage.NotFoundHelper.read(NotFoundHelper.java:72)
    [java] at org.omg.CosNaming._NamingContextStub.resolve(_NamingContextStub.java:251)
    [java] at com.sun.jndi.cosnaming.CNCtx.callResolve(CNCtx.java:440)
    [java] ... 10 more


    Can someone out there show me what I'm doing wrong? I'm stuck with this problem for more than a week and I ran out of options. Could this exception been caused by some security enforced in the bank's example?

    rakeshtl, if you resolved your problem can you share the solution with me or post it? I will really appreciate it.

    thanks in advance

    -Javier

  • 6. Re: Getting the JBoss naming service with corbaloc
    ShuiXin Zhang Newbie

    Can anyone help on this? I am facing the same issue. Thanks!