Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

EJB Deploy Error

2 views
Skip to first unread message

Matthias Kümpel

unread,
Aug 30, 2001, 10:07:42 AM8/30/01
to
Hello,

Im using VisualAge for Java 3.5.3 to develop EJBs and generate the
deployed code for WebSphere 3.5.4 Advanced Server.

When deploying the EJBs to WebSphere im asked ( not for all EJBs though
) if WAS should enable the Work Load Management.

Everytime i answer yes i get an exception. When i answer no the EJB gets
created and im able to start the EJB container.

The exception is:


Exception:
rm/shv/msg/RMExceptionjava.lang.NoClassDefFoundError:
rm/shv/msg/RMException


--------
com.ibm.ejs.sm.client.command.ExecutionException: Error while deploying
jar file.

at
com.ibm.ejs.sm.client.RepositoryOpException.<init>(RepositoryOpException.java:51)

at
com.ibm.ejs.sm.client.command.ExecutionException.<init>(ExecutionException.java:63)

at
com.ibm.ejs.sm.client.command.DeployJarCommand.execute(DeployJarCommand.java:86)

at
com.ibm.ejs.sm.client.command.CommandManager$ExecutionThread.run(CommandManager.java:270)

at
com.ibm.ejs.sm.client.command.ThreadPool$PooledThread.run(ThreadPool.java(Compiled
Code))


The class that seems to cause this problem ( RMException, a custom
Exception class ) is DEFINITELY part of the class path.
( dependent classpath in the node )


Anyone experienced similar problems ?

Alex Matthews

unread,
Aug 30, 2001, 12:34:20 PM8/30/01
to
Experience similar problems? As a consultant, all the time :(

If you export DEPLOYED EJB JARs from VAJ ignore the question - your
beans are WLM enabled.

In my experience the problem may actually be something the exception
class needs, rather than the class itself. Sometimes people get confused
about whether to use ; or : as path separators on UNIX vs NT - that
always causes red faces.

Alex.

--
Alex Matthews
mailto:al...@xelacom.com
http://www.xelacom.com/

Matthias Kümpel

unread,
Aug 31, 2001, 3:46:54 AM8/31/01
to
When i ignore the question the EJB Container can be startet but when i try to access the bean i
get the following remote exception:

java.rmi.MarshalException: CORBA MARSHAL 0 No; nested exception is:
org.omg.CORBA.MARSHAL: Unable to read value from underlying bridge : Unable to locate value
class rm.shv.adr.ejb.AdrImportBean minor code: 0 completed: No

This bean is part of the deployed code that WAS used to create the EJB.

Getting a reference to the bean through the home interface works fine, i get the exception when
i invoke the first buisness methode on this session bean.

Again: the class that seems to cause the error when i try to enable the WLM by WAS is part of
the classpath.

My configuration is:
Windows 2000 Server
WebSphere 3.5.4 AE
UDB 7.2
VisualAge for Java 3.5.3 EE

Regards,
Matthias Kümpel

Alex Matthews

unread,
Aug 31, 2001, 6:23:33 AM8/31/01
to
Well, you could always try tracing the admin server when you install
your beans. Try to narrow it down to a single bean with this problem -
this will reduce the amount of trace. Use the admin console to enable
trace on the admin server (I usually just trace everything), reproduce
the problem, then stop the trace and dump the ring buffer to a file.

Interpreting the trace is a bit of a black art - it's really intended
for IBM support - but a quick way to get started is to look for the
problem exception and work backwards. Just remember that not all
exceptions in the trace are necessarily problems. Oh, and E stands for
Event NOT Error.

What you should see is trace from the various WebSphere classloaders
which should help you pin down the problem.

HTH, Alex.

Matthias Kümpel

unread,
Aug 31, 2001, 6:39:21 AM8/31/01
to
For other beans the exception message has nothing to do with my custom class:

Exception:
com.ibm.ejs.sm.exception.DeploymentException:


--------
com.ibm.ejs.sm.client.command.ExecutionException: Error during deploying jar file.

at com.ibm.ejs.sm.client.RepositoryOpException.<init>(RepositoryOpException.java:51)

at com.ibm.ejs.sm.client.command.ExecutionException.<init>(ExecutionException.java:63)

at com.ibm.ejs.sm.client.command.DeployJarCommand.execute(DeployJarCommand.java:86)

at com.ibm.ejs.sm.client.command.CommandManager$ExecutionThread.run(CommandManager.java:270)

at com.ibm.ejs.sm.client.command.ThreadPool$PooledThread.run(ThreadPool.java(Compiled Code))


Ill try tracing the admin server now ...

Thanks,
Matthias

Matthias Kümpel

unread,
Aug 31, 2001, 7:35:54 AM8/31/01
to
Here are two lines of the trace dump:

[01.08.31 12:56:28:745 CEST] ed9aa27a EJBJar < loadDeploymentDescriptors: Cannot instantiate
deployment descriptor: rm/shv/adr/ejb/AdrImport.ser
java.lang.ClassNotFoundException: rm.shv.adr.ejb.AdrImportBean

The class that cant be found ( rm.shv.adr.ejb.AdrImportBean ) is part of the deployed jar file.

The deployed jar file contains 2 Session Beans.

Another deployed jar file containing 8 Entity Beans worked fine. WAS didnt even ask me to enable WLM.

Any idea ?

Thanx in advance,
Matthias Kümpel

Alex Matthews

unread,
Aug 31, 2001, 8:22:27 AM8/31/01
to
rm.shv.adr.ejb.AdrImportBean is your EJB implementation class, right?

More than likely this message means that a class required by this class
cannot be found. This dependent class is likely used in a method
signature - it could be your exception class you mentioned appeared in
messages earlier.

If the class, plus anything that class needs, is on the node dependent
classpath you should be OK. If you want to be sure try placing your
dependent classes in the EJB JAR with your EJBs (the VAJ SmartGuide
allows you to select additional classes).

I'm fairly confident this will boil down to a missing class on the class
path.

Alex.

Matthias Kümpel

unread,
Aug 31, 2001, 11:34:53 AM8/31/01
to
I spent some more time on the trace dump and found some strange behaviour:


WAS seems to look for the class RMException several times:

1. Case: RMException is found in D:\_Source_\_SHV_\BASE\
( which is the first entry in the dependent classpath )

Dump:
----------------------------------------------------------------------------------------

[01.08.31 17:05:48:398 CEST] edecdd01 JarClassLoade < findClass
[01.08.31 17:05:48:398 CEST] edecdd01 JarClassLoade > findClass
"rm.shv.msg.RMException"
[01.08.31 17:05:48:398 CEST] edecdd01 JarClassLoade E Looking in:
EJBDir[D:\_Source_\_SHV_\BASE\]
[01.08.31 17:05:48:398 CEST] edecdd01 EJBDir > getClassBytes
"rm.shv.msg.RMException"
[01.08.31 17:05:48:398 CEST] edecdd01 EJBDir < getClassBytes
[01.08.31 17:05:48:398 CEST] edecdd01 JarClassLoade < findClass
[01.08.31 17:05:48:398 CEST] edecdd01 JarClassLoade > findClass
"rm.shv.msg.RMInformation"
[01.08.31 17:05:48:398 CEST] edecdd01 JarClassLoade E Looking in:
EJBDir[D:\_Source_\_SHV_\BASE\]
[01.08.31 17:05:48:398 CEST] edecdd01 EJBDir > getClassBytes
"rm.shv.msg.RMInformation"
[01.08.31 17:05:48:398 CEST] edecdd01 EJBDir < getClassBytes
[01.08.31 17:05:48:398 CEST] edecdd01 JarClassLoade < findClass

-----------------------------------------------------------------------------------------


2. Case Now WAS does something strange with the dependent classpath:
It seems as if WAS adds D:\WINNT\System32\_wlmjar in front of it .. and finally
drops all the rest of the dependent classpath:

Dump:
----------------------------------------------------------------------------------------

[01.08.31 17:05:48:408 CEST] edecdd01 WLMJar > WLMJar:
"D:\_Source_\_SHV_\EJB\RMSHVADRS_deployed.jar"
<null>

"D:\_Source_\_SHV_\BASE\;D:\_Source_\_SHV_\EXT\mailapi.jar;D:\_Source_\_SHV_\EXT\smtp.jar;D:\_Source_\_SHV_\EXT\activation.jar;D:\_Source_\_SHV_\EJB\RMSHVADRE_client.jar;D:\_Source_\_SHV_\EJB\RMSHVBEWE_client.jar"

[01.08.31 17:05:48:408 CEST] edecdd01 WLMJar > loadDependantClasspath:

"D:\WINNT\system32\_wlmjar\;D:\_Source_\_SHV_\EJB\RMSHVADRS_deployed.jar;D:\_Source_\_SHV_\BASE\;D:\_Source_\_SHV_\EXT\mailapi.jar;D:\_Source_\_SHV_\EXT\smtp.jar;D:\_Source_\_SHV_\EXT\activation.jar;D:\_Source_\_SHV_\EJB\RMSHVADRE_client.jar;D:\_Source_\_SHV_\EJB\RMSHVBEWE_client.jar"

[01.08.31 17:05:48:408 CEST] edecdd01 ClasspathMana > addPath:

"D:\WINNT\system32\_wlmjar\;D:\_Source_\_SHV_\EJB\RMSHVADRS_deployed.jar;D:\_Source_\_SHV_\BASE\;D:\_Source_\_SHV_\EXT\mailapi.jar;D:\_Source_\_SHV_\EXT\smtp.jar;D:\_Source_\_SHV_\EXT\activation.jar;D:\_Source_\_SHV_\EJB\RMSHVADRE_client.jar;D:\_Source_\_SHV_\EJB\RMSHVBEWE_client.jar"

[01.08.31 17:05:48:408 CEST] edecdd01 JarClassLoade > addCPElement
EJBDir[D:\WINNT\system32\_wlmjar\]
[01.08.31 17:05:48:408 CEST] edecdd01 JarClassLoade < addCPElement

----------------------------------------------------------------------------------------
( D:\_Source_\_SHV_\EJB\RMSHVADRS_deployed.jar is the deployed jar i try to deploy to WAS )


3. Case Here WAS again looks for RMException ... but not like in the 1. Case starting
in the dependent classpath. WAS only looks in D:\WINNT\System32\_wlmjar\ and
in the deployed jar file itself.

Why not in the dependent classpath ? Its definitely there !

Dump:
-----------------------------------------------------------------------------------------

[01.08.31 17:05:48:458 CEST] edecdd01 JarClassLoade < findClass
[01.08.31 17:05:48:458 CEST] edecdd01 JarClassLoade > findClass
"rm.shv.msg.RMException"
[01.08.31 17:05:48:458 CEST] edecdd01 JarClassLoade E Looking in:
EJBJar[D:\_Source_\_SHV_\EJB\RMSHVADRS_deployed.jar]
[01.08.31 17:05:48:458 CEST] edecdd01 EJBZip > getClassBytes
"rm.shv.msg.RMException"
[01.08.31 17:05:48:458 CEST] edecdd01 JarClassLoade < findClass: Class not found
[01.08.31 17:05:48:458 CEST] edecdd01 ActiveFileBro D isFileWLMized caught exception
java.lang.NoClassDefFoundError: rm/shv/msg/RMException
at java.lang.Class.getMethods0(Native Method)
at java.lang.Class.getMethods(Class.java(Compiled Code))
at com.ibm.ejs.deployment.DeploymentUtil.getAllMethods(DeploymentUtil.java(Compiled Code))
at com.ibm.ejs.util.PortableDeploymentDescriptor.<init>(PortableDeploymentDescriptor.java(Compiled Code))
at com.ibm.ejs.util.jar.EJBJar.loadDeploymentDescriptors(EJBJar.java(Compiled Code))
at com.ibm.ejs.util.jar.EJBJar.loadDeploymentDescriptors(EJBJar.java:113)
at com.ibm.ejs.util.jar.EJBJar.<init>(EJBJar.java:28)
at com.ibm.ejs.wlm.wlmsg.JarUtil.<init>(JarUtil.java:58)
at com.ibm.ejs.wlm.wlmsg.WLMJar.<init>(WLMJar.java:71)
------------------------------------------------------------------------------------------------


I checked the system32 directory: _wlmjar doesnt exist !

Ill repost this mail under the topic "WLM & dependent classpath".

Thanx,
Matthias Kümpel

0 new messages