geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Guillaume Bilodeau <gb.for...@yahoo.com>
Subject Self-contained EAR
Date Fri, 07 Jul 2006 07:29:14 GMT
Hi all,

I gotta say I'm dumbfounded by how class loading with EARs works in Geronimo, although it
is my first time dealing with that kind of issue (deploying a WAR to Tomcat is much simpler).

According to this URL (http://www.chariotsolutions.com/geronimo/ejb.html) :

"If the EJB JAR file is included in an application EAR, then Geronimo will respect Class-Path
entries in the META-INF/MANIFEST.MF file of the EJB JAR. Any JARs referenced there should
also be packaged within the EAR, and paths to JAR files will be resolved relative to the position
of the EJB JAR file in the EAR. If the EJB JAR file is not included in an EAR, then manifest
class path entries will be ignored. In either case, external libraries can also be placed
in the Geronimo server repository and referenced with dependency elements in the Geronimo
deployment plan (see Section 12.3.1, Customizing the Class Path)."

My EAR contains an EJB JAR which includes a META-INF/MANIFEST.MF file, which does include
the libraries that should be in the classpath.  However, those libraries are not found at
runtime.  Here is my EAR's structure:

promo-ear.ear
+ commons-*.jar
+ spring-*.jar
+ other-libraries.jar
+ promo-server.jar
  + all-classes.class (including some EJB implementations - not interfaces)
  + META-INF
    + ejb-jar.xml
    + MANIFEST.MF (containing a Class-path entry with references to libraries in the EAR,
such as spring-*.jar without any path)
+ promo-api.jar
  + all-ejb-interfaces.class (not implementations)
  + META-INF
    + MANIFEST.MF (with no Class-path entry)
+ promo-web.war
  + all web content (JSP, CSS, JS, etc.)
  + WEB-INF
    + web.xml
+ META-INF
  + application.xml
  + MANIFEST.MF

Somehow the Spring library is not visible since I get the following message:

java.lang.ClassNotFoundException: org.springframework.context.support.ClassPathXmlApplicationContext
in classloader default/promo-ear-2.0.0-snapshot_promo-web-2.0.0-SNAPSHOT.war/1152257080360/car

Surely there must be a way to have a self-contained EAR, which can reference its own libraries.
 How can this be done?

Thanks a lot,
GB



Mime
View raw message