I had a similar problem loading some configuration files from my web
service.   The answer is $CATALINA_HOME/bin.  After all it is a servlet.

Somewhere in Axis land I found this code which revealed the mystery:

MessageContext msgContext = MessageContext.getCurrentContext();
String rootDir =
msgContext.getProperty(HTTPConstants.MC_HTTP_SERVLETLOCATI
ON).toString();

Michael Ser
Netweave Integrated Solutions, Inc.


-----Original Message-----
From: Susan Barretta [mailto:[EMAIL PROTECTED] 
Sent: Friday, June 06, 2003 2:13 PM
To: [EMAIL PROTECTED]
Subject: Trying to find resource directory location

Hi all,

I have Axis services all zipped up in a jar under axis\web-inf\lib and
the 
services run fine.  This is Axis 1.1 under Tomcat 4.1.24.

One service is deployed as follows (from my server-config.wsdd):

  <service name="DICOMPacsProvider" provider="java:RPC">
   <parameter name="allowedMethods" value="getDicomProvider"/>
   <parameter name="className" 
value="DICOMSoapServices.dicomPacsProvider.DICOMPacsProvider"/>
   <beanMapping 
languageSpecificType="java:DICOMObjects.services.DICOMPacsNode" 
qname="ns1:DICOMPacsNode" xmlns:ns1="urn:DICOMPacsProvider"/>
  </service>

My services use xml config files that up to now I had zipped up in the
jar, 
and which I had been accessing with getResourceAsStream().  However we
want 
those xml config files to be external to the jar so that we can easily 
modify them without having to modify the service jar.

However, I now need to get the directory path to those xml files and I 
cannot figure out how to communicate to my service any Axis context 
information.  I was hoping to do something like getRealPath("/web-inf").

I have tried the following in order to get context information, however
I 
seem to blow up with a NullPointerException when I try to
getServletContext():

  try {
           Class axisClass 
= 
Class.forName("org.apache.axis.transport.http.AxisServletBase",false,thi
s.getClass().getClassLoader());
           if (axisClass == null) {
               System.out.println ("DOES NOT WORK - returned class is
null.") ;
           } else {
               System.out.println ("IT WORKS - found a class!") ;  //
YES
           }

           AxisServletBase asb =
(AxisServletBase)axisClass.newInstance();

           if (asb == null) {
              System.out.println ("CANNOT find AXIS BASE.") ;
           } else {
             System.out.println("IT WORKS - found Axis base.") ; // YES
             System.out.println ("LOAD COUNTER is " + 
asb.getLoadCounter());  // RETURNS 2
           }

           System.out.println ("ABOUT to try getting CONTEXT...") ;  //
YES 
I SEE THIS
           ServletContext sc = asb.getServletContext();       // BLOWS
UP HERE
           System.out.println ("GOT context...") ;                //
NEVER 
GET TO HERE

            if (sc == null) {
               System.out.println ("WHYYYY is SERVLET CONTEXT NULL?") ;
// 
I NEVER SEE THIS
           } else {
              System.out.println ("FOUND Servlet Context!") ;  // NEVER
SEE 
THIS EITHER
              String home = sc.getRealPath("/") ;
              System.out.println ("HOME DIRECTORY for applet is " +
home) ;
           }


My service classes are not subclassed from anything in the Axis API.

Any ideas?????

Thanks,
Susan



Reply via email to