Java IDL or RMI-IIOP

Hi,
I am hoping someone can help me on this topic.
I have a corba client and I am going to implement a server in java.
I was told to use RMI-IIOP to implement the server such that clients
(corba or java) can send create/update/delete operation requests to the
server. On the other hand, the server needs to send notifications back
to the corba client side as a result of other unrelated operations. There is already an idl for the notification. In this case, how should I handle
the notification part? Am I supposed to use java idl in this scenario?
Any suggestions are welcome.
Thanks,
Pin

Yes you must use IDL for this as you can't construct a C++ ser ver for RMI/IIOP.

Similar Messages

  • Difference between Java IDL and RMI-IIOP

    Hi,
    I am new to CORBA / RMI and I am trying to clear my concepts a little bit. Suppose, we want to create a remote object that should be accesible from CORBA clients. Does anyone know what the difference is between creating this object as an RMI object (with RMI-IIOP) and using the java IDL?
    In other words, if I am not wrong, it is possible to write the object in java (pretty much like writting an RMI remore object), generate the IDL with rmic and then any CORBA client can access it provided it has the IDL.
    Are there any advantages in doing it the other way (explicitely instantiating an ORB in the code, etc) ?
    By the way, if we use the first choice (RMI-IIOP), when is the ORB getting called? Is it called by the Tie class, which is generated by rmic -iiop?
    Thanks!

    Visit this link
    http://java.sun.com/j2se/1.3/docs/guide/idl/jidlFAQ.html#java%20idl%20vs%20rmi-iiop

  • When we use RMI-IIOP?

    Dear,
    Can anyone tell me when we use RMI-IIOP? When we use RMI-IIOP and
    EJB? When will use JSP? When will use servlet?
    Sorry for that silly question, but i really want to know it?
    kurt

    As I know, If using RMI-IIOP, we have to handle lots of stuffs like
    connection pool, security...etc.
    Am I right?
    Kurt
    Tom Barnes <[email protected]> wrote in message
    news:[email protected]..
    >
    >
    Andy Piper wrote:
    RMI-IIOP is useful for:
    a) Interop, i.e. between different appservers
    b) C++ client integration
    Customers also sometimes want it because they have security
    restrictions on what protocols they can put through a firewall.
    It is also useful for light-weight Java clients. RMI-IIOP clients need
    not use the (large) weblogic.jar jar.
    Tom

  • RMI-IIOP Example for Java SE 6

    Hi.
    Can someone provide me an example (link or code) of how to write an RMI-IIOP remote object, bind it to jndi (glassfish) and then call it from within the glassfish application server (I'm calling from an EJB).
    The guide available at http://java.sun.com/javase/6/docs/technotes/guides/rmi-iiop/tutorial.html is unfortunately not helpful because it the code there does not work when binding the remote object in glassfish JNDI (using empty InitialContext constructor) as opposed to the orbd daemon that is described in the guide.
    Am I not allowed to bind RMI-IIOP objects in glassfish application server JNDI, i.e. do I have to use orbd?
    Do you have to generate stubs for the remote objects in Java SE6? The tutorial says to do it but the exception I get on glassfish application server is not from the _<interface-name>Stub.java but rather from <interface-name>_DynamicStub.java.
    Any help is greatly appreciated!

    Are you trying to create an RMI-IIOP server inside an
    Application Server (Glassfish)?I'm not really sure about how it all works but I don't think so. I am exporting my Remote objects (using PortableRemoteObject) from a standalone Java SE client app. Relating this to normal RMI I had assumed that this automatically started an RMI-IIOP server on an anonomous port, although I now see that the javadoc says that the export method only "Makes a server object ready to receive remote calls.", whatever that means. So if calling the export method doesn't start an RMI-IIOP server then I'm guessing I would have to start one, and then yes, if possible, I would like to do it in glassfish and avoid starting up more applications.
    I am guessing I am missing something fundamental here..
    The tutorial uses the JNDI Registry (tnameserv). (and
    it works fine)Is that what is automatically started when glassfish application server is started?
    Have you looked into using a Portable Object Adapter?No, I have not. I want to keep it as simple and close to regular RMI though, so if possible I would like to avoid POA.

  • RMI-IIOP, C++ and mobile code

    Hi,
    I'd like to know whether it is possible to use RMI-IIOP [1] to connect a Java component to a C++ component on a remote end and use "mobile code" [2]. In other words, a C++ client connects to a remote Java component, downloads a class file and executes it locally. On the flip side, a C++ component uploads a class file to a Java end for remote execution.
    I see much discussion about the value of RMI-IIOP for connecting Java and C++ components but I see little value for this if you lose the "mobile code" capability. What are the advantages of using RMI vs RMI-IIOP vs "web services"? Am I missing something?
    Thank you,
    Gili
    [1] http://java.sun.com/products/rmi-iiop/
    [2] http://en.wikipedia.org/wiki/Mobile_code

    I'd like to know whether it is possible to use RMI-IIOP [1] to connect a Java component to a C++ component on a remote endYes, provided you start with a Java interface and generate IDL from that.
    and use "mobile code" [2]. In other words, a C++ client connects to a remote Java component, downloads a class file and executes it locally. On the flip side, a C++ component uploads a class file to a Java end for remote execution.C++ can execute or create Java objects via JNI but that implies a JVM anyway at the C++ end, so why not just use Java? IOW it's a lot of trouble for nothing.
    I see much discussion about the value of RMI-IIOP for connecting Java and C++ components but I see little value for this if you lose the "mobile code" capability.All the rest of RMI and Corba is 'little'?

  • Gods:How can i implement callback in RMI-IIOP?

    Gods:
    In RMI-IIOP ,it is a Server-Client pattern.
    I wanna implement a Client1-Server-Client2 pattern .
    What can I do ?
    Can u give me code examples? thanks .

    Previous answer is incorrect & indeed quiteincoherent.
    How very polite.
    What ejp neglects to understand is that the client is
    not Java and cannot create a Java object.As the OP said nothing about non-Java clients, and neither did anybody else until now, I didn't 'neglect to understand' anything, I merely didn't address the issue. You introduced an assumption about 'a non-rmi client (hence the need to use iiop)', which is incoherent, and you're now conflating 'non-RMI' with 'non-Java', which is also incoherent. I don't accept that saying so is impolite.
    On the topic, all that any CORBA client has to do to provide a callback is to construct a CORBA server, in whatever way is appropriate for the environment, and pass it as a parameter. The RMI-IIOP restriction that the IDL interfaces must first be defined in Java still applies of course.
    EJP

  • Classcastexception with rmi-iiop

    Hi,
    I try the rmi-iiop example in examples/rmi_iiop/hello using Sun's JDK 1.3rc1 on Linux. I use weblogic.rmic to generate an IDL file from HelloImpl.class. Next, I use idlj (comes with the JDK) to generate those help .java files from IDL. Then, I compile these files and HelloClient.java. I start Weblogic(SP6) and launch HelloClient using the command,
    java examples.rmi_iiop.hello.HelloClient {long IOR number string}
    Weblogic server throws this exception when the client make a contact,
    Sun Dec 17 16:52:33 GMT+08:00 2000:<I> <WebLogicServer> WebLogic Server started
    Sun Dec 17 16:52:40 GMT+08:00 2000:<I> <ListenThread> Adding address: localhost/127.0.0.1 to licensed client list
    Sun Dec 17 16:52:40 GMT+08:00 2000:<E> <Adapter> Exception thrown by rmi server: [-8596339638698095515S127.0.0.1:[7001,7001,7002,7002,7001,-1]/8]
    java.lang.ClassCastException: examples.rmi_iiop.hello.HelloImpl
         at weblogic.cos.naming.NamingContextImpl.resolve(NamingContextImpl.java:138)
         at weblogic.cos.naming.NamingContext_WLSkel.invoke(NamingContext_WLSkel.java:53)
         at weblogic.rmi.extensions.BasicServerObjectAdapter.invoke(BasicServerObjectAdapter.java:347)
         at weblogic.rmi.extensions.BasicRequestHandler.handleRequest(BasicRequestHandler.java:69)
         at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:15)
         at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:135)
    Why there is a ClassCastException? If there a compatiblity problem with idlj that comes with the JDK? Please advise.

    Generally, this is a classpath problem. You must ensure that the classes that are produced by jidl are not in the WLS classpath; similarly, the RMI interfaces must not be visible to the java CORBA client.
    IMO, a java CORBA client is not a viable development platform.
    TH Lim wrote:
    Hi,
    I try the rmi-iiop example in examples/rmi_iiop/hello using Sun's JDK 1.3rc1 on Linux. I use weblogic.rmic to generate an IDL file from HelloImpl.class. Next, I use idlj (comes with the JDK) to generate those help .java files from IDL. Then, I compile these files and HelloClient.java. I start Weblogic(SP6) and launch HelloClient using the command,
    java examples.rmi_iiop.hello.HelloClient {long IOR number string}
    Weblogic server throws this exception when the client make a contact,
    Sun Dec 17 16:52:33 GMT+08:00 2000:<I> <WebLogicServer> WebLogic Server started
    Sun Dec 17 16:52:40 GMT+08:00 2000:<I> <ListenThread> Adding address: localhost/127.0.0.1 to licensed client list
    Sun Dec 17 16:52:40 GMT+08:00 2000:<E> <Adapter> Exception thrown by rmi server: [-8596339638698095515S127.0.0.1:[7001,7001,7002,7002,7001,-1]/8]
    java.lang.ClassCastException: examples.rmi_iiop.hello.HelloImpl
    at weblogic.cos.naming.NamingContextImpl.resolve(NamingContextImpl.java:138)
    at weblogic.cos.naming.NamingContext_WLSkel.invoke(NamingContext_WLSkel.java:53)
    at weblogic.rmi.extensions.BasicServerObjectAdapter.invoke(BasicServerObjectAdapter.java:347)
    at weblogic.rmi.extensions.BasicRequestHandler.handleRequest(BasicRequestHandler.java:69)
    at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:15)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:135)
    Why there is a ClassCastException? If there a compatiblity problem with idlj that comes with the JDK? Please advise.

  • Re: Errors compiling the rmi-iiop example.

    As I said, apparently, you are trying to compile the IDL client in java using the RMI client classes. THere are two problems with this:
    1-- you must compile the rmi class definitions into a directory that can be easily excluded from the class path at the time you compile the idl definitions.
    2-- the idl definitions and the resulting classes are useless wrt the rmi definitions and wls, so the resulting classes must be compiled into directories other than those used by wls and the rmi clients.
    Another way to look at this is as follows:
    To compile the rmi definitions, you do:
    set ORIGINALCLASSPATH=CLASSPATH
    set CLASSPATH=../fooclasses;$CLASSPATH
    javac -d ../fooclasses rmi/FooImpl.java
    Then,
    -- you compile the jrmp classes as:
    rmic -d ../jrmpclasses rmi.FooImpl
    -- you compile the weblogic classes as:
    java weblogic.rmic -d ../wlsclasses rmi.FooImpl
    that is, you are allowed to compile from the same implementation class so long as it is compliant
    -- you compile the rmi-iiop classes as:
    java weblogic.rmic -iiop -d ../rmiiiopclasses rmi.FooImpl
    that is, as with jrmp and wls, the rmi-iiop classes share the same base type definitions and implementation.
    However, the idl classes are another matter. To compile the idl classes, you must generate the idl, generate the java files and generate the idl class files into another, separate directory, one which does not include any of ../fooclasses, ../jrmpclasses, ../wlsclasses or ../rmiiiopclasses
    directories.
    That is,
    java weblogic.rmic -idlDirtecory ../idl ...
    set CLASSPATH=ORIGINALCLASSPATH
    set CLASSPATH=../idlclasses;CLASSPATH
    cd ../idl
    idl2java rmi/Foo.idl
    javac -d ../idl rmi/*.java
    Hope this helps...
    "Hallam, David [CAR:5e10:EXCH]" wrote:
    The problem you are having is that the compiler is picking up another copy of HelloWorld... see if you can run the compiler with verbose turned on and find where it is getting the interface from... or try using javap...So, here is the output when I compile in verbose mode:
    D:\weblogic>javac -verbose -d %WL_HOME%\myserver\corbaclient
    examples\rmi_iiop\h
    ello\*.java
    [parsing started examples\rmi_iiop\hello\_HelloWorldStub.java]
    [parsing completed 160ms]
    [parsing started examples\rmi_iiop\hello\HelloClient.java]
    [parsing completed 30ms]
    [parsing started examples\rmi_iiop\hello\HelloImpl.java]
    [parsing completed 0ms]
    [parsing started examples\rmi_iiop\hello\HelloWorld.java]
    [parsing completed 10ms]
    [parsing started examples\rmi_iiop\hello\HelloWorldHelper.java]
    [parsing completed 0ms]
    [parsing started examples\rmi_iiop\hello\HelloWorldHolder.java]
    [parsing completed 0ms]
    [parsing started examples\rmi_iiop\hello\HelloWorldOperations.java]
    [parsing completed 0ms]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/portable/ObjectImpl.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/lang/Object.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/Object.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/portable/IDLEntity.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/io/Serializable.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/portable/Delegate.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/lang/String.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/io/ObjectInputStream.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/io/ObjectOutputStream.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CosNaming/NameComponent.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CosNaming/NamingContextHelper.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CosNaming/NamingContext.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/ORB.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/rmi/RemoteException.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/lang/Exception.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/Any.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/TypeCode.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/portable/InputStream.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/portable/OutputStream.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/portable/Streamable.class)]
    [checking examples.rmi_iiop.hello._HelloWorldStub]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/portable/ApplicationException.cl
    ass)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/lang/Throwable.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/MARSHAL.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/SystemException.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/lang/RuntimeException.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/portable/RemarshalException.clas
    s)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/io/InputStream.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/io/IOException.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/io/OutputStream.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/lang/Error.class)]
    [wrote
    D:\weblogic\myserver\corbaclient\examples\rmi_iiop\hello\_HelloWorldStub.
    class]
    [checking examples.rmi_iiop.hello.HelloWorld]
    [wrote
    D:\weblogic\myserver\corbaclient\examples\rmi_iiop\hello\HelloWorld.class
    [checking examples.rmi_iiop.hello.HelloWorldOperations]
    [wrote
    D:\weblogic\myserver\corbaclient\examples\rmi_iiop\hello\HelloWorldOperat
    ions.class]
    [checking examples.rmi_iiop.hello.HelloClient]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/lang/System.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/io/PrintStream.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/io/FilterOutputStream.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CosNaming/NamingContextOperations.clas
    s)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/BAD_PARAM.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CosNaming/NamingContextPackage/NotFoun
    d.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/UserException.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CosNaming/NamingContextPackage/CannotP
    roceed.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CosNaming/NamingContextPackage/Invalid
    Name.class)]
    [wrote
    D:\weblogic\myserver\corbaclient\examples\rmi_iiop\hello\HelloClient.clas
    s]
    [checking examples.rmi_iiop.hello.HelloImpl]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/Policy.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/SetOverrideType.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/DomainManager.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/Context.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/NVList.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/NamedValue.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/ExceptionList.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/ContextList.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/Request.class)]
    examples\rmi_iiop\hello\HelloImpl.java:12:
    examples.rmi_iiop.hello.HelloImpl sho
    uld be declared abstract; it does not define isa(java.lang.String) in
    examples
    .rmi_iiop.hello.HelloImpl
    public class HelloImpl implements HelloWorld {
    ^
    [loading D:\jdk1.3\jre\lib\rt.jar(javax/naming/Context.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(javax/naming/InitialContext.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(javax/naming/Name.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/lang/Comparable.class)]
    [checking examples.rmi_iiop.hello.HelloWorldHelper]
    [checking examples.rmi_iiop.hello.HelloWorldHolder]
    [total 1301ms]
    1 error[att1.html]

    test
    "Hallam, David [CAR:5e10:EXCH]" wrote:
    Eduardo,
    These directions worked perfectly, thank-you. One point though, this is
    COMPLETELY different to the directions on the index.html page in the
    examples directory.
    Regards,
    David Hallam.
    Eduardo Ceballos wrote:
    As I said, apparently, you are trying to compile the IDL client in
    java using the RMI client classes. THere are two problems with this:
    1-- you must compile the rmi class definitions into a directory that
    can be easily excluded from the class path at the time you compile the
    idl definitions.
    2-- the idl definitions and the resulting classes are useless wrt the
    rmi definitions and wls, so the resulting classes must be compiled
    into directories other than those used by wls and the rmi clients.
    Another way to look at this is as follows:
    To compile the rmi definitions, you do:
    set ORIGINALCLASSPATH=CLASSPATH
    set CLASSPATH=../fooclasses;$CLASSPATH
    javac -d ../fooclasses rmi/FooImpl.java
    Then,
    -- you compile the jrmp classes as:
    rmic -d ../jrmpclasses rmi.FooImpl
    -- you compile the weblogic classes as:
    java weblogic.rmic -d ../wlsclasses rmi.FooImpl
    that is, you are allowed to compile from the same implementation class
    so long as it is compliant
    -- you compile the rmi-iiop classes as:
    java weblogic.rmic -iiop -d ../rmiiiopclasses rmi.FooImpl
    that is, as with jrmp and wls, the rmi-iiop classes share the same
    base type definitions and implementation.
    However, the idl classes are another matter. To compile the idl
    classes, you must generate the idl, generate the java files and
    generate the idl class files into another, separate directory, one
    which does not include any of ../fooclasses, ../jrmpclasses,
    ../wlsclasses or ../rmiiiopclasses directories.
    That is,
    java weblogic.rmic -idlDirtecory ../idl ...
    set CLASSPATH=ORIGINALCLASSPATH
    set CLASSPATH=../idlclasses;CLASSPATH
    cd ../idl
    idl2java rmi/Foo.idl
    javac -d ../idl rmi/*.java
    Hope this helps...
    "Hallam, David [CAR:5e10:EXCH]" wrote:
    The problem you are having is that the compiler is picking upanother copy of HelloWorld... see if you can run the compiler with
    verbose turned on and find where it is getting the interface from...
    or try using javap...
    So, here is the output when I compile in verbose mode:
    D:\weblogic>javac -verbose -d %WL_HOME%\myserver\corbaclient
    examples\rmi_iiop\h
    ello\*.java
    [parsing started examples\rmi_iiop\hello\_HelloWorldStub.java]
    [parsing completed 160ms]
    [parsing started examples\rmi_iiop\hello\HelloClient.java]
    [parsing completed 30ms]
    [parsing started examples\rmi_iiop\hello\HelloImpl.java]
    [parsing completed 0ms]
    [parsing started examples\rmi_iiop\hello\HelloWorld.java]
    [parsing completed 10ms]
    [parsing started examples\rmi_iiop\hello\HelloWorldHelper.java]
    [parsing completed 0ms]
    [parsing started examples\rmi_iiop\hello\HelloWorldHolder.java]
    [parsing completed 0ms]
    [parsing started examples\rmi_iiop\hello\HelloWorldOperations.java]
    [parsing completed 0ms]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/portable/ObjectImpl.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/lang/Object.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/Object.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/portable/IDLEntity.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/io/Serializable.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/portable/Delegate.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/lang/String.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/io/ObjectInputStream.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/io/ObjectOutputStream.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CosNaming/NameComponent.class)]
    [loading
    D:\jdk1.
    \jre\lib\rt.jar(org/omg/CosNaming/NamingContextHelper.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CosNaming/NamingContext.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/ORB.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/rmi/RemoteException.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/lang/Exception.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/Any.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/TypeCode.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/portable/InputStream.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/portable/OutputStream.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/portable/Streamable.class)]
    [checking examples.rmi_iiop.hello._HelloWorldStub]
    [loading
    D:\jdk1.
    \jre\lib\rt.jar(org/omg/CORBA/portable/ApplicationException.cl
    ass)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/lang/Throwable.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/MARSHAL.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/SystemException.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/lang/RuntimeException.class)]
    [loading
    D:\jdk1.
    \jre\lib\rt.jar(org/omg/CORBA/portable/RemarshalException.clas
    s)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/io/InputStream.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/io/IOException.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/io/OutputStream.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/lang/Error.class)]
    [wrote
    D:\web
    ogic\myserver\corbaclient\examples\rmi_iiop\hello\_HelloWorldStub.
    class]
    [checking examples.rmi_iiop.hello.HelloWorld]
    [wrote
    D:\web
    ogic\myserver\corbaclient\examples\rmi_iiop\hello\HelloWorld.class
    [checking examples.rmi_iiop.hello.HelloWorldOperations]
    [wrote
    D:\web
    ogic\myserver\corbaclient\examples\rmi_iiop\hello\HelloWorldOperat
    ions.class]
    [checking examples.rmi_iiop.hello.HelloClient]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/lang/System.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/io/PrintStream.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/io/FilterOutputStream.class)]
    [loading
    D:\jdk1.
    \jre\lib\rt.jar(org/omg/CosNaming/NamingContextOperations.clas
    s)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/BAD_PARAM.class)]
    [loading
    D:\jdk1.
    \jre\lib\rt.jar(org/omg/CosNaming/NamingContextPackage/NotFoun
    d.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/UserException.class)]
    [loading
    D:\jdk1.
    \jre\lib\rt.jar(org/omg/CosNaming/NamingContextPackage/CannotP
    roceed.class)]
    [loading
    D:\jdk1.
    \jre\lib\rt.jar(org/omg/CosNaming/NamingContextPackage/Invalid
    Name.class)]
    [wrote
    D:\web
    ogic\myserver\corbaclient\examples\rmi_iiop\hello\HelloClient.clas
    s]
    [checking examples.rmi_iiop.hello.HelloImpl]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/Policy.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/SetOverrideType.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/DomainManager.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/Context.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/NVList.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/NamedValue.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/ExceptionList.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/ContextList.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/Request.class)]
    examples\rmi_iiop\hello\HelloImpl.java:12:
    examples.rmi_iiop.hello.HelloImpl sho
    uld be declared abstract; it does not define isa(java.lang.String)
    in
    examples
    .rmi_iiop.hello.HelloImpl
    public class HelloImpl implements HelloWorld {
    ^
    [loading D:\jdk1.3\jre\lib\rt.jar(javax/naming/Context.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(javax/naming/InitialContext.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(javax/naming/Name.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/lang/Comparable.class)]
    [checking examples.rmi_iiop.hello.HelloWorldHelper]
    [checking examples.rmi_iiop.hello.HelloWorldHolder]
    [total 1301ms]
    1 error
    Developer Relations Engineer
    BEA Support

  • RMI/IIOP HelloWorld problem

    I saw this topic in an old thread but couldn't find the answer. My
    problem was the same, the client app was stuck at the line
    obj = nc.resolve(path);
    Could you post your solution if you know the answer to this problem.
    Thanks a lot.

    Yes, you are right. I'm currently using jdk1.3. Is there a fix or do I
    have to go back to jdk1.2? Thanks a lot.
    Regards,
    Eduardo Ceballos wrote:
    You must run under jdk 1.3.
    Jim Hurd wrote:
    I did not see the line
    Thu Aug 03 11:33:52 PDT 2000:<I> <WebLogicServer> IIOP subsystem
    enabled.
    I think that was the problem. How do I fix that?
    Thank you very much.
    Eduardo Ceballos wrote:
    I tried every combination of hostname/ip address I could think of,
    but I don't see that problem... could you confirm that the WLS log
    listen thread entry is... should be something like:
    Thu Aug 03 11:34:06 PDT 2000:<I> <ListenThread> Listening on port:
    7001
    Also, does the first line of your log say:
    Thu Aug 03 11:33:52 PDT 2000:<I> <WebLogicServer> IIOP subsystem
    enabled.
    Jim Hurd wrote:
    Hi Eduardo,
    I tried the rmi-iiop client SimpleHelloClient example that you
    posted (with hostname and port modified according to my setup)
    and I got this error while trying to get the InitialContext (at
    line Context ic = new InitialContext(env);
    Exception in thread "main" javax.naming.CommunicationException:
    Cannot connect to ORB. Root exception is
    org.omg.CORBA.COMM_FAILURE: minor code: 1 completed:
    Maybe
    at
    com.sun.corba.se.internal.iiop.IIOPConnection.purge_calls(Unknown
    Source)
    at
    com.sun.corba.se.internal.iiop.ReaderThread.run(Unknown Source)
    Here is my setup
    env.put("java.naming.factory.initial","com.sun.jndi.cosnaming.CNCtxFactory");
    env.put("java.naming.provider.url", "iiop://127.0.0.1:7001");
    Context ic = new InitialContext(env);
    Thanks a lot
    Eduardo Ceballos wrote:
    Here's the html version.. maybe clearer
    Eduardo Ceballos wrote:
    As I said, apparently, you are trying to compile the IDL
    client in java using the RMI client classes. THere are two
    problems with this:
    1-- you must compile the rmi class definitions into a
    directory that can be easily excluded from the class path at
    the time you compile the idl definitions.
    2-- the idl definitions and the resulting classes are useless
    wrt the rmi definitions and wls, so the resulting classes must
    be compiled into directories other than those used by wls and
    the rmi clients.
    Another way to look at this is as follows:
    To compile the rmi definitions, you do:
    set ORIGINALCLASSPATH=CLASSPATH
    set CLASSPATH=../fooclasses;$CLASSPATH
    javac -d ../fooclasses rmi/FooImpl.java
    Then,
    -- you compile the jrmp classes as:
    rmic -d ../jrmpclasses rmi.FooImpl
    -- you compile the weblogic classes as:
    java weblogic.rmic -d ../wlsclasses rmi.FooImpl
    that is, you are allowed to compile from the same
    implementation class so long as it is compliant
    -- you compile the rmi-iiop classes as:
    java weblogic.rmic -iiop -d ../rmiiiopclasses rmi.FooImpl
    that is, as with jrmp and wls, the rmi-iiop classes share the
    same base type definitions and implementation.
    However, the idl classes are another matter. To compile the
    idl classes, you must generate the idl, generate the java
    files and generate the idl class files into another, separate
    directory, one which does not include any of ../fooclasses,
    ../jrmpclasses, ../wlsclasses or ../rmiiiopclasses
    directories.
    That is,
    java weblogic.rmic -idlDirtecory ../idl ...
    set CLASSPATH=ORIGINALCLASSPATH
    set CLASSPATH=../idlclasses;CLASSPATH
    cd ../idl
    idl2java rmi/Foo.idl
    javac -d ../idl rmi/*.java
    Hope this helps...
    "Hallam, David [CAR:5e10:EXCH]" wrote:
    The problem you are having is that the compiler is pickingup another copy of HelloWorld... see if you can run the
    compiler with verbose turned on and find where it is getting
    the interface from... or try using javap...
    So, here is the output when I compile in verbose mode:
    D:\weblogic>javac -verbose -d %WL_HOME%\myserver\corbaclient
    examples\rmi_iiop\h
    ello\*.java
    [parsing started
    examples\rmi_iiop\hello\_HelloWorldStub.java]
    [parsing completed 160ms]
    [parsing started examples\rmi_iiop\hello\HelloClient.java]
    [parsing completed 30ms]
    [parsing started examples\rmi_iiop\hello\HelloImpl.java]
    [parsing completed 0ms]
    [parsing started examples\rmi_iiop\hello\HelloWorld.java]
    [parsing completed 10ms]
    [parsing started
    examples\rmi_iiop\hello\HelloWorldHelper.java]
    [parsing completed 0ms]
    [parsing started
    examples\rmi_iiop\hello\HelloWorldHolder.java]
    [parsing completed 0ms]
    [parsing started
    examples\rmi_iiop\hello\HelloWorldOperations.java]
    [parsing completed 0ms]
    [loading
    D:\jdk1.
    \jre\lib\rt.jar(org/omg/CORBA/portable/ObjectImpl.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/lang/Object.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/Object.class)]
    [loading
    D:\jdk1.
    \jre\lib\rt.jar(org/omg/CORBA/portable/IDLEntity.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(java/io/Serializable.class)]
    [loading
    D:\jdk1.
    \jre\lib\rt.jar(org/omg/CORBA/portable/Delegate.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/lang/String.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(java/io/ObjectInputStream.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(java/io/ObjectOutputStream.class)]
    [loading
    D:\jdk1.
    \jre\lib\rt.jar(org/omg/CosNaming/NameComponent.class)]
    [loading
    D:\jdk1.
    \jre\lib\rt.jar(org/omg/CosNaming/NamingContextHelper.class)]
    [loading
    D:\jdk1.
    \jre\lib\rt.jar(org/omg/CosNaming/NamingContext.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/ORB.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(java/rmi/RemoteException.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(java/lang/Exception.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/Any.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/TypeCode.class)]
    [loading
    D:\jdk1.
    \jre\lib\rt.jar(org/omg/CORBA/portable/InputStream.class)]
    [loading
    D:\jdk1.
    \jre\lib\rt.jar(org/omg/CORBA/portable/OutputStream.class)]
    [loading
    D:\jdk1.
    \jre\lib\rt.jar(org/omg/CORBA/portable/Streamable.class)]
    [checking examples.rmi_iiop.hello._HelloWorldStub]
    [loading
    D:\jdk1.
    \jre\lib\rt.jar(org/omg/CORBA/portable/ApplicationException.cl
    ass)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(java/lang/Throwable.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/MARSHAL.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/SystemException.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(java/lang/RuntimeException.class)]
    [loading
    D:\jdk1.
    \jre\lib\rt.jar(org/omg/CORBA/portable/RemarshalException.clas
    s)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(java/io/InputStream.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(java/io/IOException.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(java/io/OutputStream.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/lang/Error.class)]
    [wrote
    D:\web
    ogic\myserver\corbaclient\examples\rmi_iiop\hello\_HelloWorldStub.
    class]
    [checking examples.rmi_iiop.hello.HelloWorld]
    [wrote
    D:\web
    ogic\myserver\corbaclient\examples\rmi_iiop\hello\HelloWorld.class
    [checking examples.rmi_iiop.hello.HelloWorldOperations]
    [wrote
    D:\web
    ogic\myserver\corbaclient\examples\rmi_iiop\hello\HelloWorldOperat
    ions.class]
    [checking examples.rmi_iiop.hello.HelloClient]
    [loading D:\jdk1.3\jre\lib\rt.jar(java/lang/System.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(java/io/PrintStream.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(java/io/FilterOutputStream.class)]
    [loading
    D:\jdk1.
    \jre\lib\rt.jar(org/omg/CosNaming/NamingContextOperations.clas
    s)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/BAD_PARAM.class)]
    [loading
    D:\jdk1.
    \jre\lib\rt.jar(org/omg/CosNaming/NamingContextPackage/NotFoun
    d.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/UserException.class)]
    [loading
    D:\jdk1.
    \jre\lib\rt.jar(org/omg/CosNaming/NamingContextPackage/CannotP
    roceed.class)]
    [loading
    D:\jdk1.
    \jre\lib\rt.jar(org/omg/CosNaming/NamingContextPackage/Invalid
    Name.class)]
    [wrote
    D:\web
    ogic\myserver\corbaclient\examples\rmi_iiop\hello\HelloClient.clas
    s]
    [checking examples.rmi_iiop.hello.HelloImpl]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/Policy.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/SetOverrideType.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/DomainManager.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/Context.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/NVList.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/NamedValue.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/ExceptionList.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/ContextList.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(org/omg/CORBA/Request.class)]
    examples\rmi_iiop\hello\HelloImpl.java:12:
    examples.rmi_iiop.hello.HelloImpl sho
    uld be declared abstract; it does not define
    isa(java.lang.String) in
    examples
    .rmi_iiop.hello.HelloImpl
    public class HelloImpl implements HelloWorld {
    ^
    [loading
    D:\jdk1.3\jre\lib\rt.jar(javax/naming/Context.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(javax/naming/InitialContext.class)]
    [loading D:\jdk1.3\jre\lib\rt.jar(javax/naming/Name.class)]
    [loading
    D:\jdk1.3\jre\lib\rt.jar(java/lang/Comparable.class)]
    [checking examples.rmi_iiop.hello.HelloWorldHelper]
    [checking examples.rmi_iiop.hello.HelloWorldHolder]
    [total 1301ms]
    1 error
    [att1.html]

  • ClassCastException for RMI-IIOP client hitting CORBA server

    I am writing a RMI-IIOP client to connect to an existing CORBA C++ server. I started out with writing a RMI Interface mimicking the IDL and then converting into a stub using rmic -iiop option. I then use COSNaming to connect to the server. When I narrow the reference using PortableRemoteObject.narrow(), I get a ClassCastException. Probably because the object that I get from naming service will be a CORBA object which cannot be casted to RMI Interface object.
    Exception in thread "main" java.lang.ClassCastException
    at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:229)
    at javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:137)
    at com.att.cswd.poc.RMIIIOPClient.IMSConnect(RMIIIOPClient.java:46)
    at com.att.cswd.poc.RMIIIOPClient.main(RMIIIOPClient.java:27)
    Caused by: java.lang.ClassCastException: Object is not of remote type com.att.cswd.poc.CORBAInterface
    at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:221)
    ... 3 more
    Code
                                    CORBAInterface ims;
              String tranCode="CRTUN130";
              byte[][] input_segs = null;
               try {
                    Hashtable hm = new Hashtable();
                    hm.put("java.naming.factory.initial", "com.sun.jndi.cosnaming.CNCtxFactory");
                    hm.put("java.naming.provider.url", "corbaloc:iiop:BSYS.MVS.SC.COM:14050/NameService");
                    Context initialNamingContext = new InitialContext(hm);
                   Object objref = initialNamingContext.lookup("O2K/AdapterInterface");
                   ims = (CORBAInterface) PortableRemoteObject.narrow(objref, CORBAInterface.class);
                   byte output_segs[][] = ims.run_transaction_binary(tranCode, input_segs);               
                   System.out.println ("Response is " + output_segs);
              } catch (NamingException e) {
                   e.printStackTrace();
              } catch (RemoteException e) {
                   e.printStackTrace();
              }

    I am writing a RMI-IIOP client to connect to an existing CORBA C++ serverAs it says in [the Javadoc|http://java.sun.com/j2se/1.5.0/docs/guide/rmi-iiop/rmiiiopUsing.html#when], you can't do that. For RMI/IIOP you have to start with a PortableRemoteObject and rmic -iiop. You can use a C++ client to that but you can't use an RMI/IIOP client to a C++ server.
    Use IDLJ.

  • Help!!!I can not pass the Logger example of Rmi-iiOP

    I am using the j2sdk1.4.0 and j2sdkee1.3.1 as back ground.And use Win2000
    I try the rmi-iiop example given by Sun.But it doesn't work.
    Firstly , compile Logger.java LoggerHome.java LogMessage.java LoggerEJB.java to class
    javac -classpath "c:\j2sdkee1.3.1\lib\j2ee.jar;c:\wytestejb\" Logger.java LoggerHome.java LogMessage.java LoggerEJB.java
    that was ok.
    Then I draw idl from that just like
    rmic -idl -noValueMethods -classpath "c:\j2sdkee1.3.1\lib\j2ee.jar;c:\wytestejb\" Logger LoggerHome
    then I got Logger.idl LoggerHome.idl javax\ejb\...idl java\lang\...idl
    After that I create one directory named client.copying all idl file into it,I transfered idl to java using
    idlj -i C:\j2sdk1.4.0\lib -i c:\wytestejb\client -i C:\j2sdkee1.3.1\lib -emitAll -fclient Logger.idl
    idlj -i C:\j2sdk1.4.0\lib -i c:\wytestejb\client -i C:\j2sdkee1.3.1\lib -emitAll -fclient LoggerHome.idl
    Then I got *.java such as Logger.java LoggerHome.java .....java java\lang\***.class javax\ejb\****.class
    I put the LogClient.java in this directory and compile *.java like
    C:\wytestejb\client>javac -classpath "c:\j2sdkee1.3.1\lib\j2ee.jar;c:\wytestejb\
    client;c:\j2sdk1.4.0\lib;c:\j2sdk1.4.0\bin" *.java
    And I got
    c:\wytestejb\client\java\lang\_Exception.java:23: cannot resolve symbol
    symbol : method _read  (org.omg.CORBA.portable.InputStream)
    location: class java.lang.Throwable
    super._read (istream);
    ^
    c:\wytestejb\client\java\lang\_Exception.java:28: cannot resolve symbol
    symbol : method _write  (org.omg.CORBA.portable.OutputStream)
    location: class java.lang.Throwable
    super._write (ostream);
    ^
    LogClient.java:20: cannot resolve symbol
    symbol : method println (java.lang.String)
    location: interface java.io.PrintStream
    System.out.println("Looking for: " + loggerHomeURL);
    ^
    LogClient.java:38: cannot resolve symbol
    symbol : method println (java.lang.String)
    location: interface java.io.PrintStream
    System.out.println("Logging...");
    ^
    LogClient.java:47: cannot resolve symbol
    symbol : method println (java.lang.String)
    location: interface java.io.PrintStream
    System.out.println("Done");
    ^
    LogClient.java:59: cannot resolve symbol
    symbol : method println (java.lang.String)
    location: interface java.io.PrintStream
    System.out.println("Args: corbaname URL of LoggerHome");
    ^
    LogClient.java:66: cannot resolve symbol
    symbol : method printStackTrace ()
    location: class java.lang.Throwable
    t.printStackTrace();
    ^
    7 errors
    C:\wytestejb\client>

    By the way
    My java file is as
    Logger.java
    The file Logger.java is the enterprise bean's remote interface, and as such, it extends EJBObject . A remote interface provides the remote client view of an EJB object and defines the business methods callable by a remote client.
    //Code Example 1: Logger.java
    package ejbinterop;
    import javax.ejb.EJBObject;
    import java.rmi.RemoteException;
    * Accepts simple String log messages and prints
    * them on the server.
    public interface Logger extends EJBObject
    * Logs the given message on the server with
    * the current server time.
    void logString(String message) throws RemoteException;
    LoggerHome.java
    The file LoggerHome.java extends EJBHome . The EJBHome interface must be extended by all EJB component's remote home interfaces. A home interface defines the methods that allow a remote client to create, find, and remove EJB objects, as well as home business methods that are not specific to an EJB instance.
    //Code Example 2: LoggerHome.java
    package ejbinterop;
    import java.rmi.RemoteException;
    import javax.ejb.EJBHome;
    import javax.ejb.CreateException;
    public interface LoggerHome extends EJBHome
    Logger create() throws RemoteException, CreateException;
    LoggerEJB.java
    The file LoggerEJB.java contains the code for a session bean. A session bean is an enterprise bean that is created by a client and that usually exists only for the duration of a single client-server session. A session bean performs operations such as calculations or accessing a database for the client. In this example, the enterprise bean accepts simple String log messages from the client and prints them on the server.
    //LoggerEJB.java
    package ejbinterop;
    import javax.ejb.*;
    import java.util.*;
    import java.rmi.*;
    import java.io.*;
    * Accepts simple String log messages and prints
    * them on the server.
    public class LoggerEJB implements SessionBean {
    public LoggerEJB() {}
    public void ejbCreate() {}
    public void ejbRemove() {}
    public void ejbActivate() {}
    public void ejbPassivate() {}
    public void setSessionContext(SessionContext sc) {}
    * Logs the given message on the server with
    * the current server time.
    public void logString(String message) {
    LogMessage msg = new LogMessage(message);
    System.out.println(msg);
    LogMessage.java
    The file LogMessage.java takes the current date and time, creates a formatted String showing the message, and prints the message to the server.
    //LogMessage.java
    package ejbinterop;
    import java.io.Serializable;
    import java.util.Date;
    import java.text.*;
    * Simple message class that handles pretty
    * printing of log messages.
    public class LogMessage implements Serializable
    private String message;
    private long datetime;
    * Constructor taking the message. This will
    * take the current date and time.
    public LogMessage(String msg) {
    message = msg;
    datetime = (new Date()).getTime();
    * Creates a formatted String showing the message.
    public String toString() {
    StringBuffer sbuf = new StringBuffer();
    DateFormat dformat
    = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,
         DateFormat.LONG);
    FieldPosition fpos = new
    FieldPosition(DateFormat.DATE_FIELD);
    dformat.format(new Date(datetime), sbuf, fpos);
    sbuf.append(": ");
    sbuf.append(message);
    return sbuf.toString();
    //Code Example: LogClient.java
    package ejbinterop;
    import java.rmi.RemoteException;
    import javax.rmi.*;
    import java.io.*;
    import javax.naming.*;
    import javax.ejb.*;
    * Simple Java RMI-IIOP client that uses an EJB component.
    public class LogClient
    * Given a corbaname URL for a LoggerHome,
    * log a simple String message on the server.
    public static void run(String loggerHomeURL)
    throws CreateException, RemoveException,
    RemoteException, NamingException
    System.out.println("Looking for: " + loggerHomeURL);
    // Create an InitialContext. This will use the
    // CosNaming provider we will specify at runtime.
    InitialContext ic = new InitialContext();
    // Lookup the LoggerHome in the naming context
    // pointed to by the corbaname URL
    Object homeObj = ic.lookup(loggerHomeURL);
    // Perform a safe downcast
    LoggerHome home
    = (LoggerHome)PortableRemoteObject.narrow(homeObj,
         LoggerHome.class);
    // Create a Logger EJB reference
    Logger logger = home.create();
    System.out.println("Logging...");
    // Log our message
    logger.logString("Message from a Java RMI-IIOP client");
    // Tell the application server we won't use this
    // EJB reference anymore
    logger.remove();
    System.out.println("Done");
    * Simple main method to check arguments and handle
    * exceptions.
    public static void main(String args[])
    try {
    if (args.length != 1) {
    System.out.println("Args: corbaname URL of LoggerHome");
    System.exit(1);
    LogClient.run(args[0]);
    } catch (Throwable t) {
    t.printStackTrace();
    System.exit(1);

  • C++/RMI-IIOP

    Hello,
    I am fairly new to the RMI-IIOP technology. I basically have remote objects written in Java. I wish to call them via a C++ client. Are the following steps correct?
    1. compile the remote object classes
    1. rmic -iiop on the remote object to get the Stub and Tie classes
    2. rmic -idl on the remote object to get the IDL files
    3. run idl->C++ compiler to get the C++ stubs
    4. write a C++ client that calls the remote object
    5. start the orb
    6. start the server
    7. run the client
    Any help/ pointer to sample code will be greatly applreciated
    Thanks
    AP

    http://java.sun.com/j2se/1.4.1/docs/guide/rmi-iiop/interop.html

  • RMI-IIOP specification

    I look out for an exact specification of the RMI-IIOP,similarly to the
    specification of the RMI (http://java.sun.com/products/jdk/rmi/).
    My special interest concerns the 'Parameter Transmission'. Probably there
    are no hardly differences between RMI and RMI-IIOP, but I would like to know
    it exactly.
    Thanks in advance,
    Frank

    I'm not sure I understand what it is that you are looking for. The IIOP
    specification is defined by OMG. How Java types map to IDL types is defined by
    the first spec on this site. How IDL valuetypes map to IIOP is defined on the
    second.
    I do not believe that there is a separate specification for RMI/IIOP since it
    really depends on these other OMG specifications. There is a separate
    specification for EJB-CORBA interoperability at:
    http://java.sun.com/products/ejb/docs.html
    Hope this helps,
    Robert
    "Frank Thomas Aßmann" wrote:
    Hi Robert!
    Thank you, but I knew that site before. It only contains the two
    specifications of the Object Management Group, on which RMI over IIOP is
    based on. I search for an exact specification of the RMI-IIOP itself.
    Thanks,
    Frank
    "Robert Patrick" wrote
    http://java.sun.com/products/rmi-iiop/
    "Frank Thomas Aßmann" wrote:
    I look out for an exact specification of the RMI-IIOP,similarly to the
    specification of the RMI (http://java.sun.com/products/jdk/rmi/).
    My special interest concerns the 'Parameter Transmission'. Probably
    there
    are no hardly differences between RMI and RMI-IIOP, but I would like toknow
    it exactly.

  • RMI-IIOP and CORBA version

    Hello all,
    I am new to CORBA (I understand the concepts, but have never actually programmed anything with it).
    I need to write some software in Java that talks to an existing system that has CORBA interfaces. It seems to me that using RMI-IIOP will be a good solution, but in the RMI-IIOP documentation, I have read that it will only work with CORBA version 2.3.
    The existing system works with CORBA version 2.0 (as far as I know). Does this mean that I will not be able to use RMI-IIOP at all, or are there some workarounds to get it working with CORBA 2.0?
    What would be my alternatives if I cannot use RMI-IIOP because of the version difference?
    regards
    Jesper

    Hi
    I have not tried that kombination myself so can not tell you about workarounds, I can tell you that the main difference, in respect to Java, between 2.0 and 2.3 is that the Objects by Value protocoll is incorporated into CORBA 2.3. This extension was specifically designed and added to make RMI-IIOP possible, or atleast more user friendly.
    The first workaround I would try is making comunicaitons interfaces built from only basic variable types, but I can not say if it would work. Besides if you are not defining new interfaces (IDL files) you will probably have to work with Java IDL anyway since RMI-IIOP (atleast in jdk1.3) seemed like a one way conversion, Java -> IDL.
    Hope this helps
    //Samuel

  • Difference between RMI-IIOP and CORBA-IIOP

    Hello,
    What is the difference between RMI-IIOP and CORBA-IIOP?
    Thanks
    Larry

    Lawrence Manickam <[email protected]> writes:
    What is the difference between RMI-IIOP and CORBA-IIOP? RMI-IIOP is the protocol represented by the mapping of Java RMI
    artifacts to IDL, i.e. you start with Java and use the RMI programming
    model. CORBA / IIOP is really just the protocol used for IDL sourced
    objects, i.e. you start with IDL and use the CORBA programming model.
    andy

Maybe you are looking for

  • Urgent!! issue in shipping page

    Hi All, We have added create address page in shipping page, but when I click on continue check out, its not able to proceed to next page, getting error like "Address Line 1 is requried", How can we fix it ? Please suggest me asap Thanks

  • Unable to open Canon 650D Raw files in PS CS5 [was:Camera Raw]

    Hi everyone I have tried to downlaod my raw files CR2 to my photoshop cs5 but it keep saying "Could not complete your request because the file appears to be from a camera model which is not supported by the installed version of camera raw." My camera

  • C'ant connect to my old computer from my new.

    I am new in networking. There is my problem: I am using 2( I-mac). One is a G OS 10.5.8 and the other is a 3.33 GHz Intel Core 2 Duo 10.6.2. I created a local network through a wireless Lynksys router. On each computer I selected (share files) on the

  • Servlet deployment in 9i AS

    while running the makeit.bat file in $ORACLE_HOME\javavm\demo\demo\examples\servlets\basic\helloworld\makeit.bat i got an error /scottRoot/contexts/default is not a Servlet Context can u pls help how to solve this ?

  • How to cause sub-VI's to become unchangeab​le after interactio​n?

    My current project is based on a Tic Tac Toe Human vs Human project. I have the basic set up of the gameplay but have a issues in two main areas. 1. How do I set it so that once a button is pressed, it cannot be unpressed. Effectively locking it in p