Rmic -iiop error
Hi all,
when trying to compile my RMI implementation class with rmic -iiop I get the following exception:
[918] rmic -iiop com.siemens.mobile.omip.core.oam.v10>
error: java.rmi.server.RemoteServer is not a valid remote implementation: has no remote interfaces.
1 errorWithout option -iiop rmic works fine (also my RMI object does).
Any hints welcome ...
Regards, Hounce
My implementation extends PortableRemoteObject.
But your right, this was the problem, because my ant-task <rmic> also compiled some older stuff (still derived from UnicastRemoteObject), therefore I recognized no change in the error message when introducing the PortableRemoteObject like stated in the RMI-IIOP Programmer's Guide http://java.sun.com/j2se/1.3/docs/guide/rmi-iiop/rmi_iiop_pg.html.
Thanks a lot,
Hounce
Similar Messages
-
Rmic -iiop not creating _Stub
Hi,
I am compiling in 1.4 using rmic -iiop - it is not creating the Stub class (it only creates the Tie class). Anything I need to do for that to happen.
As a consequence when error when I run my RMI Server
Error starting service: RemoteException- java.rmi.StubNotFoundException: Stub class not found:
Thanks a lot,
SanjayI am doing that:
public interface IAccountService extends java.rmi.Remote {....
public class AccountServiceImpl implements IAccountService {....
I am compiling :
rmic -iiop AccountServiceImpl
This creates the AccountServiceImplTie.class but not the _Stub
Thanks a lot,
Sanjay -
Jdk1.3.1 bug with rmic -iiop?
Hi
Does anyone know whether there is a bug with the rmic -iiop feature of jdk1.3.1?
When I try to use rmic -iiop, with the -classpath option, it throws a java.lang.ClassFormatError.
e.g.
rmic -classpath .;C\irfeclient\requestrecord.jar -iiop com.ch.irfe.curvegen.xtools.CurveGenImpl
If I leave out the current directory when setting the classpath, the compiler says it can't find the implementation class com.ch.irfe.curvegen.xtools.CurveGenImpl.
If I just try using rmic without -iiop, it works. However I need to generate iiop stubs.
Has anyone managed to resolve this one?
many thanks
LyndseyI've done some further investigation and I think it is a bug with jdk1.3.1. I have tried using IBMs JDK that comes with WebSphere 3.5, and it works fine.
-
rmic compilation failed.
at com.sun.ejb.codegen.GeneratorDriver.compileAndRmic(GeneratorDriver.java:261)
at com.sun.ejb.codegen.GeneratorDriver.preDeploy(GeneratorDriver.java:872)
at com.sun.enterprise.tools.deployment.backend.JarInstallerImpl.deployEjbs(JarInstallerImpl.java:709)
at com.sun.enterprise.tools.deployment.backend.JarInstallerImpl.deployApplication(JarInstallerImpl.java:216)
at com.sun.enterprise.tools.deployment.backend.JarInstallerImpl.deployApplication(JarInstallerImpl.java:124)
at org.omg.stub.com.sun.enterprise.tools.deployment.backend._JarInstallerImpl_Tie._invoke(Unknown Source)
at com.sun.corba.ee.internal.corba.ServerDelegate.dispatch(ServerDelegate.java:334)
at com.sun.corba.ee.internal.iiop.ORB.process(ORB.java:272)
at com.sun.corba.ee.internal.iiop.RequestProcessor.process(RequestProcessor.java:84)
at com.sun.corba.ee.internal.orbutil.ThreadPool$PooledThread.run(ThreadPool.java:99)
rmic compilation failed.
at com.sun.ejb.codegen.GeneratorDriver.compileAndRmic(GeneratorDriver.java:261)
at com.sun.ejb.codegen.GeneratorDriver.preDeploy(GeneratorDriver.java:872)
at com.sun.enterprise.tools.deployment.backend.JarInstallerImpl.deployEjbs(JarInstallerImpl.java:709)
at com.sun.enterprise.tools.deployment.backend.JarInstallerImpl.deployApplication(JarInstallerImpl.java:216)
at com.sun.enterprise.tools.deployment.backend.JarInstallerImpl.deployApplication(JarInstallerImpl.java:124)
at org.omg.stub.com.sun.enterprise.tools.deployment.backend._JarInstallerImpl_Tie._invoke(Unknown Source)
at com.sun.corba.ee.internal.corba.ServerDelegate.dispatch(ServerDelegate.java:334)
at com.sun.corba.ee.internal.iiop.ORB.process(ORB.java:272)
at com.sun.corba.ee.internal.iiop.RequestProcessor.process(RequestProcessor.java:84)
at com.sun.corba.ee.internal.orbutil.ThreadPool$PooledThread.run(ThreadPool.java:99)
rmic compilation failed.
at com.sun.ejb.codegen.GeneratorDriver.compileAndRmic(GeneratorDriver.java:261)
at com.sun.ejb.codegen.GeneratorDriver.preDeploy(GeneratorDriver.java:872)
at com.sun.enterprise.tools.deployment.backend.JarInstallerImpl.deployEjbs(JarInstallerImpl.java:709)
at com.sun.enterprise.tools.deployment.backend.JarInstallerImpl.deployApplication(JarInstallerImpl.java:216)
at com.sun.enterprise.tools.deployment.backend.JarInstallerImpl.deployApplication(JarInstallerImpl.java:124)
at org.omg.stub.com.sun.enterprise.tools.deployment.backend._JarInstallerImpl_Tie._invoke(Unknown Source)
at com.sun.corba.ee.internal.corba.ServerDelegate.dispatch(ServerDelegate.java:334)
at com.sun.corba.ee.internal.iiop.ORB.process(ORB.java:272)
at com.sun.corba.ee.internal.iiop.RequestProcessor.process(RequestProcessor.java:84)
at com.sun.corba.ee.internal.orbutil.ThreadPool$PooledThread.run(ThreadPool.java:99)
rmic compilation failed.
at com.sun.ejb.codegen.GeneratorDriver.compileAndRmic(GeneratorDriver.java:261)
at com.sun.ejb.codegen.GeneratorDriver.preDeploy(GeneratorDriver.java:872)
at com.sun.enterprise.tools.deployment.backend.JarInstallerImpl.deployEjbs(JarInstallerImpl.java:709)
at com.sun.enterprise.tools.deployment.backend.JarInstallerImpl.deployApplication(JarInstallerImpl.java:216)
at com.sun.enterprise.tools.deployment.backend.JarInstallerImpl.deployApplication(JarInstallerImpl.java:124)
at org.omg.stub.com.sun.enterprise.tools.deployment.backend._JarInstallerImpl_Tie._invoke(Unknown Source)
at com.sun.corba.ee.internal.corba.ServerDelegate.dispatch(ServerDelegate.java:334)
at com.sun.corba.ee.internal.iiop.ORB.process(ORB.java:272)
at com.sun.corba.ee.internal.iiop.RequestProcessor.process(RequestProcessor.java:84)
at com.sun.corba.ee.internal.orbutil.ThreadPool$PooledThread.run(ThreadPool.java:99)
rmic compilation failed.
at com.sun.ejb.codegen.GeneratorDriver.compileAndRmic(GeneratorDriver.java:261)
at com.sun.ejb.codegen.GeneratorDriver.preDeploy(GeneratorDriver.java:872)
at com.sun.enterprise.tools.deployment.backend.JarInstallerImpl.deployEjbs(JarInstallerImpl.java:709)
at com.sun.enterprise.tools.deployment.backend.JarInstallerImpl.deployApplication(JarInstallerImpl.java:216)
at com.sun.enterprise.tools.deployment.backend.JarInstallerImpl.deployApplication(JarInstallerImpl.java:124)
at org.omg.stub.com.sun.enterprise.tools.deployment.backend._JarInstallerImpl_Tie._invoke(Unknown Source)
at com.sun.corba.ee.internal.corba.ServerDelegate.dispatch(ServerDelegate.java:334)
at com.sun.corba.ee.internal.iiop.ORB.process(ORB.java:272)
at com.sun.corba.ee.internal.iiop.RequestProcessor.process(RequestProcessor.java:84)
at com.sun.corba.ee.internal.orbutil.ThreadPool$PooledThread.run(ThreadPool.java:99)
how can i fix those errors... anybody..please help!!!!Hi
I get exactly the same error message.
Did you manage to fix it?
If so, can you tell me how!
Appreciated. -
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 -
WSAD Generate RMIC ResourceBundle Problem
Hello Everyone,
If anyone could answer this, I'd be grateful. This has even IBM people stumped.
I created a Resource Bundle in the src directory a WSAD project. It's named Messages_en_US.properties. I've tested getting strings from this resource bundle, in an ejb, on Websphere, at runtime and it works fine.
The problem comes when I want to create a static enum class which references this resource bundle. When I do that and run Generate RMIC, I get the following error in a window:
com.ibm.etools.rmic.RMICException: RMIC Command returns RC = 1. The problems which stopped RMIC are displayed, and have also been recorded in the log file.
Then in the log file, I get this exception:
!MESSAGE java.lang.ExceptionInInitializerError: java.util.MissingResourceException: Can't find bundle for base name com.retek.mdm.app.attribute.service.impl.Messages, locale en_US
at java.lang.Throwable.<init>(Throwable.java)
at java.lang.Throwable.<init>(Throwable.java)
at java.util.MissingResourceException.<init>(MissingResourceException.java:39)
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:724)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:558)
at com.retek.mdm.domain.attribute.AttributeFormatType.<clinit>(AttributeFormatType.java:33)
at java.lang.Class.initializeImpl(Native Method)
at java.lang.Class.initialize(Class.java)
at java.lang.ClassLoader.resolveClassImpl(Native Method)
at java.lang.ClassLoader.resolveClass(ClassLoader.java:617)
at com.ibm.tools.rmic.iiop.DirectoryLoader.loadClass(DirectoryLoader.java:102)
at com.ibm.tools.rmic.iiop.CompoundType.loadClass(CompoundType.java:348)
at com.ibm.tools.rmic.iiop.Type.initClass(Type.java:994)
at com.ibm.tools.rmic.iiop.Type.setRepositoryID(Type.java:1011)
at com.ibm.tools.rmic.iiop.CompoundType.initialize(CompoundType.java:756)
at com.ibm.tools.rmic.iiop.ValueType.initialize(ValueType.java:251)
at com.ibm.tools.rmic.iiop.ValueType.forValue(ValueType.java:111)
at com.ibm.tools.rmic.iiop.CompoundType.makeType(CompoundType.java)
at com.ibm.tools.rmic.iiop.CompoundType$Method.<init>(CompoundType.java)
at com.ibm.tools.rmic.iiop.CompoundType.addAllMethods(CompoundType.java:1302)
at com.ibm.tools.rmic.iiop.ValueType.initialize(ValueType.java:240)
at com.ibm.tools.rmic.iiop.ValueType.forValue(ValueType.java:111)
at com.ibm.tools.rmic.iiop.CompoundType.makeType(CompoundType.java)
at com.ibm.tools.rmic.iiop.CompoundType$Method.<init>(CompoundType.java)
at com.ibm.tools.rmic.iiop.CompoundType.addAllMethods(CompoundType.java:1302)
at com.ibm.tools.rmic.iiop.RemoteType.isConformingRemoteInterface(RemoteType.java:217)
at com.ibm.tools.rmic.iiop.RemoteType.initialize(RemoteType.java:166)
at com.ibm.tools.rmic.iiop.RemoteType.forRemote(RemoteType.java:85)
at com.ibm.tools.rmic.iiop.CompoundType.addRemoteInterfaces(CompoundType.java:1434)
at com.ibm.tools.rmic.iiop.ImplementationType.initialize(ImplementationType.java:161)
at com.ibm.tools.rmic.iiop.ImplementationType.forImplementation(ImplementationType.java:87)
at com.ibm.tools.rmic.iiop.StubGenerator.getTopType(StubGenerator.java:143)
at com.ibm.tools.rmic.iiop.Generator.generate(Generator.java:279)
at sun.rmi.rmic.Main.doCompile(Main.java:547)
at sun.rmi.rmic.Main.compile(Main.java:142)
at java.lang.reflect.AccessibleObject.invokeI(AccessibleObject.java:215)
at java.lang.reflect.Method.invoke(Method.java:255)
at com.ibm.etools.rmic.RMICClassLoader.runCompile(RMICClassLoader.java)
at com.ibm.etools.rmic.RMICOperation.invokeRMICInJVM(RMICOperation.java:466)
at com.ibm.etools.rmic.RMICOperation.rmic(RMICOperation.java:561)
at com.ibm.etools.rmic.RMICOperation.generateStubs(RMICOperation.java:206)
at com.ibm.etools.ejbdeploy.ui.plugin.rmic.UIRMICBeansOperation.generateStubs(UIRMICBeansOperation.java:132)
at com.ibm.etools.rmic.RMICOperation.run(RMICOperation.java:642)
at com.ibm.etools.ejbdeploy.ui.plugin.DeployRMICBeansOperation.generateRMICCode(DeployRMICBeansOperation.java:319)
at com.ibm.etools.ejbdeploy.ui.plugin.DeployRMICBeansOperation.run(DeployRMICBeansOperation.java)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java)
at com.ibm.etools.ejbdeploy.ui.plugin.DeployRunnableWithProgress.run(DeployRunnableWithProgress.java:92)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:101)
Apparently, because I created a static variable, RMIC tries to instantiate it, and then it can find it. Any ideas?
Thanks,
TimNot sure if this is the answer but...
Websphere starts it's Web container after it's EJB container. If the class that tries to call that is in the ejb level it might not have read the property file yet because that is in the web level.
We had this problem and it was traced back to the threading of the start up. -
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] -
Error Starting WebLogic Server 5.1 (SP11)
Hi,
I have installed weblogic server 5.1 (SP11) in NT, I tried to start the Weblogic
Server and got the message "weblogic server started", immediatly after that I
got the message " IIOP service not started as vm 1.3 was not found". Do you know
what could be causing these IIOP error message?. Any help.
Thanks in advance,
RChandra51 SP11 is shipped with IIOP stuff and by default this sub-system is enabled.
If you don't want IIOP, you can turn it off with the following system property
-Dweblogic.system.enableIIOP=false weblogic.Server
Otherwise make sure to start the server with 1.3 VM .
Kumar
rchandra wrote:
Hi,
I have installed weblogic server 5.1 (SP11) in NT, I tried to start the Weblogic
Server and got the message "weblogic server started", immediatly after that I
got the message " IIOP service not started as vm 1.3 was not found". Do you know
what could be causing these IIOP error message?. Any help.
Thanks in advance,
RChandra -
Why cann't rmic find the class?
I have write some RMI Code,and I could compile them correctly,but when I wanted to generate Stub and Skel by rmic ,it showed me that:
E:\JavaPro\CH21-05>rmic RmiTestServer
error: Class RmiTestServer not found.
1 error
I don't know why?
Here the source which helps to understand the problem:
//Code in RmiTest.java
import java.rmi.*;
public interface RmiTest extends java.rmi.Remote
//Definate an interface from java.rmi.Remote
public float getRmiTest(int r) throws RemoteException;
//Code in RmiTestServer.java
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
import java.lang.Math;
public class RmiTestServer extends UnicastRemoteObject implements RmiTest
//load the constructor of UnicastRemoteObject
RmiTestServer()throws RemoteException
super();
//The client will send the parameters to here,and calculate,and get the results back
public float getRmiTest(int r)throws RemoteException
float circlerate=(float)(2*Math.PI*r);
return circlerate;
public static void main(String args[])
try
Naming.rebind("//127.0.0.1:1099/RmiTestObj",new RmiTestServer());
System.out.println("RMI Connecting...");
catch(Exception e)
System.out.println("RMI can't connect... :"+e);
System.exit(-1);
//Code in RmiTestClient.java
import java.awt.*;
import java.rmi.*;
public class RmiTestClient
public static void main(String args[])
float circlerate=(float)0.0;
try
//Set security manager according to security mechanism
System.setSecurityManager(new RMISecurityManager());
//Query remote object,and it's host address is 127.0.0.1 ,and it's port is 1099
//RmiTestObj is a byname of RMI logging on
RmiTest obj=(RmiTest)Naming.lookup("//127.0.0.1:1099/RmiTestObj");
//method to load remote object
circlerate=obj.getRmiTest(5);
//print the result
System.out.println("Total circlerate is : "+circlerate);
catch(Exception e)
System.out.println(e.getMessage());
How can I solve this problem?I made it by runing the following command line:
rmic -classpath E:\JavaPro\CH21-05 RmiTestServer
and it created two files: RmiTestServer_Skel.class and RmiTestServer_Stub.class
Thank you very much!
--Steven -
Hi -
I'm working to modify a C program (gnuplot) so that it can remotely call functions in Java.
My current plan is to use RMI-IIOP on the Java side. I'd like to create a class that implements java.rmi.Remote via some local implementation class, instantiate it, then obtain a stringified IOR for that object and pass it to gnuplot, which can then use the IOR to call remote methods.
Also, I'm planning to use CORBA DII on the client side, since I want a generic program where the remote method names can be set by user options at run time.
Does this make sense? I'm working with this tutorial code:
http://java.sun.com/j2se/1.5.0/docs/guide/rmi-iiop/tutorial.html
and am stuck on obtaining an IOR in the server code.
Any help would be appreciated...Well, I figured it out. The key method is remoteToCorba in com.sun.jndi.toolkit.corba.CorbaUtils. Here's my server code:
//HelloServer.java
import java.io.*;
import org.omg.CORBA.ORB;
import com.sun.jndi.toolkit.corba.CorbaUtils;
public class HelloServer {
public static void main(String[] args) {
try {
// Step 1: Instantiate the Hello servant
HelloImpl helloRef = new HelloImpl();
// Step 2: Initialize the ORB
ORB orb = ORB.init(args, null);
// Step 3: Convert the Hello servant to a CORBA object
org.omg.CORBA.Object corba_obj;
corba_obj = CorbaUtils.remoteToCorba(helloRef, orb);
// Step 4a: Announce the IOR to STDOUT
String ior = orb.object_to_string(corba_obj);
System.out.println("IOR: " + ior);
// Step 4b: Announce the IOR to a file
FileWriter fw = new FileWriter("hello.ior");
fw.write(ior);
fw.close();
System.out.println("Hello Server: Ready...");
} catch (Exception e) {
System.out.println("Trouble: " + e);
e.printStackTrace();
}And here's the matching client code:
//HelloClient.java
import java.io.*;
import org.omg.CORBA.ORB;
import javax.rmi.PortableRemoteObject;
public class HelloClient {
public static void main( String args[] ) {
HelloInterface hi;
try {
// Step 1: Initialize the ORB
ORB orb = ORB.init(args, null);
// Step 2: Obtain the stringified IOR from a file
FileReader fr = new FileReader("hello.ior");
BufferedReader br = new BufferedReader(fr);
String ior = br.readLine();
// Step 3: Convert the IOR to a CORBA object reference
org.omg.CORBA.Object objref = orb.string_to_object(ior);
// Step 4: Narrow the CORBA object reference to the concrete type
hi = (HelloInterface) PortableRemoteObject.narrow(
objref, HelloInterface.class);
// Step 5: Invoke the method.
hi.sayHello( " MARS " );
} catch( Exception e ) {
System.err.println( "Exception " + e + "Caught" );
e.printStackTrace( );
return;
}The other two files are unchanged from the original example:
//HelloInterface.java
import java.rmi.Remote;
public interface HelloInterface extends java.rmi.Remote {
public void sayHello( String from ) throws java.rmi.RemoteException;
//HelloImpl.java
import javax.rmi.PortableRemoteObject;
public class HelloImpl extends PortableRemoteObject implements HelloInterface {
public HelloImpl() throws java.rmi.RemoteException {
super(); // invoke rmi linking and remote object initialization
public void sayHello( String from ) throws java.rmi.RemoteException {
System.out.println( "Hello from " + from + "!!" );
System.out.flush();
}Compilation and usage is straightforward:
javac *.java
rmic -iiop HelloImpl
java -cp . HelloServer
java -cp . HelloClientIt gives warnings about using a Sun proprietary interface, but that's the only problem that I've had with the Java end. Getting the C end working has been more challenging. ORBit seems to have some serious interoperability problems. I haven't gotten it working yet with Java. -
Simple RMI/IIOP app : "no security manager: RMI class loader disabled"
Hello colleagues!
I do not understand the problem at all, and asking for your kind help.
This is my first code for RMI/IIOP. We are using JBoss as application server.
What I've done :
1) created test.Command interface , extending Remote
2) created test.CommandImpl , implementing above mentioned interface and java.io.Serializable, and extending javax.rmi.PortableRemoteObject.
BTW, Serializable is not implemented in some tutorials, but absence of Serializable causes NotSerializableException when trying to rebind (next step).
3) in server code, created initial context and called
context.rebind("test/Command",new CommandImpl());
4) Ran rmic -iiop test.CommandImpl . A result was two new cass files, CommandImplTie.class and CommandStub.class , both are also in package "test".
5) Created remote client and put CommandStub.class to client
classpath (under package "test", too).
6) In client code, initialized the context and called
context.lookup("test/Command").
On this line (lookup), the following exception is being raised :
javax.naming.CommunicationException. Root exception is java.lang.ClassNotFoundException: test.CommandImpl (no security manager: RMI class loader disabled)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:368)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:161)
at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:631)
at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:257)
at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:200)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1513)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1435)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1626)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
at java.rmi.MarshalledObject.get(MarshalledObject.java:135)
at org.jnp.interfaces.MarshalledValuePair.get(MarshalledValuePair.java:30)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:514)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:471)
at javax.naming.InitialContext.lookup(InitialContext.java:347)
Is _Stub class all that client needs from server classes, to obtain
the reference ? I tried to put _Tie also to client, but with the same result.
All Jndi paths to JBoss server are correct, as I've used them successfully in other applications.
Many thanks in advance,
DanielNext few words to the topic.
I made tests with canonical RMI/IIOP tutorial from Sun.
When I use Sun's ORB (orbd.exe) , everything work fine. I started
orbd on the same PC as JBoss, and client and server are running
remotely.
But with JBoss ORB, I have the same exception as described above.
Server starts and registers in JNDI successfully, but client can not
obtain a remote reference. Exception is being thrown on
context.lookup().
So the difference is definitely in security managers for two ORBs.
I also tried to create new RMISecurityMananger and set it, but with
no effect.
Any ideas ?
TIA,
Daniel. -
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. -
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
APhttp://java.sun.com/j2se/1.4.1/docs/guide/rmi-iiop/interop.html
-
Problems with rmic v1.1
Hi,
I have to use the JDK1.1.8, if I compiled the interface and the implementation of the interface everything was fine.
But when I try to create my stub and skeleton with rmic, I get this message:
rmic prog
error: File ./prog.class does not contain type prog as expected, but type my.test.prog.prog. Please remove the
file, or make sure it appears in the correct subdirectory of the class path.
error: Class prog not found.
java.lang.IllegalArgumentException: Argument # > Arg length
at java.text.MessageFormat.format(Compiled Code)
at java.text.MessageFormat.format(MessageFormat.java)
at java.text.MessageFormat.format(MessageFormat.java)
at sun.rmi.rmic.Main.getText(Main.java:489)
at sun.rmi.rmic.Main.getText(Main.java:464)
at sun.rmi.rmic.Main.doCompile(Compiled Code)
at sun.rmi.rmic.Main.compile(Main.java:107)
at sun.rmi.rmic.Main.main(Main.java:422)
----By convention, most java tools expect to find a "packaged" class in a directory hierarchy that relects the packaging. In other words, a class defined like
com.myco.myapp.ImportantApplication.class
will be placed under a base directory, in a subordinate directory thus:
/basedir/com/myco/myapp
In turn, java tools will find this class if you suppli classpaths such as
java -classpath basedir/
Note the trailng slash. This tells java that this is a directory name.
rmic works the same way. -
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
Maybe you are looking for
-
HT204370 Didn't download - It's not right you can't get your money back
i purchased a film and it wouldn't download properly (£4.50 on "50/50") - i tried 100 times and it just wouldn't load (it loaded the first 5 mins but then got stuck). its not my internet as i have super fast virgin, its not my apple TV as i've downlo
-
Queries that should return complimentary results don't
Hello Everyone, I need some help and thank in advance anyone who looks at or attempt to solve my problem. I have a dataset of members of households. lets call it ORIGINAL, each household being identified by a barcode field. Obviously because most hou
-
Poor sound - FIX - well possibly
Hi guys, Don't know if this helps you but I was experiencing low sound volumes when playing dvds but all other sound levels were fine (ie windows beeps and system sounds etc.). Installed AC3 audio filter and went into the control panel
-
HT4356 I've got the HP P1102w. Air Print
It worked fine with Air Print. After changing the password on our network, I can't reset the printer to the new password - as I can't find the settings for HTML anymore. Please help us! Thank you! John
-
Completely Unable to Connect to Internet using 3g!!
I love this phone. It's great. But I'm getting pretty miffed that when my 3g is turned on, I CANNOT connect to the internet. I live in 75248, in the middle of North Dallas where I know they have good 3g coverage. I can't connect to Safari, Weather, S