You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Michael Hudson <mi...@slac.com> on 2002/12/12 23:53:55 UTC

Packaging Axis into an EAR file

I'm using Weblogic 6.1sp4, and Axis 1.0

I can package Axis as a WAR file inside of my EAR file, and because of the
Weblogic classloader hierarchy, I don't have to do anything else for Axis
to see my EJBs in my EAR to act on them.

However, if my EJBs want to use Axis... the only solution I have found
that works is to put Axis in my system classpath before starting Weblogic.

I did try to put all the Axis jars into the root level of my EAR file, and
then add those jars to the manifest file of the EJB that needed to use
Axis.  That seemed to work... until Weblogic then tried to deploy my Axis
WAR.  Regardless of whether I actually had the Axis JARs in my Axis WAR's
WEB-INF/lib directory or not, I would get the following:

<Dec 12, 2002 5:22:11 PM EST> <Error> <HTTP> <[WebAppServletContext(2018366,axis
,/axis)] Error loading servlet: "AdminServlet"
java.lang.NoClassDefFoundError: javax/xml/soap/SOAPException
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:120)
        at
org.apache.axis.transport.http.AxisServletBase.class$(AxisServletBase
.java:87)
        at
org.apache.axis.transport.http.AxisServletBase.<clinit>(AxisServletBa
se.java:94)
        at java.lang.Class.newInstance0(Native Method)
        at java.lang.Class.newInstance(Class.java:237)
        at
weblogic.servlet.internal.ServletStubImpl.createServlet(ServletStubIm
pl.java:690)
	...

No matter what I do... put stuff in the EAR's manifest or the WAR's
manifest or whatever... it doesn't seem to work.  Essentially, it does
seem to be finding axis.jar, but it doesn't seem to be finding saaj.jar.
You'd think BECAUSE of the classloader hierarchy in Weblogic, that it
should see saaj.jar in the root EAR.  However, if I leave that in the root
EAR, but go ahead and put a copy of saaj.jar in AXIS WAR's WEB-INF/lib
directory, it still doesn't see it.  That doesn't make sense, because, if
I get rid of the copy in the root EAR, it works again.

I assume this has something to do with the servlet obtaining the
appropriate classpathloader.  But I have no idea how to fix it?

Any ideas?  Does anybody else have to do what I'm doing?  How has
everybody else packaged Axis inside of a WAR inside of an EAR, so that
Axis can see the EJBs, and the EJBs can see Axis???

Thanks,

==============================================================================
Michael J. Hudson    |                               |        mike@slac.com

                "Search for the perfect church, if you will;
 		       when you find it, join it, and
       realize that on that day it becomes something less than perfect."
 -Rev. Andrew Greeley responding to the moral crisis in the Catholic church.

                     |                               |
==============================================================================