RMI classpath problem
Hi folks,
Using this tutorial;
http://java.sun.com/j2se/1.5.0/docs/guide/rmi/hello/hello-world.html
I was able to get the example working when I had all of my classes in the same directory as I ran it. E.g.
$pwd
/home/jmcparla/RMI2/server
$ ls
Hello.class Server.class
$rmiregistry 2000 &
$ java Server
Server ready
$ pwd
/home/jmcparla/RMI2/client
$ ls
Client.class Hello.class
$ java Client
response: Hello, world!So I decided to bundle the code into two Jars, Server.jar (containing Hello.class and Server.class) and Client.jar (Hello.class and Client.class). However this time when I went to start the Server;
$ pwd
/home/jmcparla/RMI2
$ ls
Server.jar bin client policy server src
$ rmiregistry 2000 &
[1] 2848
$ java -jar Server.jarI got these exceptions;
Server exception: java.rmi.ServerException: RemoteException occurred in server t
hread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested excep
tion is:
java.lang.ClassNotFoundException: Hello
java.rmi.ServerException: RemoteException occurred in server thread; nested exce
ption is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested excep
tion is:
java.lang.ClassNotFoundException: Hello
at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:396
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:250)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:5
35)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTranspor
t.java:790)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
.java:649)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
utor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
.java:908)
at java.lang.Thread.run(Thread.java:619)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknow
n Source)
at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
at sun.rmi.server.UnicastRef.invoke(Unknown Source)
at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source)
at Server.main(Server.java:22)
Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested ex
ception is:
java.lang.ClassNotFoundException: Hello
at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:386
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:250)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:5
35)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTranspor
t.java:790)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
.java:649)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
utor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
.java:908)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.ClassNotFoundException: Hello
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at sun.rmi.server.LoaderHandler.loadProxyInterfaces(LoaderHandler.java:7
11)
at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:655)
at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:592)
at java.rmi.server.RMIClassLoader$2.loadProxyClass(RMIClassLoader.java:6
28)
at java.rmi.server.RMIClassLoader.loadProxyClass(RMIClassLoader.java:294
at sun.rmi.server.MarshalInputStream.resolveProxyClass(MarshalInputStrea
m.java:238)
at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1531)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1493)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1
732)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
... 12 moreIt seems to be that it cannot find the Hello class file but this is bundled in Server.jar. Putting Server.jar on the classpath makes no difference.
Any ideas?
Cheers, using createRegistry(int) did the trick (along with a few other bits and pieces).
For the sake of aiding others with this kind of problem here's what I did. Remember most of it came from the Sun Java 5 RMI tutorial (http://java.sun.com/j2se/1.5.0/docs/guide/rmi/hello/hello-world.html).
1. Download and compile SUN's class file server (http://java.sun.com/javase/technologies/core/basic/rmi/class-server.zip). You'll need this to serve up the classes. Place this in a different directory to the one your going to use for the RMI tutorial.
2. Download the source files for the tutorial.
3. Use this directory structure (relative to /home/<username>)
| RMI/
| src/
| example/
| hello/
| bin/4. Change the server to the following. The main points to note are the registry is now created (rather than located) and the port number used.
package example.hello;
import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class Server implements Hello {
public Server() {}
public String sayHello() {
return "Hello, world!";
public static void main(String args[]) {
try {
System.out.println("Starting Server");
Server obj = new Server();
Registry registry = LocateRegistry.createRegistry(2000);
System.out.println("Created registry");
Hello stub = (Hello) UnicastRemoteObject.exportObject(obj, 0);
System.out.println("Exported Server");
// Bind the remote object's stub in the registry
registry.rebind("Hello", stub);
System.out.println("Bound Server to \"Hello\"");
System.out.println("Server ready");
} catch (Exception e) {
System.err.println("Server exception: " + e.toString());
e.printStackTrace();
}5. In the src dir compile with the following;
javac -d ../bin example/hello/*.java6. In the bin dir create the server jar with the following;
jar cvfe Server.jar example.hello.Server example/hello/Server* example/hello/Hello*7. In the bin dir create the client jar with the following;
jar cvfe Client.jar example.hello.Client example/hello/Client* example/hello/Hello*8. Move both Jars out of the bin directory to the parent one (e.g. /home/<username>RMI/) (to prevent the rmi registry / server using the current dir in the classpath if you've set it up that way).
9. Create the policy file in the RMI directory (see above directory structure);
grant codeBase * {
permission java.security.AllPermission;
permission java.net.SocketPermission "*", "accept, connect, listen, resolve";
};10. Start the class file server (read the notes that come with it) in its own directory. Note the port number used (different from RMI registry) and the Jar file on the end of the path.
java ClassFileServer 2001 /home/<username>/RMI/Server.jar11. If this has worked you should be able to visit the URL http://localhost:2001 and get a blank page (as opposed to a broken link notification).
12. Start the RMI server in the bin dir. Note the port is the same as the one used to launch the class file server.
java -Djava.security.policy=policy -Djava.rmi.codebase=http://localhost:2001/ -jar Server.jar13. You should see the following output;
Starting Server
Created registry
Exported Server
Bound Server to "Hello"
Server ready14. Start the client
java -jar Client.jar15. You should see the following output;
response: Hello, world!
Similar Messages
-
RMI Marshalling Problem: weblogic.Admin PING
WebLogic 5.1.0 with service pack 8 has been installed on a HPUX server. I'm
trying to ping the server from an NT box, but I'm getting some RMI
marshalling problems.
Here is the command that I run on NT:
C:\weblogic\jre1_2\jre\bin\java -classpath
c:weblogic/lib/weblogic510sp.jar;c:/weblogic/classes;c:/weblogic/lib/weblogi
caux.jar weblogic.Admin t3://HPServer:7001 PING > MarshallingProblem.txt
Here is what is in MarshallingProblem.txt (modified server name):
Failed to connect to t3://HPServer:7001 due to:
[weblogic.rmi.UnexpectedException: Marshalling:
- with nested exception:
[weblogic.rjvm.PeerGoneException:
- with nested exception:
[weblogic.utils.AssertionError: ***** ASSERTION FAILED *****[ Exception
creating response stream ] - with nested exception:
[java.io.InvalidClassException:
weblogic.security.acl.internal.AuthenticatedUser; Local class not
compatible: stream classdesc serialVersionUID=6699361079932480379 local
class serialVersionUID=2825328378974757378]]]]
I previously had similar problems pinging the server from the server itself
until I included the servicepack in the classpath.
Anyone have any idea what going on in this situation?
Cameron TaggartCameron
Can you test with sp8 installed on your NT machine too ? And also make
sure you set the classpath with the sp8 jar files on NT before you run
weblogic.Admin PING
Raj Alagumalai
Cameron Taggart wrote:
WebLogic 5.1.0 with service pack 8 has been installed on a HPUX server. I'm
trying to ping the server from an NT box, but I'm getting some RMI
marshalling problems.
Here is the command that I run on NT:
C:\weblogic\jre1_2\jre\bin\java -classpath
c:weblogic/lib/weblogic510sp.jar;c:/weblogic/classes;c:/weblogic/lib/weblogi
caux.jar weblogic.Admin t3://HPServer:7001 PING > MarshallingProblem.txt
Here is what is in MarshallingProblem.txt (modified server name):
Failed to connect to t3://HPServer:7001 due to:
[weblogic.rmi.UnexpectedException: Marshalling:
- with nested exception:
[weblogic.rjvm.PeerGoneException:
- with nested exception:
[weblogic.utils.AssertionError: ***** ASSERTION FAILED *****[ Exception
creating response stream ] - with nested exception:
[java.io.InvalidClassException:
weblogic.security.acl.internal.AuthenticatedUser; Local class not
compatible: stream classdesc serialVersionUID=6699361079932480379 local
class serialVersionUID=2825328378974757378]]]]
I previously had similar problems pinging the server from the server itself
until I included the servicepack in the classpath.
Anyone have any idea what going on in this situation?
Cameron Taggart -
i am here stuck..
my dir structure is
c:\my\xxx\yyy\zzz
i have a code ...
package xxx.yyy.zzz;
class A
// some code
}i have compiled sucessfully and put the clsss file into c:\my\xxx\yyy\zzz folder.
now i want to import it in another class
like...
package xxx.yyy; // note this
import xxx.yyy.zzz.*; // note this
class B
// some code
// creating instance of class A here
}question is how do i compile and run it ?
i am at c:\my---> what should be the command to compile and run the above code?
plz give me the explicit command so that i can test and verify . i have given the dir structure.
i have tried several ways but got class not found exception and errors . i know its a classpath problem but i could not figure out what should i type at the c:\my prompt.
can u give exact command to run and compile the above code in steps ?
thanxquestion is how do i compile and run it ?You don't with that code. You've defined class A to have "package visibility," meaning it can't be used from outside its package. You should declare it with public visibility instead, like "public class A {...".
Once you change that, use these commands to compile and run:c:\my\>javac xxx/yyy/zzz/A.java
c:\my\>javac xxx/yyy/B.java
c:\my\>java xxx.yyy.B -
Classpath Problem (Using JSAPI)
Hi,
I using IBM Via Voice as a the implementation of the JSAPI on my system. I've downloaded the speech for java pack from IBM Alphaworks and put it in the directory of
c:\ibmjs
This gives you access to the speech packages for utilisation in your programs so I should be able to import javax.speech in my programs. However the system doesn't see these classes.
Heres my Autoexec...
path=%path%;c:\jdk1.3.1_01\bin;c:\ibmjs\lib;
CLASSPATH=%CLASSPATH%;c:\ibmjs\lib\ibmjs.jar;
I presume the whole thing is just a classpath problem, does anybody have any idea from the above paths where I am going wrong?i guess you have to put some of ibm's dll files coming with speech for java in the path (not classpath). it's not sufficient to have the directories in the path.
anyway, there come's an installation manual with speech for java which explaines all that. -
Fragment Bundle Classpath problems
Does anyone have any tips for solving classpath problems in fragment bundles? I'm getting a no-class-def that I can't explain.
I've used maven to create a fragment, hosted by com.day.crx.sling.server, to create a custom login. It needs to call a web service, so I've included httpclient-4.2.3.jar. I can see this jar listed on the deployed fragment's Bundle-ClassPath, via the osgi>bundle console. When I inspect the bundle that maven created, I can find this jar contained in the bundle jar, in the directory specified in the Bundle-ClassPath. I even oppened the httpclient jar to ensure that the offending class (org/apache/http/client/HttpClient) is there.
This is the first fragment that I've tried to build. Is there something I don't know about how they load classes?
Does anyone have any tips or tricks on solving osgi classpath problems? I read that felix has some tools, but I haven't found any documentation about them.I'm still not sure why the classes didn't load, but I have a solution to my problem - don't try to include the jars in the fragment bundle. I tracked down osgi-ready versions of the libraries that I needed and and installed them.
-
Another simple classpath problem question
Hi All
Yes I know, there are a lots of questions about this matter, but I couldn't found a solution to my problem.
I have a simple program:
public class prueba {
public static void main(String[] args) {
System.out.println("Ahi va...");
}placed in /tmp/javier/prueba.java
After compiled, I've tried to run it from / and then problems started:
cd /
java /tmp/javier/prueba
Exception in thread "main" java.lang.NoClassDefFoundError: /tmp/javier/prueba (wrong name: prueba)
I said, ok...it could be a classpath problem...then:
java -cp /tmp/javier/ /tmp/javier/prueba
Exception in thread "main" java.lang.NoClassDefFoundError: /tmp/javier/prueba
Damn, another try...
java -cp .:/tmp/javier/ /tmp/javier/prueba
Exception in thread "main" java.lang.NoClassDefFoundError: /tmp/javier/prueba (wrong name: prueba)
Jesus Christ....may be the last slash....
java -cp .:/tmp/javier /tmp/javier/prueba
Exception in thread "main" java.lang.NoClassDefFoundError: /tmp/javier/prueba (wrong name: prueba)
Oh...no.... may be classpath to java classes..
java -cp .:/usr/java/j2sdk1.4.2_01/lib/jre/:/tmp/javier/ /tmp/javier/prueba
Exception in thread "main" java.lang.NoClassDefFoundError: /tmp/javier/prueba (wrong name: prueba)
Well, I don't know why this error happens....
Please, could somebody help me !!!
Thanks in advance...
<jl>It's not too early to start following the Sun coding
conventions for Java:
http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.
tmlHi
thanks for your reply.
Yes, I agree. I use conventions with my programs. But my real problem was with a real application and then I did quickly this simple code to help others to understand the problem and give a fast reply...
Let me know if that works. (It was fine on my
machine.) - MODYes it works fine, thanks.... and Damn...Murphys law again, the only option I didn't tried is the solution to my problem... :)
Thanks again... -
Classpath problems in EAR packaging?
I try to access an EJB from a JSP. The JSP resides in web.war and the bean is in ejb.jar, and both of these are packaged together in an ear.
I get a compile error when I try opening a JSP. I've had this problem in all my attempts to use my bean classes from JSP.
My browser reports that the compiler cannot find the beans package. I have servlets within the war-file that are able to find the beans package, but the JSPs aren't.
My ear-file contains 3 files
ejb.jar
web.war
META-INF\MANIFEST.MF
The manifest classpath points to ejb.jar and web.war
My guess is that this has something to do with the way this is deployed by GlassFish.
The application is deployed in the
domains\mydomain\applications\j2ee-apps\myear\
This directory contains the expanded files:
ejb_jar\
web_war\
META-INF
So the Java classes under web_war\ are able to see the Java classes under ejb_jar\ (i.e. my servlets)
However; when GlassFish creates Java files from the JSPs and then tries to compile them, these files are placed under
domains\mydomain\generated\jsp\j2ee-apps\myear\web_war\org\apache\jsp\jsp
This might be correct for all I know, but apparently the compiler is unable to find the Java classes located under the mydomain\applications\.. directory when compiling classes located under the mydomain\generated\.. directory. There are no other files from my ear anywhere in the "generated" directory.
So to me this seems to be some kind of classpath problem, as the compiler cannot find the needed files.
Does this make any sense to anyone?
PS
In my ear, the JSPs are placed in the web.war. The war file looks like this:
jsp\
myjsp.jsp
META-INF
MANIFEST.MF
WEB-INF
web.xml
lib\
mylib.jarThanks
\\MariusMarius,
If you want communicate the bean you have to do following things.
. Create a factory for the correct protocol
. Obtain a Home
. Use the Home to create stubs to the remote object
So you want to call the Home and Remote interfaces to access the bean. When you run the client program, it will create the remote object that time it has to search the Home and Remote interfaces. So you have included those files for references in following location
WEB-INF/classes
-- <Home Interface File Name>.class
-- <Remote Interface File Name>.class
Or
WEB-INF/lib
-- <Bean Jar file name>.jar
I think you will understand.
-Mani -
again classpath problem.... i have tried to solve it in many ways but all failed. here is one
instance of my effort which did not give me success.
i have a FOLDER > c:/com/abc/def/ijk
and files......
MyClass.java
==============
package com.abc.def.ijk
class MyClass
// blah
// blah
}c:\com\abc\def\ijk>javac MyClass.java ===>compiled fine and created a class file.
and also one more file.....
OneMoreClass.java
=================
import com.abc.def.ijk.MyClass
class OneMoreClass
// blah
// blah
}c:\com\abc\def\ijk>javac OneMoreClass.java ===> Error!!! package com.abc.def.ijk does not exist !!!!
how can i solve it ?yea, this works....eariler i also usued to do this
way. but this time i forgot.
by the way, why individually it did not work !!!.Because you were in the package directory itself, and the classpath was set to the cwd, so java was looking for package directories at this level.
and also when i specify directly by
c:\com\abc\def\ijk
javac -classpath c:\com\abc\def\ijk\MyClass
OneMoreClass.java ...it does not work!!.
STRANGE! why ?Because by stating the package directory as classpath, you do the same as explained above. Stay out of package directories, stay one level above them, don't regard them as common directories. When declaring classpaths, don't mention package directories but the directories that contain them. -
JDBC and Classpath problems on OpenVMS
Hello,
I'm working on an OpenVMS server and I got a simpler Java application that needs to establish a connection to an Oracle database, the application works perfectly well on Windows but when I moved to OpenVMS I got some problems with the oracle driver.
I believe I�m using the correct driver, I already checked on the oracle site according to my java version (1.4.2) and my database version (oracle 9i 9.2.0.7.0)
This is the error:
$java -jar miss.jar "DnBProcess"
About to start loading parameters for the MISS Proxy.
Successfully load parameters for the MISS Proxy.
About to load interface settings for DnBProcess
Settings for DnBProcess succesffully loaded.
About to load interface DnBProcess
About to start loading parameters for DnB Interface.
Successfully load parameters for DnB Interface.
Interface DnBProcess succesffully loaded.
About to execute interface DnBProcess
Connecting to the database...
java.lang.NoClassDefFoundError: oracle/jdbc/OracleDriver
at miss.DnBProcess.ExecuteQueryToFile(DnBProcess.java:85)
at miss.DnBProcess.Execute(DnBProcess.java:178)
at miss.Proxy.ExecuteInterface(Proxy.java:160)
at miss.Proxy.main(Proxy.java:207)
I know is a classpath problem, and my classpath on VMS looks like this:
define JAVA$CLASSPATH .,SYS$COMMON:[JAVA$142.LIB]TOOLS.JAR,SYS$COMMON:[JAVA$142.LIB]DT.JAR,SYS$COMMON:[JAVA$142.JRE.LIB]RT.JAR, USER1:[MONTEALEGRE.TEST.LIBS]OJDBC14.JAR,USER1:[MONTEALEGRE.TEST.MISS.LIBS]OJDBC14.JAR,[]
As you can see I added the �ojdbc14.jar� in different folders but my application seems not to find it.
Does anyone know how to set the classpath properly on VMS? Or maybe give me some tips that could lead me to find a solution to this problem.
Thanks.
Ileana.I would try googling for OpenVMS classpath. Unfortunatley the first result is this thread but there are a bunch of resources from IBM and HP listed and maybe they can help you.
-
Help classpath problem j2sdk1.4.2_04
help classpath problem j2sdk1.4.2_04
how can i run the java program with specify the file location
such as :
-----this one is fine ok and return HelloWorld.class-----
[root@localhost root]javac /serverData/studentAC/s001/HelloWorld.java
-----but this one cause exception-----
[root@localhost root]java /serverData/studentAC/s001/HelloWorld
-----result-----
Exception in thred "main" java.lang.NoClassDefFoundError: /serverData/studentAC/s001/HelloWorld
[root@localhost root]
I have tried a lot of classpath setting:
I just want to compile and run the java program without specify the classpath only !! please help !!! and give suggest !! if you have this exp!!
# ---1
#PATH=/usr/java/j2sdk1.4.2_04/bin:$PATH:$HOME/bin:./
#export PATH
#export JAVA_HOME=/usr/java/j2sdk1.4.2_04/
#export #CLASSPATH=/usr/java/j2sdk1.4.2_04/lib/tools.jar:/usr/java/j2sdk1.4.2_04/jre/lib/rt.jar:./
# ---2
#set java environment
# Java Setup Section START
export JAVA_HOME="/usr/java/j2sdk1.4.2_04"
export JRE="$JAVA_HOME/jre"
export CLASSPATH="$JAVA_HOME/lib:$JRE/lib:$JAVA_HOME/lib/tools.jar:."
export PATH="$PATH:$JAVA_HOME/bin"
# Java Setup Section END
# ---3
#PATH=$PATH:/usr/java/j2sdk1.4.2_04/bin
#JAVA_HOME=/usr/java/j2sdk1.4.2_04/
#export PATH
# ---4
# Java Setup Section START
#JAVA_HOME=/usr/java/j2sdk1.4.2_04
#export JAVA_HOME
#CLASSPATH=$CLASSPATH:/usr/java/j2sdk1.4.2_04/lib:/usr/java/j2sdk1.4.2_04/jre/lib:./
#export CLASSPATH
#PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
#export PATH
# Java Setup Section END
# ---5
#export PATH=$PATH:/usr/java/j2sdk1.4.2_04/bin
#export JAVA_HOME=/usr/java/j2sdk1.4.2_04
#export CLASSPATH=/usr/java/j2sdk1.4.2_04/lib:$CLASSPATH:.
# ---6
#====================================================
#export JAVA_HOME=/usr/java/j2sdk1.4.2_04
#export PATH=$JAVA_HOME/bin:$PATH
#export CLASSPATH=/usr/java/j2sdk1.4.2_04/lib:$CLASSPATH
#====================================================I think this will work. java -classpath /serverData/studentAC/s001 HelloWorld
-
I'm trying to find out the status of the servicegen classloading problem
(specifying a classpath in a servicegen task causes class cast exceptions).
We are currently using the workaround described in this group which is
putting the weblogic jars in the system classpath. This workaround is very
unwieldy in our build environment. Is there any estimate on when the
problem will be fixed?And was it? I am using 7.0sp4 and am getting classpath problems in servicegen.
The problem I am having is that the type generation fails to find any of the weblogic
utility classes, sug as weblogic.xml.schema.binding.util.runtime.PropertyInfo
(and many many others)
"Neal Yin" <[email protected]> wrote:
This will be fixed in 7.0sp3 and 8.1sp1.
Thanks,
-Neal
"John Horner" <[email protected]> wrote in message
news:[email protected]..
I'm trying to find out the status of the servicegen classloading problem
(specifying a classpath in a servicegen task causes class castexceptions).
We are currently using the workaround described in this group whichis
putting the weblogic jars in the system classpath. This workaroundis
very
unwieldy in our build environment. Is there any estimate on when the
problem will be fixed? -
Hi
I've been following two different tutorials on RMI, but seem to get stuck at the same point with both. When I'm trying to do rmic on the implementation-classes it complains that the java.rmi.server.UnicastRemoteObject class can't be found... I've tried setting the classpath to both c:\myjavahome\lib, c:\myjavahome\jre\lib and lots of other paths without any success. (I'm running Windows XP by the way).
If anyone have a clue to what's causing my problem, please tell me...
Is there any spesific *.jar file I have to include in the classpath? The java.rmi package should be part of the j2sdk core, right? Or is there some additional extensions I need to acquire?
Regards toresYou do need the <java home> in the -classpath, see below
http://forum.java.sun.com/thread.jsp?forum=58&thread=555245&tstart=0&trange=15 -
Classpath problem in exploded ear
I'm having problems deploying an application in a new environment. We deploy Mercury.ear as an exploded ear under
Windows in a single-server domain without any problem.
I am tasked with setting up a WL cluster as the first step in our cluster certification/testing (under Linux/RedHat ASE 3.0).
We are using WL 8.1. SP2. This should be a relatively trivial task, but I must be missing something obvious,
because I've been banging my head on it the last couple of days.
Basically, I have two WL managed servers, ClusterMember1 and ClusterMember2 and an admin server AdminServer created in a WL domain.
All servers start normally (when no applications are deployed to the managed servers).
I have appended our entire config.xml to the end of this post, but here is the relevant <Application> section:
<Application Name="Mercury"
Path="/root/bea/user_projects/domains/clusterdomain/applications/Mercury"
StagingMode="nostage" TwoPhase="true">
<EJBComponent Name="MercuryEJB.jar" Targets="ClusterMember1" URI="MercuryEJB.jar"/>
<WebAppComponent Name="Apollo" Targets="ClusterMember1" URI="MercuryWeb.war"/>
<ConnectorComponent Name="SpectraConnector.rar"
Targets="ClusterMember1" URI="SpectraConnector.rar"/>
</Application>
I am only attempting to deploy to managed server ClusterMember1 at this time.
When I attempt to start ClusterMember1:
./startManagedWebLogic.sh ClusterMember1 http://localhost:9001 &
It starts up, syncs with the admin server, and then attempts to deploy the Mercury application. I get the following exception when it attempts to start the Mercury application:
<Feb 1, 2006 10:07:55 AM CST> <Error> <HTTP> <BEA-101216> <Servlet: "context" failed to preload on startup in Web application: "Apollo".
javax.servlet.ServletException: Error registering bean with name 'ApolloSessionManager' defined in URL [file:/root/bea/user_projects/domains/clusterdomain/applications/Mercury/mercuryresources.jar/resources/xml/springconfig/Service-DAO-config.xml]: Class that bean class [com.sg.sims.mercury.apolloweb.service.processor.ApolloSessionManager] depends on not found; nested exception is java.lang.NoClassDefFoundError: com/sg/sims/mercury/apolloweb/service/processor/ApolloSessionManager
at weblogic.servlet.internal.ServletStubImpl.createServlet()Ljavax/servlet/Servlet;(ServletStubImpl.java:985)
{...snipped...}
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Error registering bean with name 'ApolloSessionManager' defined in URL [file:/root/bea/user_projects/domains/clusterdomain/applications/Mercury/mercuryresources.jar/resources/xml/springconfig/Service-DAO-config.xml]: Class that bean class [com.sg.sims.mercury.apolloweb.service.processor.ApolloSessionManager] depends on not found; nested exception is java.lang.NoClassDefFoundError: com/sg/sims/mercury/apolloweb/service/processor/ApolloSessionManager
at org.springframework.beans.factory.xml.DefaultXmlBeanDefinitionParser.parseBeanDefinition(Lorg/w3c/dom/Element;Ljava/lang/String;)Lorg/springframework/beans/factory/config/BeanDefinition;(DefaultXmlBeanDefinitionParser.java:366)
{...snipped...}
Caused by: java.lang.NoClassDefFoundError: com/sg/sims/mercury/apolloweb/service/processor/ApolloSessionManager
at java.lang.Class.forName(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;(Unknown Source)
at org.springframework.beans.factory.support.BeanDefinitionReaderUtils.createBeanDefinition(Ljava/lang/String;Ljava/lang/String;Lorg/springframework/beans/factory/config/ConstructorArgumentValues;Lorg/springframework/beans/MutablePropertyValues;Ljava/lang/ClassLoader;)Lorg/springframework/beans/factory/support/AbstractBeanDefinition;(BeanDefinitionReaderUtils.java:50)
{...snipped...}
Clearly, Spring can't find the ApolloSessionManager class (or one of its dependent classes, the error message is somewhat unclear in places).
However, the ApolloSessionManager.class file is there, under the mercurybusiness.jar directory (with package structure).
// from ${DOMAIN_HOME}/applications/Mercury:
ls -la mercurybusiness.jar/com/sg/sims/mercury/apolloweb/service/processor/ApolloSessionManager
-rw-r--r-- 1 root root 7162 Jan 31 17:20 mercurybusiness.jar/com/sg/sims/mercury/apolloweb/service/processor/ApolloSessionManager.class
mercurybusiness.jar (in turn) is present in the MercuryEJB.jar MANIFEST.MF file:
// ${DOMAIN_HOME}/applications/Mercury/MercuryEJB.jar/META-INF/MANIFEST.MF:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.1
Created-By: 1.4.2_05-b04 (Sun Microsystems Inc.)
Class-Path: mercurycommon.jar mercuryresources.jar mercurybusiness.jar mercuryserviceflow.jar mercuryutils.jar spectraconnector.rar {...snipped...}
The same situation appears for the classes that ApolloSessonManager depends on: MercuryLogger (a log4j wrapper) and the HTTPClient.jar classes
(e.g. Cookie, etc), except 3rd party jars are listed in the MANIFEST.MF of MercuryEJB.jar but are not exploded.
There is no weblogic-application.xml file to override the default classloader hierarchy, so my understanding
is that everything in the application should share a single classloader.
So I am at a loss to understand why classes in MercuryWeb.war can not load classes in dependent jars of MercuryEJB.jar.
As a note, if I add /root/bea/user_projects/domains/clusterdomain/applications/Mercury/mercurybusiness.jar to the CLASSPATH variable in startManagedWebLogic.sh,
this error disappears of course, and it barfs on the next application class it can't find (in one of the other exploded jars that MercuryEJB.jar depends on.
Can someone help point out what I may be missing?
Chris Goodacre
// config.xml
<?xml version="1.0" encoding="UTF-8"?>
<Domain ConfigurationVersion="8.1.5.0" Name="clusterdomain">
<Server Cluster="SIMS_TEST_CLUSTER_1" ListenAddress=""
ListenPort="9001" Name="AdminServer" NativeIOEnabled="true"
ReliableDeliveryPolicy="RMDefaultPolicy" ServerVersion="8.1.5.0">
<SSL Enabled="false" HostnameVerificationIgnored="false"
IdentityAndTrustLocations="KeyStores" Name="AdminServer"/>
</Server>
<WSReliableDeliveryPolicy DefaultRetryCount="10"
DefaultTimeToLive="60000" Name="RMDefaultPolicy" Store="FileStore"/>
<Security Name="clusterdomain"
PasswordPolicy="wl_default_password_policy"
Realm="wl_default_realm" RealmSetup="true"/>
<EmbeddedLDAP
CredentialEncrypted="{3DES}dMeE/vNpCcbjzOMZGfNeShv5VFZuQ=" Name="clusterdomain"/>
<SecurityConfiguration
CredentialEncrypted="{3DES}jFRG5NzABP8IAJa5M/PNNRCtZYaqkc2zUTYjlysL+md+TAgZw6IfgCjzzre4e7p5gyJEt+0UkPXNleN0QtW7Ef"
Name="clusterdomain" RealmBootStrapVersion="1"/>
<Realm FileRealm="wl_default_file_realm" Name="wl_default_realm"/>
<FileRealm Name="wl_default_file_realm"/>
<PasswordPolicy Name="wl_default_password_policy"/>
<JMSConnectionFactory DefaultDeliveryMode="Non-Persistent"
JNDIName="jms/ConnectionFactory" Name="ConnectionFactory" Targets="AdminServer"/>
<JMSFileStore Directory="rmfilestore" Name="FileStore"/>
<JMSServer Name="WSStoreForwardInternalJMSServerAdminServer"
Store="FileStore" Targets="AdminServer">
<JMSQueue CreationTime="1123128740234"
JNDIName="jms.internal.queue.WSStoreForwardQueue"
JNDINameReplicated="false" Name="WSInternaljms.internal.queue.WSStoreForwardQueueAdminServer"/>
<JMSQueue CreationTime="1123128740390"
JNDIName="jms.internal.queue.WSDupsEliminationHistoryQueue"
JNDINameReplicated="false" Name="WSInternaljms.internal.queue.WSDupsEliminationHistoryQueueAdminServer"/>
<JMSQueue CreationTime="1123128837453" JNDIName="jms/MenuQueue"
Name="MenuQueue" StoreEnabled="false"/>
<JMSQueue CreationTime="1123128864296"
JNDIName="jms/MenuXMLQueue" Name="MenuXMLQueue" StoreEnabled="false"/>
<JMSQueue CreationTime="1123128892343"
JNDIName="jms/DataSyncQueue" Name="DataSyncQueue" StoreEnabled="false"/>
<JMSQueue CreationTime="1123128915421"
JNDIName="jms/LoginRefreshQueue" Name="LoginRefreshQueue" StoreEnabled="false"/>
<JMSQueue CreationTime="1123128937046"
JNDIName="jms/ProfileQueue" Name="ProfileQueue" StoreEnabled="false"/>
<JMSQueue CreationTime="1123128957125"
JNDIName="jms/ReportsQueue" Name="ReportsQueue" StoreEnabled="false"/>
</JMSServer>
<Cluster Name="SIMS_TEST_CLUSTER_1"/>
<Server Cluster="SIMS_TEST_CLUSTER_1" ExpectedToRun="false"
ListenPort="9999" Name="ClusterMember1" ServerVersion="8.1.5.0">
<ServerDebug Name="ClusterMember1"/>
<SSL IdentityAndTrustLocations="KeyStores" Name="ClusterMember1"/>
<KernelDebug Name="ClusterMember1"/>
<Log Name="ClusterMember1"/>
<ServerStart Name="ClusterMember1"
PasswordEncrypted="{3DES}TC7nfOvKF0xwJB/f+tyYwQ==" Username="toolbox"/>
<WebServer Name="ClusterMember1"/>
<COM Name="ClusterMember1"/>
<IIOP Name="ClusterMember1"/>
<JTAMigratableTarget Name="ClusterMember1" UserPreferredServer="ClusterMember1"/>
<JTARecoveryService Name="ClusterMember1"/>
</Server>
<MigratableTarget Cluster="SIMS_TEST_CLUSTER_1"
Name="ClusterMember1 (migratable)"
Notes="This is a system generated default migratable target for a server. Do not delete manually." UserPreferredServer="ClusterMember1"/>
<Server Cluster="SIMS_TEST_CLUSTER_1" ExpectedToRun="false"
ListenPort="9998" Name="ClusterMember2" ServerVersion="8.1.5.0">
<ServerDebug Name="ClusterMember2"/>
<SSL IdentityAndTrustLocations="KeyStores" Name="ClusterMember2"/>
<KernelDebug Name="ClusterMember2"/>
<Log Name="ClusterMember2"/>
<ServerStart Name="ClusterMember2"
PasswordEncrypted="{3DES}TC7nfOvKF0xwJB/f+tyYwQ==" Username="toolbox"/>
<WebServer Name="ClusterMember2"/>
<COM Name="ClusterMember2"/>
<IIOP Name="ClusterMember2"/>
<JTAMigratableTarget Name="ClusterMember2" UserPreferredServer="ClusterMember2"/>
<JTARecoveryService Name="ClusterMember2"/>
</Server>
<MigratableTarget Cluster="SIMS_TEST_CLUSTER_1"
Name="ClusterMember2 (migratable)"
Notes="This is a system generated default migratable target for a server. Do not delete manually." UserPreferredServer="ClusterMember2"/>
<JDBCConnectionPool DriverName="com.sybase.jdbc2.jdbc.SybDriver"
Name="MercuryJDBCConnPool"
PasswordEncrypted="{3DES}Enwr7V6DdUk="
Properties="user=dbuser;url=jdbc:sybase:Tds:10.15.3.66:4100/ENT_60_DEV;networkProtocol=Tds;portNumber=4100;userName=dbuser;databaseName=ENT_60_DEV;serverName=10.15.3.66"
Targets="SIMS_TEST_CLUSTER_1" TestTableName="SQL SELECT 1" URL="jdbc:sybase:Tds:10.15.3.66:4100/ENT_60_DEV"/>
<JDBCDataSource JNDIName="jdbc/MercuryDS" Name="MercuryDS"
PoolName="MercuryJDBCConnPool" Targets="SIMS_TEST_CLUSTER_1"/>
<MigratableTarget Cluster="SIMS_TEST_CLUSTER_1"
Name="AdminServer (migratable)"
Notes="This is a system generated default migratable target for a server. Do not delete manually." UserPreferredServer="AdminServer"/>
<Application Name="Mercury"
Path="/root/bea/user_projects/domains/clusterdomain/applications/Mercury"
StagingMode="nostage" TwoPhase="true">
<EJBComponent Name="MercuryEJB.jar" Targets="ClusterMember1" URI="MercuryEJB.jar"/>
<WebAppComponent Name="Apollo" Targets="ClusterMember1" URI="MercuryWeb.war"/>
<ConnectorComponent Name="SpectraConnector.rar"
Targets="ClusterMember1" URI="SpectraConnector.rar"/>
</Application>
</Domain>
////////////////////////////////////////////////////////////Sorry, I don't have the response to your question.
But I'd like to know how youmake your servlet and your applet communicate.
I'm building a web site using both applets and servlet. And I nned to make them communicate. I'm trying to use RMI but I get many problems.
Can I know Which solution you have chosen for applet-servlet communication ?
Thank's. -
Not another classpath problem...
I'm trying to use the TableExample demo from jdk1.3.1. I'm using cloudscape as the database for this from the j2sdkee1.3.1.
The database starts no problem (rmi mode).
So I run the example and provide the database driver in the popup window, only to get the exception:
java.lang.ClassNotFoundException: COM.cloudscape.core.RmiJdbcDriver
So it can't find the class at all. So to try things out I attempt to run this class (knowing that it won't have a main method, but just to see if it is found):
C:\jdk1.3.1\demo\jfc\TableExample>java -classpath %CLASSPATH% COM.cloudscape.core.RmiJdbcDriver
Exception in thread "main" java.lang.NoSuchMethodError: main
So my system can find the class but not the main method in it. So why can't the demo application also find this class?
I must have read lots of tracks on classpath and though I knew what I was doing (adding all paths/jars to the classpath environment variable). Obviously I don't!
ps Both running the application and trying to run the class were from the same shell using the same value of classpath.I work under NT 4.0 and am new to java. I have this batch file which I run in a command window before starting to work:
PATH=.;D:\Java\jdk1.3.1_02\bin;D:\Java\jdk1.3.1_02\jre\bin;C:\WINNT\system32;C:\WINNT;
SET CLASSPATH=D:\Java\jdk1.3.1_02\jre\lib;.
Notice the ".", that tells Windows NT to look in the current directory.
I do it this way because I have other development tools installed which also use Java and I did not want to interfere with them as I was learning.
Good luck
Bill -
JavaFx + rmi server problem
I have a problem not with code but with the way how rmi is working. I have such a classes for Server side which is RmiServer.java RmiInterface.java and UNode.java (this one is for supporting linked lists on server side) and my client side looks like main.fx, list.fx RmiClient.java and RmiInterface.java. The problem is that server files and client files are suppose to be in the same directory. Im using netbeans and I can not create an fx project with two main classes. So what i was trying to do is to create two projects one for server and second for client + fx script. But then I get the error about paths. And I can not copy those files because If i do so they immediately appear in second project. So guys do you have any idea how can I solve this problem. If it is helpful I can attach java files. Because what I understood is the server side is suppose to run all the time and different clients get connected to it so it can not be in the same project.
P.S. When I was checking the rmi without connecting it to javafx it was working properly.
Sorry for my English:P
Edited by: ZIelonyWpaletki on Oct 21, 2009 1:11 PMSometimes you are starting the RMI Registry with the correct classpath, or in the correct directory, and sometimes you aren't.
Maybe you are looking for
-
How can I use my HP 1315 All-in-One scan features on my computer?
I am able to use the printing function from my computer but am unable to use the scanning feature on my printer. I have downloaded the Apple stuff and have searched HP (many features, including a diagnostic test, are blocked by Apple!!) and can't fi
-
Can Lookout Operate in any way with multiple monitors/video boards in one computer?
Windows supports multie monitors in varios wasy. Can I utilize Lookout with this functionality?
-
URL call works in windows and not in linux
HI, I am using the below code to call a URL from my java code. It works fine when I access the application from local tomcat service, but it doesn't work under linux where my production server is setup. URL url = new URL(urlData);
-
Where can i but a 1st generation I pod Connector?
I am trying to help a friend get his music off a first generation I Pod but he does not have the connector for the computer. Can you still buy these? If so Where? Anyone have one I could borrow? (ill pay shipping to and from) Also will I be able to h
-
Credit Clarification workflow Contract Accounts Receivable and Payable
Dear Experts, I am having the requirement of workflow in credit clarification process. I am not able to activate the workflow for this process. Could anyone suggest me how to activate the workflow in credit clarification. Thanks Aswin