Classloading Order in /WEB-INF/lib
hi all,
we are using wl 8.1sp2 and we have a problem with the classloading in a webapp. The requested class is loaded on startup.
My question is: In which ordering are the classes - or better jar-files - loaded, which are located in the /WEB-INF/lib directory... is it alpha-numerical? random?
Is there a way to control the ordering?
I browsed the tutorials but could not find an answer to that question.
- odilo
I am running into exactly the same issue. I haven't found any solution yet.
Our primary reason for having the same classes in multiple jars is for patch release purposes. We would like to drop a patch jar into a directory (ideally somewhere other than WEB-INF/lib) and prepend it to the classpath via some mechanism... for example the Class-Path attr of MANIFEST.MF
One alternative is to replace the entire existing core jar file with a patched version. This is quite inconvenient with our current QA process, since the complete functionality would have to be re-tested rather than just a point test of the patched area.
I could also envision a need for this in a situation where you have third-party libraries. It's not always easy to control their packaging. Sometimes they come bundled with old utility classes which you would like to shadow with newer versions.
Similar Messages
-
WLS 6.1sp3 classloader loads all archives within WEB-INF/lib/*
Within the lib directory of my webapp, I have several different versions of myarchive.jar.
In WLS 6.0 I would keep older version within the lib directory but renaming them
so that the current release would get loaded.
$WL_HOME/config/mydomain/applications/myapp/WEB-INF/lib
myarvhive.jar
myarvhive.jar_bf_2.3release
myarvhive.jar_bf_2.4release
myarvhive.jar_bf_2.5release
In WLS 6.0 this method of storing the previous archive version was safe. However,
now after implementing WLS 6.1, I only can have the current archive release within
the lib directory. If the previous versions are store within the lib, old methods
are used.
I do not understand the WLS classloader behavior and why is it different from
WLS 6.0?
wls- WebLogic Server 6.1 SP3
platform- OSF1 localhost V5.1 1885 alpha
jvm- Classic VM (build 1.3.0-1, native threads, jit)
Within the lib directory of my webapp, I have several different versions of myarchive.jar.
In WLS 6.0 I would keep older version within the lib directory but renaming them
so that the current release would get loaded.
$WL_HOME/config/mydomain/applications/myapp/WEB-INF/lib
myarvhive.jar
myarvhive.jar_bf_2.3release
myarvhive.jar_bf_2.4release
myarvhive.jar_bf_2.5release
In WLS 6.0 this method of storing the previous archive version was safe. However,
now after implementing WLS 6.1, I only can have the current archive release within
the lib directory. If the previous versions are store within the lib, old methods
are used.
I do not understand the WLS classloader behavior and why is it different from
WLS 6.0?
wls- WebLogic Server 6.1 SP3
platform- OSF1 localhost V5.1 1885 alpha
jvm- Classic VM (build 1.3.0-1, native threads, jit)
-
WEB-INF/lib WEB-INF/classes ClassLoader problem
I have observed that in WL 8.1, a class in a jar deployed in WEB-INF/lib does not have the ability to access a resource deployed in WEB-INF/classes. Is this the intended behavior to not have WEB-INF/lib and WEB-INF/classes in the same ClassLoader? If so, is there a way to configure this behavior to give permission to classes loaded in WEB-INF/lib to the ClassLoader that has WEB-INF/classes?
thanks,
Kenneth ShinAre you really certain that's what's happening? Is it possible the jar file stored in WEB-INF/lib isn't found elsewhere in the CLASSPATH, perhaps by a higher-level classloader? You might consider setting "prefer-web-inf-classes" to true in your weblogic.xml file, to ensure that the jars in WEB-INF/lib are being used instead of from somewhere else.
-
Jar files not in WEB-INF/lib (custom ClassLoader?)
I need to use classes in my JSP that do not come from a JAR file in the standard location. Sounds like I "simply" need to extend the ClassLoader used by the app server for loading the JSP. Is there any way of doing that?
Example: my.jsp
<h1>Hi</h1>
<%
FOO x = new FOO(); // code from a non-standard place
ClassLoader cl = getClass().getClassLoader();
%>
I cannot put FOO.class into WEB-INF/lib or any of the standard places. Ideally I'd like to give the ClassLoader (cl above) a different (custom) parent ClassLoader which would know how to resolve FOO.class.
I've poured over docs and Google and WebSphere and the Tomcat source code. Is this request of mine really so outrageous? I'm about the give up. What good are custom classloaders if one can't use them?You are essentially making the argument "All that Java
needs is a URLClassLoader, and no one has any need for
any custom ClassLoaders". (After all, that's all that
I seem to have in a JSP context, with a list of
hard-coded URLs into that URLClassLoader ...)
Do a Google search on "custom ClassLoader" and you
will find lots of reasons why people want to have
custom ClassLoaders, such as ones that don't use any
JAR or .class files ... which would qualify as why I
can't put them into a certain place ...To be fair to duffymo, that is not how I read his argument. I read it as:
"Sometimes we try to do things the hard way. If we sit back and rethink the problem, an easier solution might come about."
I think this is a good opportunity to explain why you can not use the normal class loader heirarchy. You have no JARs and no .class files? Then where are you getting the class definitions? If you explain enough so that we might understand the problem:
1) we might be able to come up with a solution or
2) you might see a different approach before you are even done explaining
#2 has happened to me more times then I can count. I sit down formulating a question for the forums, make sure I include enough detail to explain my problem. And by the time I am done I have a new (usually simpler) approach to solving the problem.
Or you could sit and defend your first approach without providing any context and accomplish nothing. So its up to you. -
Oc4j 10.1.3.0.0Prev4 does not load libs in WEB-INF/lib
Hi,
trying to use an existing application with oc4j I have serious problems.
When trying to deploy I get exceptions (ClassNotFound) of classes that are in libs that are in the WEB-INF/lib folder of the war file I want to deploy:
05/09/23 17:20:21 CharScanner; panic: ClassNotFoundException: org.hibernate.hql.ast.HqlToken
This class is in hibernate3.jar which is included in the war-file.
When I place all the libs into the applib folder it does deploy. But then it crashes at runtime telling me the classes are duplicate (one in the war, one in applib).
Any suggestions what I can do would be greatly appreciated.
NorbertHello,
Instead of simply dropping the Jar file in the applib directory you should create shared libraries that will give you better control of what is happening at the classloader level (System, Application and Web Application)
Please take a look to the 10.1.3 How tos about shared library. (Swapping XML parser and JDBC driver), and also to the documentation, chapter 7 "Using Shared Libraries" of the OC4J Configuration and Administration Guide
Regards
Tugdual Grall -
JAR Files not found from /WEB-INF/lib
It appears that weblogic server (6.1 SP2 I believe) is not finding all
the jar files in the /WEB-INF/lib directory. Some, but not all. I am
not using a WAR file, the dirctories are right on the disk. I start
out with the following jar files in my WEB-INF/lib directory:
Volume in drive C has no label.
Volume Serial Number is 641F-B7A0
Directory of C:\bea\wlserver6.1\config\mydomain\applications\garyapp\WEB-INF\li
b
02/13/2002 11:34a <DIR> .
02/13/2002 11:34a <DIR> ..
01/25/2002 09:44a 45,386 activation-1.0.1.jar
01/07/2002 04:49p 1,124,276 classes12.jar
01/25/2002 09:44a 379,658 ecs-1.4.1.jar
01/25/2002 09:44a 175,666 hsql.jar
01/25/2002 09:44a 76,964 httpunit.jar
01/25/2002 09:44a 236,041 idb.jar
01/25/2002 09:44a 29,937 jakarta-regexp-1.3-dev.jar
01/25/2002 09:44a 84,854 jdbc-se2.0.jar
01/25/2002 09:44a 6,727 jdbc2_0-stdext.jar
01/25/2002 09:44a 98,496 jndi-1.2.1.jar
01/25/2002 09:44a 17,619 jta1.0.1.jar
01/25/2002 09:44a 97,382 junit-3.2.jar
01/25/2002 09:44a 152,037 log4j-1.1.jar
01/25/2002 09:44a 280,984 mail-1.2.jar
01/25/2002 09:44a 109,927 mm.mysql-2.0.4.jar
01/25/2002 09:44a 76,734 oro.jar
01/25/2002 09:44a 194,500 postgresql.jar
01/25/2002 09:44a 4,041 README.txt
01/25/2002 09:44a 208,635 sapdbc.jar
02/13/2002 11:21a 216,879 STT.jar
02/08/2002 12:15p 707,897 turbine-2.2b1.jar
01/25/2002 09:44a 369,494 velocity-1.2-dev.jar
01/25/2002 09:44a 31,326 village-1.5.1.jar
01/25/2002 09:44a 436,094 xalan-1.2.1.jar
01/25/2002 09:44a 840,704 xerces-1.3.0.jar
01/25/2002 09:44a 47,926 xmlrpc.jar
26 File(s) 6,050,184 bytes
2 Dir(s) 29,539,246,080 bytes free
When I run the server, only these files are put in the tmp_war
directory:
Volume in drive C has no label.
Volume Serial Number is 641F-B7A0
Directory of C:\bea\wlserver6.1\config\mydomain\applications\garyapp\WEB-INF\_t
mp_war_myserver_myserver_garyapp\WEB-INF\lib
02/15/2002 12:31p <DIR> .
02/15/2002 12:31p <DIR> ..
02/15/2002 12:31p 1,124,276 classes1263855.jar
02/15/2002 12:31p 175,666 hsql63856.jar
02/15/2002 12:31p 76,964 httpunit63857.jar
02/15/2002 12:31p 236,041 idb63858.jar
02/15/2002 12:31p 6,727 jdbc2_0-stdext63859.jar
02/15/2002 12:31p 76,734 oro63860.jar
02/15/2002 12:31p 194,500 postgresql63861.jar
02/15/2002 12:31p 208,635 sapdbc63862.jar
02/15/2002 12:31p 216,879 STT63863.jar
02/15/2002 12:31p 47,926 xmlrpc63864.jar
10 File(s) 2,364,348 bytes
2 Dir(s) 29,539,078,144 bytes free
It's not only that the files don't show up, of course: if I run the
system and it makes references to the files, I get a
ClassNotFoundException:
<Feb 15, 2002 12:32:39 PM EST> <Error> <HTTP>
<[WebAppServletContext(7243997,gar
yapp,/garyapp)] Error loading servlet: "garyapp"
java.lang.ClassNotFoundException: org.apache.turbine.Turbine
at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClass
Loader.java:179)
at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAw
areClassLoader.java:65)
at java.lang.ClassLoader.loadClass(ClassLoader.java:297)
at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAw
areClassLoader.java:43)
at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubI
mpl.java:583)
at weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.
java:368)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:242)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:200)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
rvletContext.java:2495)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
pl.java:2204)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
>
<Feb 15, 2002 12:32:39 PM EST> <Error> <HTTP>
<[WebAppServletContext(7243997,gar
yapp,/garyapp)] Servlet failed with ServletException
javax.servlet.ServletException: Servlet class:
'org.apache.turbine.Turbine' coul
d not be loaded - the requested class wasn't found in the classpath:
'C:\bea\wl
server6.1\config\mydomain\applications\garyapp;C:\bea\wlserver6.1\.\config\mydom
ain\applications\garyapp\WEB-INF\classes;C:\bea\wlserver6.1\.\config\mydomain\ap
plications\garyapp\WEB-INF\_tmp_war_myserver_myserver_garyapp\WEB-INF\lib\classe
s1263855.jar;C:\bea\wlserver6.1\.\config\mydomain\applications\garyapp\WEB-INF\_
tmp_war_myserver_myserver_garyapp\WEB-INF\lib\hsql63856.jar;C:\bea\wlserver6.1\.
\config\mydomain\applications\garyapp\WEB-INF\_tmp_war_myserver_myserver_garyapp
\WEB-INF\lib\httpunit63857.jar;C:\bea\wlserver6.1\.\config\mydomain\applications
\garyapp\WEB-INF\_tmp_war_myserver_myserver_garyapp\WEB-INF\lib\idb63858.jar;C:\
bea\wlserver6.1\.\config\mydomain\applications\garyapp\WEB-INF\_tmp_war_myserver
myservergaryapp\WEB-INF\lib\jdbc2_0-stdext63859.jar;C:\bea\wlserver6.1\.\confi
g\mydomain\applications\garyapp\WEB-INF\_tmp_war_myserver_myserver_garyapp\WEB-I
NF\lib\oro63860.jar;C:\bea\wlserver6.1\.\config\mydomain\applications\garyapp\WE
B-INF\_tmp_war_myserver_myserver_garyapp\WEB-INF\lib\postgresql63861.jar;C:\bea\
wlserver6.1\.\config\mydomain\applications\garyapp\WEB-INF\_tmp_war_myserver_mys
erver_garyapp\WEB-INF\lib\sapdbc63862.jar;C:\bea\wlserver6.1\.\config\mydomain\a
pplications\garyapp\WEB-INF\_tmp_war_myserver_myserver_garyapp\WEB-INF\lib\STT63
863.jar;C:\bea\wlserver6.1\.\config\mydomain\applications\garyapp\WEB-INF\_tmp_w
ar_myserver_myserver_garyapp\WEB-INF\lib\xmlrpc63864.jar'
at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubI
mpl.java:594)
at weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.
java:368)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:242)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:200)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
rvletContext.java:2495)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
pl.java:2204)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
>Please open a case with support on this issue.
Thanks,
Michael
Gary Bisaga wrote:
It appears that weblogic server (6.1 SP2 I believe) is not finding all
the jar files in the /WEB-INF/lib directory. Some, but not all. I am
not using a WAR file, the dirctories are right on the disk. I start
out with the following jar files in my WEB-INF/lib directory:
Volume in drive C has no label.
Volume Serial Number is 641F-B7A0
Directory of C:\bea\wlserver6.1\config\mydomain\applications\garyapp\WEB-INF\li
b
02/13/2002 11:34a <DIR> .
02/13/2002 11:34a <DIR> ..
01/25/2002 09:44a 45,386 activation-1.0.1.jar
01/07/2002 04:49p 1,124,276 classes12.jar
01/25/2002 09:44a 379,658 ecs-1.4.1.jar
01/25/2002 09:44a 175,666 hsql.jar
01/25/2002 09:44a 76,964 httpunit.jar
01/25/2002 09:44a 236,041 idb.jar
01/25/2002 09:44a 29,937 jakarta-regexp-1.3-dev.jar
01/25/2002 09:44a 84,854 jdbc-se2.0.jar
01/25/2002 09:44a 6,727 jdbc2_0-stdext.jar
01/25/2002 09:44a 98,496 jndi-1.2.1.jar
01/25/2002 09:44a 17,619 jta1.0.1.jar
01/25/2002 09:44a 97,382 junit-3.2.jar
01/25/2002 09:44a 152,037 log4j-1.1.jar
01/25/2002 09:44a 280,984 mail-1.2.jar
01/25/2002 09:44a 109,927 mm.mysql-2.0.4.jar
01/25/2002 09:44a 76,734 oro.jar
01/25/2002 09:44a 194,500 postgresql.jar
01/25/2002 09:44a 4,041 README.txt
01/25/2002 09:44a 208,635 sapdbc.jar
02/13/2002 11:21a 216,879 STT.jar
02/08/2002 12:15p 707,897 turbine-2.2b1.jar
01/25/2002 09:44a 369,494 velocity-1.2-dev.jar
01/25/2002 09:44a 31,326 village-1.5.1.jar
01/25/2002 09:44a 436,094 xalan-1.2.1.jar
01/25/2002 09:44a 840,704 xerces-1.3.0.jar
01/25/2002 09:44a 47,926 xmlrpc.jar
26 File(s) 6,050,184 bytes
2 Dir(s) 29,539,246,080 bytes free
When I run the server, only these files are put in the tmp_war
directory:
Volume in drive C has no label.
Volume Serial Number is 641F-B7A0
Directory of C:\bea\wlserver6.1\config\mydomain\applications\garyapp\WEB-INF\_t
mp_war_myserver_myserver_garyapp\WEB-INF\lib
02/15/2002 12:31p <DIR> .
02/15/2002 12:31p <DIR> ..
02/15/2002 12:31p 1,124,276 classes1263855.jar
02/15/2002 12:31p 175,666 hsql63856.jar
02/15/2002 12:31p 76,964 httpunit63857.jar
02/15/2002 12:31p 236,041 idb63858.jar
02/15/2002 12:31p 6,727 jdbc2_0-stdext63859.jar
02/15/2002 12:31p 76,734 oro63860.jar
02/15/2002 12:31p 194,500 postgresql63861.jar
02/15/2002 12:31p 208,635 sapdbc63862.jar
02/15/2002 12:31p 216,879 STT63863.jar
02/15/2002 12:31p 47,926 xmlrpc63864.jar
10 File(s) 2,364,348 bytes
2 Dir(s) 29,539,078,144 bytes free
It's not only that the files don't show up, of course: if I run the
system and it makes references to the files, I get a
ClassNotFoundException:
<Feb 15, 2002 12:32:39 PM EST> <Error> <HTTP>
<[WebAppServletContext(7243997,gar
yapp,/garyapp)] Error loading servlet: "garyapp"
java.lang.ClassNotFoundException: org.apache.turbine.Turbine
at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClass
Loader.java:179)
at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAw
areClassLoader.java:65)
at java.lang.ClassLoader.loadClass(ClassLoader.java:297)
at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAw
areClassLoader.java:43)
at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubI
mpl.java:583)
at weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.
java:368)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:242)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:200)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
rvletContext.java:2495)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
pl.java:2204)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
>
<Feb 15, 2002 12:32:39 PM EST> <Error> <HTTP>
<[WebAppServletContext(7243997,gar
yapp,/garyapp)] Servlet failed with ServletException
javax.servlet.ServletException: Servlet class:
'org.apache.turbine.Turbine' coul
d not be loaded - the requested class wasn't found in the classpath:
'C:\bea\wl
server6.1\config\mydomain\applications\garyapp;C:\bea\wlserver6.1\.\config\mydom
ain\applications\garyapp\WEB-INF\classes;C:\bea\wlserver6.1\.\config\mydomain\ap
plications\garyapp\WEB-INF\_tmp_war_myserver_myserver_garyapp\WEB-INF\lib\classe
s1263855.jar;C:\bea\wlserver6.1\.\config\mydomain\applications\garyapp\WEB-INF\_
tmp_war_myserver_myserver_garyapp\WEB-INF\lib\hsql63856.jar;C:\bea\wlserver6.1\.
\config\mydomain\applications\garyapp\WEB-INF\_tmp_war_myserver_myserver_garyapp
\WEB-INF\lib\httpunit63857.jar;C:\bea\wlserver6.1\.\config\mydomain\applications
\garyapp\WEB-INF\_tmp_war_myserver_myserver_garyapp\WEB-INF\lib\idb63858.jar;C:\
bea\wlserver6.1\.\config\mydomain\applications\garyapp\WEB-INF\_tmp_war_myserver
myservergaryapp\WEB-INF\lib\jdbc2_0-stdext63859.jar;C:\bea\wlserver6.1\.\confi
g\mydomain\applications\garyapp\WEB-INF\_tmp_war_myserver_myserver_garyapp\WEB-I
NF\lib\oro63860.jar;C:\bea\wlserver6.1\.\config\mydomain\applications\garyapp\WE
B-INF\_tmp_war_myserver_myserver_garyapp\WEB-INF\lib\postgresql63861.jar;C:\bea\
wlserver6.1\.\config\mydomain\applications\garyapp\WEB-INF\_tmp_war_myserver_mys
erver_garyapp\WEB-INF\lib\sapdbc63862.jar;C:\bea\wlserver6.1\.\config\mydomain\a
pplications\garyapp\WEB-INF\_tmp_war_myserver_myserver_garyapp\WEB-INF\lib\STT63
863.jar;C:\bea\wlserver6.1\.\config\mydomain\applications\garyapp\WEB-INF\_tmp_w
ar_myserver_myserver_garyapp\WEB-INF\lib\xmlrpc63864.jar'
at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubI
mpl.java:594)
at weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.
java:368)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:242)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:200)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
rvletContext.java:2495)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
pl.java:2204)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
>--
Michael Young
Developer Relations Engineer
BEA Support -
WLS 8.1 SP4 and web-inf/lib ClassNotFoundExceptions
Hi
Is anyone else having problems with this issue ?
I saw it was resolved (CR161884 & CR173695) in the 8.1 SP3 release, but I'm unable to deploy a web app (either through the console or in the applications directory of the domain) in SP4 as the classloader can't see my JAR file in WEB-INF/lib.
<30-Dec-2004 15:51:47 o'clock GMT> <Error> <Deployer> <BEA-149201> <Failed to co
mplete the deployment task with ID 7 for the application appsdirdp-application
-1.0-SNAPSHOT_war.
weblogic.management.DeploymentException:
Exception:weblogic.management.ApplicationException: start() failed.
Module: dp-application-1.0-SNAPSHOT Error: weblogic.management.Deplo
ymentException: org/picocontainer/gems/StaticFactory - with nested exception:
[java.lang.NoClassDefFoundError: org/picocontainer/gems/StaticFactory]Inside my WAR file, I have a WEB-INF\lib directory, containing picocontainer-gems-1.1-SNAPSHOT.jar which contains the org.picocontainer.gems.StaticFactory class.
I've tried deploying the app both with and without a weblogic.xml file declaring prefer-web-inf-classes set to true.
Rgs
ErikJust as a check, I moved the JAR files to a common lib directory on the server and added them to the system classpath specified in startWeblogic.cmd, and the application starts fine.
Maybe not related, but yesterday I was tried deploying an EJB that was dependent on a JAR file NOT included within its JAR file, but specified with the Class-path entry in the manifest.
The behaviour I saw was WLS swallowed the ClassNotFoundException silently, the admin console reported that the EJB was deployed successfully but inside the ejbCreate method - I had two print line statements, one prior to calling the missing class, and one after. Only the one prior appeared on the system console, suggesting that the ejbCreate method wasn't completing, yet no exception is thrown ? -
Working with tag-library which is packed in WEB-INF\lib\jar-file.jar:
Hi,
When importing a webworks war file, which contains default taglib.tld in the webworks.jar which is packed in /Web-Inf/lib/webworks.2.1.7.jar the war file.
I am getting following error while running the jsp.
Error(6): duplicated tag definitions within the same TLD: text
Error(6): java.lang.NullPointerException
Error(6): Unable to load taghandler class: /webwork
Line which points to Errors is "<%@ taglib prefix="ww" uri="/webwork" %>"
But, There is a taglib.tld in /Web-Inf/lib/webworks.2.1.7.jar!\meta-inf\tablib.tld
which mentions uri as
<taglib>
<tlib-version>2.2.1</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>WebWork Taglib</short-name>
<uri>/webwork</uri>
</taglib>
But, There is no following entry for '/webwork' (uri) in web.xml
Same war is working fine in tomcat webserver.
Can anybody explain me how to work with this kind of a setup, where taglib is packed in some jar which is packed in Web-Inf/lib dir.
Thanks,
SivaI found the problem. The web-app was finding the class in the APP-INf/lib. But the problem was being caused due to a reference to another class that was being loaded by the webapp classloader which was not visible to the class inside the common jar. The solution was to make sure both classes were being loaded by one class loader.
Thanks anyway
Sameet -
Wl6.1sp2 can't find classes in WEB-INF/lib
Hi,
I meet a very strange problem.
I use struts in my application.so I put struts.jar in web-inf/lib.
In the .war file, the struts.jar can be found under web-inf/lib.
my servlet configuration in web.xml is:
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>application</param-name>
<param-value>StrutsProperties</param-value>
</init-param>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
when this .war file is deploy, the console not show any error message.
then,when i visit a jsp page that has a <html:form> tag, the console will show
the error below:
<Error> <HTTP> <[WebAppServletContext(5418530,struts,/
struts)] Servlet failed with Exception
java.lang.NoClassDefFoundError: org/apache/struts/action/ActionForm
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:486)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:11
1)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:248)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:297)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:286)
at java.lang.ClassLoader.loadClass(ClassLoader.java:290)
at java.lang.ClassLoader.loadClass(ClassLoader.java:290)
at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAw
areClassLoader.java:43)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:120)
at org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:563)
at jsp_servlet.__logon._jspService(__logon.java:137)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:265)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:304)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:200)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
rvletContext.java:2495)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
pl.java:2204)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
>
note "org/apache/struts/action/ActionForm" can be found when i open struts.jar
in web-inf/lib
why weblogic can't find this class but can find the "org.apache.struts.action.ActionServlet",
these 2 classes should all be located in struts.jar
i used it in win2k,so i think it may not be connect with case sensitive.
Any one can give me some help or a link I did not found in this group.
Thanks
1.the struts-html.tld is in web-inf directory
2.this is part of the web.xml
===========
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-template.tld</taglib-location>
</taglib>
================
"Deepak Vohra" <[email protected]> wrote:
>
>Are the tld files including the struts-html.tld in the web-inf directory
>& specified in the web.xml deployment descriptor?
>
>thanks,
>
>Deepak
>
>
>"erric_sarra" <[email protected]> wrote:
>>
>>Hi,
>>I meet a very strange problem.
>>
>>I use struts in my application.so I put struts.jar in web-inf/lib.
>>In the .war file, the struts.jar can be found under web-inf/lib.
>>
>>my servlet configuration in web.xml is:
>> <servlet>
>> <servlet-name>action</servlet-name>
>> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
>> <init-param>
>> <param-name>application</param-name>
>> <param-value>StrutsProperties</param-value>
>> </init-param>
>> <init-param>
>> <param-name>config</param-name>
>> <param-value>/WEB-INF/struts-config.xml</param-value>
>> </init-param>
>> <load-on-startup>1</load-on-startup>
>> </servlet>
>>
>>when this .war file is deploy, the console not show any error message.
>>then,when i visit a jsp page that has a <html:form> tag, the console
>>will show
>>the error below:
>><Error> <HTTP> <[WebAppServletContext(5418530,struts,/
>>struts)] Servlet failed with Exception
>>java.lang.NoClassDefFoundError: org/apache/struts/action/ActionForm
>> at java.lang.ClassLoader.defineClass0(Native Method)
>> at java.lang.ClassLoader.defineClass(ClassLoader.java:486)
>> at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:11
>>1)
>> at java.net.URLClassLoader.defineClass(URLClassLoader.java:248)
>> at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
>> at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
>> at java.security.AccessController.doPrivileged(Native Method)
>> at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:297)
>> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:286)
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:290)
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:290)
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
>> at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAw
>>areClassLoader.java:43)
>> at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
>> at java.lang.Class.forName0(Native Method)
>> at java.lang.Class.forName(Class.java:120)
>> at org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:563)
>> at jsp_servlet.__logon._jspService(__logon.java:137)
>> at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
>> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
>>pl.java:265)
>> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
>>pl.java:304)
>> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
>>pl.java:200)
>> at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
>>rvletContext.java:2495)
>> at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
>>pl.java:2204)
>> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
>> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
>>>
>>
>>note "org/apache/struts/action/ActionForm" can be found when i open
>struts.jar
>>in web-inf/lib
>>why weblogic can't find this class but can find the "org.apache.struts.action.ActionServlet",
>>these 2 classes should all be located in struts.jar
>>
>>i used it in win2k,so i think it may not be connect with case sensitive.
>>
>>Any one can give me some help or a link I did not found in this group.
>>
>>Thanks
>>
>>
>
-
Please help.! Problem with locating classes within Jars under WEB-INF/lib.
Hi All,
I have a problem which you guys would have faced already...Here it goes..
I'm using OC4J 10.1.3.0 and use ADF for my web page. I have a controller class which refers to JSF/ADF APIs and this class is archived as a jar file and put under WEB-INF/lib, Also, all the classes related to JSF/ADF are available under the same WEB-INF/lib folder.
When I invoke my page, the controller class is getting called but it throws NoClassDefFound Error for the ADF based class. i mean, these ADF/JSF classes are not getting found when my jar class is placed within WEB-INF/lib. However, when i extract my jar into WEB-INF/classes, it works.
I'm sure, i miss some entry for classpath somewhere. Can any one please point me to right direction...?
Thanks
RajasekaranHello,
I do not have a direct answer to your question, but could you try the ClassLoader query tools to see if your classes/jar are loaded by the applications:
- Using Queries to Troubleshoot Class Loading Issues
Regards
Tugdual Grall -
MySql driver not found in WEB-INF/lib
Hello
This topic is very often met on this forum but there are no
suitable answers for the problem I have. I am creating
a Jsf application and I have setup a connection pool using
the MySql jar. I want to supply the jar with the war and I keep
it in WEB-INF/lib directory but I still get ClassNotFoundException.
I am running this on a Debian machine with Sun JVM 1.5,
Tomcat 5.0, Mysql 4.1, Connector/J - nightly build from
20060403 (since the stable version has bugs with Charset).
Here are the confings. If I missed some of them, pleaste tell
me.
War task in build.xml
<target name="war" depends="build">
<mkdir dir="${build.dir}"/>
<war
basedir="${webroot.dir}"
warfile="${build.dir}/${project.distname}.war"
webxml="${webinf.dir}/web.xml">
<metainf dir="${meta.dir}">
<include name="context.xml"/>
</metainf>
<exclude name="WEB-INF/${build.dir}/**"/>
<exclude name="WEB-INF/src/**"/>
<exclude name="WEB-INF/web.xml"/>
</war>
</target>
context.xml
<Context path="/jsfblog" docBase="jsfblog.war" reloadable="false" crossContext="true" useNaming="true">
<Resource name="jdbc/jsfblog" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/jsfblog">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost/jsfblog</value>
</parameter>
<parameter>
<name>driverClassName</name><value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>username</name>
<value>blog</value>
</parameter>
<parameter>
<name>password</name>
<value>blog</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>3000</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>100</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>10</value>
</parameter>
</ResourceParams>
</Context>
hibernate.cfg.xml
<hibernate-configuration>
<session-factory>
<property name="connection.datasource">java:comp/env/jdbc/jsfblog</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="current_session_context_class">thread</property>
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<property name="show_sql">true</property>
<mapping resource="......"/>
</session-factory>
</hibernate-configuration>
web.xml
I am not sure if I really need this.
<web-app>
<!-- Connection pool configuration -->
<resource-ref>
<description>JSF Blog Database</description>
<res-ref-name>jdbc/jsfblog</res-ref-name>
<res-ref-type>javax.sql.DataSource</res-ref-type>
<res-auth>Container</res-auth>
</resource-ref>
<!-- jsf and facelets declarations -->
jsfblog.policy
Not all the rules apply at the same time. I also tried to
setup the mysql jar in ${catalina.home}/common/lib
directory and it was loaded but I need to make it work
in WEB-INF/lib location.
grant
permission java.io.FilePermission "${catalina.home}/webapps/jsfblog/WEB-INF/lib/mysql-connector-java-3.1.12-bin.jar", "read";
permission java.io.FilePermission "${catalina.home}/webapps/jsfblog/WEB-INF/lib/mysql-connector-java-3.1-nightly-20060403-bin.jar", "read";
permission java.net.SocketPermission "localhost:3306", "connect,resolve";
grant codeBase "jar:file:${catalina.home}/webapps/jsfblog/WEB-INF/lib/hibernate3.jar!/-" {
permission java.lang.RuntimePermission "accessDeclaredMembers";
permission java.util.PropertyPermission "*", "read,write";
permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
grant codeBase "jar:file:${catalina.home}/webapps/jsfblog/WEB-INF/lib/mysql-connector-java-3.1-nightly-20060403-bin.jar!/-"
permission java.net.SocketPermission "localhost:3306", "connect,resolve";
permission java.lang.RuntimePermission "accessDeclaredMembers";
permission java.util.PropertyPermission "*", "read,write";
permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
Project layout
|-- build
| `-- jsfblog.war
|-- build.xml
|-- conf
| `-- 99jsfblog.policy
|-- deploy
| `-- jsfblog.war
|-- doc
| |-- WEB-INF
| | |-- classes
| | | |-- beans
| | | | `-- CategoryBean.class
| | | |-- blog
| | | | |-- Category.class
| | | | |-- Category.hbm.xml
| | | | |-- Comment.class
| | | | |-- Comment.hbm.xml
| | | | |-- Post.class
| | | | `-- Post.hbm.xml
| | | |-- hibernate.cfg.xml
| | | |-- log4j.properties
| | | `-- util
| | | |-- HibernateSessionFactory.class
| | | |-- HibernateUtil.class
| | | `-- Service.class
| | |-- faces-config.xml
| | |-- lib
| | | |-- antlr-2.7.5.jar
| | | |-- asm-attrs.jar
| | | |-- asm.jar
| | | |-- cglib-2.1.3.jar
| | | |-- common-annotations.jar
| | | |-- commons-beanutils.jar
| | | |-- commons-collections-2.1.1.jar
| | | |-- commons-digester.jar
| | | |-- commons-lang.jar
| | | |-- commons-logging-1.0.4.jar
| | | |-- commons-validator.jar
| | | |-- dom4j-1.6.1.jar
| | | |-- el-api.jar
| | | |-- el-ri.jar
| | | |-- hibernate3.jar
| | | |-- jsf-api.jar
| | | |-- jsf-facelets.jar
| | | |-- jsf-impl.jar
| | | |-- jsf-tlds.jar
| | | |-- jstl.jar
| | | |-- jta.jar
| | | |-- log4j-1.2.11.jar
| | | |-- mysql-connector-java-3.1-nightly-20060403-bin.jar
| | | `-- standard.jar
| | `-- web.xml
| |-- admin
| | |-- admintemplate.xhtml
| | |-- category.xhtml
| | |-- index.xhtml
| | `-- skeleton.xhtml
| |-- index.jsp
| `-- layout.css
|-- lib
| `-- servlet.jar
|-- meta
| `-- context.xml
`-- src
|-- beans
| `-- CategoryBean.java
|-- blog
| |-- Category.hbm.xml
| |-- Category.java
| |-- Comment.hbm.xml
| |-- Comment.java
| |-- Post.hbm.xml
| `-- Post.java
|-- hibernate.cfg.xml
|-- log4j.properties
`-- util
`-- HibernateUtil.javaAnd, finally, the error message:
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLoader.java:854)
at org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLoader.java:721)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:760)
... 60 moreI don't really understand how I can setup the CLASSPATH in this
context. So there should be something else. Does anyone have an
idea?
Thanks.
IgorThis is what I achived using the <metainf> tags from
war task in build.xml. Look at the first code
listing. The
magic code is:
<metainf dir="${meta.dir}">
<include name="context.xml"/>
</metainf>where ${meta.dir} is defined as ./meta and there
resides
the context.xml file (look at the project layout).Very good, thanks.
Any guesses why Tomcat is not loading mysql jar from
WEB-INF/lib directory?No. 8(
My understanding is that JARs in the WEB-INF/lib are visible only to your web app. Those in /common/lib are visible to all apps and the container. Those in /server/lib are visible only to the container and no apps. It SHOULD work from WEB-INF/lib. I've done it that way, but it was an older version of Tomcat.
Checked the Tomcat docs. They say to put it in /common/lib, but they don't explicitly forbid it in WEB-INF/lib.
I'll try a simpler example.
% -
Is there a restriction on loading "javax" classes from WEB-INF/lib?
I'm having trouble with a webapp in WL 10MP1 that is having trouble loading classes from the "jsr311-api-1.0.jar" in my WEB-INF/lib. Even though I have no trouble with it in Eclipse (no compile errors), classes from that jar fail with "NoClassDefFound" exceptions. I have a feeling it might be the fact that the packages in that jar start with "javax". Assuming that's the case, is there anything I can do to fix this?
What's even stranger is that the errors I get are when I try to load them directly from the Spring context. However, if I remove the test references to those classes, there's other code that loads those classes later in the application startup (after the Spring context finishes loading), and they load perfectly fine (I turned on verbose class loading to verify this).Note that I've tried two other strategies that both result in the same failed state.
I tried putting the "jsr311-api-1.0.jar" in $JDK_HOME/jre/lib/ext, but that causes a failure to find Spring classes. I then copied the "spring.jar" into $DOMAIN_HOME/lib, and then it fails to find CXF classes. After doing the same with "cxf-2.2.3.jar", it then fails to find "javax.servlet.ServletContextListener", which clearly tells me there's no benefit to this approach.
Similarly, I tried copying the jars into $DOMAIN_HOME/lib, and that fails to find "org.apache.commons.logging.LogFactory". I could continue down this path, but it doesn't seem likely to succeed. Eventually, I'll get to a point where it just can't find the classes specific to my application, which I certainly can't copy into $DOMAIN_HOME/lib.
The first basic problem is that I can't put anything into a higher-level classloader that will eventually reference classes in a lower-level classloader, because references can only go up the chain, and the second problem is that WebLogic appears to ignore classes in WEB-INF/lib in the "javax.*" packages. I think there might be an exception for "javax.xml.*", but not for other subpackages. I tried adding a "prefer-application-packages" clause to my weblogic-application.xml file, but that had no effect. -
WEB-INF/lib (.war) Vs META-INF/MANIFEST.MF (.ear)
What are the Class loading differences between libraries that are in a web application web-inf/lib and that are in class-path entry of META-INF/manifest.mf of a ear.
I recently developed a web services application with a ejb endpoint.Then
packaged it in a ear file with the classpath entry .The problem occured when I placed the weblogic.jar(and other third party jars) in the ear file which my ejb.jar uses as utility jar's. Jboss starts behaving weird.Some of the classes of jboss are overwritten and class cast exception errors started coming up.
Overnight I changed the application to a servlet end point and placed all my jars in the WEB-INF/lib then everything started working smooth.
Can any body help me , understand what is happening. Why doesn't j2ee have something like META-INF/libWhat did you do to resolve this issue .. I'm having the exact same problem.
What a nightmare.
I found approximately 40 forums on this topic (and
there are probably more), but noone has the definitive
answer!
Here's the problem....
My servlet uses a utility class that resides in some
other jar. That jar is then placed into the
WEB-INF\lib directory of the WAR which in turn goes
into the EAR. This is supposed to be all that is
needed in order for the utility class to be found on
the classpath.
In fact, if you run the war in Tomcat as a standalone
WAR it does in fact find it.... its when in an EAR
deloployed to app server that the problem arises.
I have had no luck with using any combination of
putting the jar ANYWHERE in the EAR or WAR no matter
if I specify the Class-Path: in the manifest(s) or
not.
I thought maybe that I was missing some config in the
application.xml or web.xml but I couldn't find
anything to support that.
Maybe its dependent on the app server? I am using
Orion, but the same problem can be found on J2EE RI
release 1.3
Work arounds:
1. Simply put the utility jar in the lib directory of
the server you're using
2. Add an ejb module to the application.xml naming the
utility jar as the ejb jar. Of course this is NOT an
EJB jar and error messages/warnings will appear
accordingly, but on Orion at least, it will load the
classes needed... hooray!!
Anyone got a definitive answer? -
WAR: making executable with reference to lib in WEB-INF/lib?
I have a custom library (jar file) with a manifest to show version infos when started/double cliked. this works quite good. this jar file is now part of a bigger war file. now, i want to double click the war file to show the version info. i already added a manifest to the war file and double clicking works as expected but the (main) class is not found. i tried to add WEB-INF/lib/mylib.jar to the manifest Class-Path: entry, but that doesn't work. is there a way to tell the manifest, that it should look in the war's web-inf/lib subdirectory to look for classes? or is this an approach that couldn't be solved?
My first reaction here is to say you shouldn't do that. It seems to me that you're just asking for trouble when you start modifying the manifest class path of your WAR to try and make it an executable war - if you do succeed you might end up not being able to have the thing function as a WAR.
but that aside, I don't think (I've not tested/invistigated this very much) that you can access classes contained withing jars that are themselves contained within a jar without doing some sort of custom classloader craziness - and if you have to go down that route then you definitely don't want t o muck up your WAR like that.
I suggest that you create a Servlet (or Struts action, or whatever you have going on) such that when you hit that via a JSP (possibly protected via some sort of security) you get the results of your versioning method dumped out on your browser. That would be more "natural" and go with the Zen of the technology you're using.
Good Luck
Lee -
EAR has WAR has JAR in WEB-INF\lib NoClassDefFoundError
What a nightmare.
I found approximately 40 forums on this topic (and there are probably more), but noone has the definitive answer!
Here's the problem....
My servlet uses a utility class that resides in some other jar. That jar is then placed into the WEB-INF\lib directory of the WAR which in turn goes into the EAR. This is supposed to be all that is needed in order for the utility class to be found on the classpath.
In fact, if you run the war in Tomcat as a standalone WAR it does in fact find it.... its when in an EAR deloployed to app server that the problem arises.
I have had no luck with using any combination of putting the jar ANYWHERE in the EAR or WAR no matter if I specify the Class-Path: in the manifest(s) or not.
I thought maybe that I was missing some config in the application.xml or web.xml but I couldn't find anything to support that.
Maybe its dependent on the app server? I am using Orion, but the same problem can be found on J2EE RI release 1.3
Work arounds:
1. Simply put the utility jar in the lib directory of the server you're using
2. Add an ejb module to the application.xml naming the utility jar as the ejb jar. Of course this is NOT an EJB jar and error messages/warnings will appear accordingly, but on Orion at least, it will load the classes needed... hooray!!
Anyone got a definitive answer?What did you do to resolve this issue .. I'm having the exact same problem.
What a nightmare.
I found approximately 40 forums on this topic (and
there are probably more), but noone has the definitive
answer!
Here's the problem....
My servlet uses a utility class that resides in some
other jar. That jar is then placed into the
WEB-INF\lib directory of the WAR which in turn goes
into the EAR. This is supposed to be all that is
needed in order for the utility class to be found on
the classpath.
In fact, if you run the war in Tomcat as a standalone
WAR it does in fact find it.... its when in an EAR
deloployed to app server that the problem arises.
I have had no luck with using any combination of
putting the jar ANYWHERE in the EAR or WAR no matter
if I specify the Class-Path: in the manifest(s) or
not.
I thought maybe that I was missing some config in the
application.xml or web.xml but I couldn't find
anything to support that.
Maybe its dependent on the app server? I am using
Orion, but the same problem can be found on J2EE RI
release 1.3
Work arounds:
1. Simply put the utility jar in the lib directory of
the server you're using
2. Add an ejb module to the application.xml naming the
utility jar as the ejb jar. Of course this is NOT an
EJB jar and error messages/warnings will appear
accordingly, but on Orion at least, it will load the
classes needed... hooray!!
Anyone got a definitive answer?
Maybe you are looking for
-
Excel VBA - Automatically checkout and checkin documents from SAP R/3
Hello, I'm trying to implement some sort of automatic solution for checking out and in documents in SAP. We have EasyDMS as Document Management System and need to reword about 10000 files which have a bug in their macro. For this purpose I created an
-
Error "Status change from READY to COMMITTED is not allowed"
Dear experts, once again SAPs workflow environment drives me crazy with mysterious error messages. Some time ago I posted a question here concerning the problem that I cannot put back a workitem by using function module SAP_WAPI_PUT_BACK_WORKITEM due
-
I am implementing a Web Site at our institution that was written for another institution that was all SQL Server.The Web Site has included as a feature the use of synonyms which have a dual use. Normally they point to a different machine, different d
-
Hi Iam having MTO scenario. I have created sales order and run MRP. It creates planned order and purchase requisitions for procured items. All procured items are individual. When planned order of header material is converted into production orders. W
-
HT5035 can i transfer itunes balance to someone else?
Can I transfer my iTunes balance to someone else? If so, how do I do that?