Hi Jose,

Hmmm... very strange.

Normally I would have said:

Seen that the implementation of init() is:

    public void init(ServletConfig config) throws ServletException {
        this.config = config;
        this.init();
    }

and that line 204 of servlet-api-4 is:

    public ServletContext getServletContext() {
        return getServletConfig().getServletContext();
    }

and that:

    public ServletConfig getServletConfig() {
        return config;
    }

my conclusion is that your InscribeServlet must somehow override the
init(ServletConfig) method and it must not do a super.init(config)...

However, the stack trace says:

> javax.servlet.GenericServlet.init(GenericServlet.java:256)

and line 256 is:

254    public void init(ServletConfig config) throws ServletException {
255     this.config = config;
256     this.init();
257    }

thus it means this.config = config must have been called... So you're
not overriding GenericServlet.init(ServletConfig) or if you do you are
correctly calling super.init(config)...

hmm....

Can you test that config is not null:

        public void testPostMethod() throws ServletException
         {
                 assertNotNull("aha config is null", config);
                 InscribeServlet inscribeServlet = new
InscribeServlet();
                 inscribeServlet.init(config);
         }

Thanks
-Vincent

> -----Original Message-----
> From: Jose Alfonso Martinez [mailto:[EMAIL PROTECTED]
> Sent: 11 August 2003 19:43
> To: [EMAIL PROTECTED]
> Subject: calling getServletContext() in a servlet - how to??
> 
> Hello,
> 
> I am testing a servlet, just the init() method like this:
> 
>       public void testPostMethod() throws ServletException
>         {
>                 InscribeServlet inscribeServlet = new
InscribeServlet();
>                 inscribeServlet.init(config);
>         }
> 
> I get a java.lang.NullPointerException when calling
getServletContext()...
> 
> in the init() method, my servlet calls
getServletContext().getRealPath().
> I guess there is where the exception occurs. It could also be in a
call to
> get the DataSource via InitialContext. Attached is the stack trace and
the
> init() method of my Servlet.
> 
> Does anyone knows what am I doing wrong???? thanks in advance.
> 
> Jose
> 
> 
> Stack Trace
> ============
> 
> test2:
>     [junit] Running com.cevex.servlet.TestInscribeServlet
>     [junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 1.562
sec
>     [junit] Testsuite: com.cevex.servlet.TestInscribeServlet
>     [junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 1.562
sec
> 
>     [junit] Testcase: testPostMethod took 1.514 sec
>     [junit]   Caused an ERROR
>     [junit] null
>     [junit] java.lang.NullPointerException
>     [junit]   at
>
javax.servlet.GenericServlet.getServletContext(GenericServlet.java:204)
>     [junit]   at com.cevex.servlet.InscribeServlet.init(Unknown
> Source)
>     [junit]   at
> javax.servlet.GenericServlet.init(GenericServlet.java:256)
>     [junit]   at
> com.cevex.servlet.TestInscribeServlet.testPostMethod(Unknown Source)
>     [junit]   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
>     [junit]   at
>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:
> 39)
>     [junit]   at
>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Im
> pl.java:25)
>     [junit]   at
>
org.apache.cactus.internal.server.ServerTestCaseDelegate.runServerTest(S
er
>
verTestCaseDelegate.java;org/apache/cactus/util/log/LogAspect.aj[1k]:214
)
>     [junit]   at
> org.apache.cactus.ServletTestCase.runTest(ServletTestCase.java:280)
>     [junit]   at
> org.apache.cactus.ServletTestCase.runBare(ServletTestCase.java:251)
>     [junit]   at
>
org.apache.cactus.server.AbstractWebTestCaller.doTest(AbstractWebTestCal
le
> r.java:156)
>     [junit]   at
>
org.apache.cactus.server.AbstractWebTestController.dispatch133_handleReq
ue
>
st(AbstractWebTestController.java;org/apache/cactus/util/log/LogAspect.a
j[
> 1k]:130)
>     [junit]   at
>
org.apache.cactus.server.AbstractWebTestController.around133_handleReque
st
>
(AbstractWebTestController.java;org/apache/cactus/util/log/LogAspect.aj[
1k
> ]:1158)
>     [junit]   at
>
org.apache.cactus.server.AbstractWebTestController.handleRequest(Abstrac
tW
> ebTestController.java;org/apache/cactus/util/log/LogAspect.aj[1k]:101)
>     [junit]   at
>
org.apache.cactus.server.ServletTestRedirector.dispatch160_doPost(Servle
tT
> estRedirector.java;org/apache/cactus/util/log/LogAspect.aj[1k]:125)
>     [junit]   at
>
org.apache.cactus.server.ServletTestRedirector.around160_doPost(ServletT
es
> tRedirector.java;org/apache/cactus/util/log/LogAspect.aj[1k]:1158)
>     [junit]   at
>
org.apache.cactus.server.ServletTestRedirector.doPost(ServletTestRedirec
to
> r.java;org/apache/cactus/util/log/LogAspect.aj[1k]:109)
>     [junit]   at
>
org.apache.cactus.server.ServletTestRedirector.dispatch159_doGet(Servlet
Te
> stRedirector.java;org/apache/cactus/util/log/LogAspect.aj[1k]:96)
>     [junit]   at
>
org.apache.cactus.server.ServletTestRedirector.around159_doGet(ServletTe
st
> Redirector.java;org/apache/cactus/util/log/LogAspect.aj[1k]:1158)
>     [junit]   at
>
org.apache.cactus.server.ServletTestRedirector.doGet(ServletTestRedirect
or
> .java;org/apache/cactus/util/log/LogAspect.aj[1k]:92)
>     [junit]   at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
>     [junit]   at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>     [junit]   at
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
ti
> onFilterChain.java:247)
>     [junit]   at
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
er
> Chain.java:193)
>     [junit]   at
>
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
e.
> java:260)
>     [junit]   at
>
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nv
> okeNext(StandardPipeline.java:643)
>     [junit]   at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4
80
> )
>     [junit]   at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>     [junit]   at
>
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
e.
> java:191)
>     [junit]   at
>
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nv
> okeNext(StandardPipeline.java:643)
>     [junit]   at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4
80
> )
>     [junit]   at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>     [junit]   at
>
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:241
5)
>     [junit]   at
>
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
:1
> 80)
>     [junit]   at
>
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nv
> okeNext(StandardPipeline.java:643)
>     [junit]   at
>
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherVa
lv
> e.java:170)
>     [junit]   at
>
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nv
> okeNext(StandardPipeline.java:641)
>     [junit]   at
>
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
:1
> 72)
>     [junit]   at
>
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nv
> okeNext(StandardPipeline.java:641)
>     [junit]   at
>
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:509
)
>     [junit]   at
>
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nv
> okeNext(StandardPipeline.java:641)
>     [junit]   at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4
80
> )
>     [junit]   at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>     [junit]   at
>
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
ja
> va:174)
>     [junit]   at
>
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nv
> okeNext(StandardPipeline.java:643)
>     [junit]   at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4
80
> )
>     [junit]   at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>     [junit]   at
>
org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
>     [junit]   at
>
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:43
2)
>     [junit]   at
>
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC
on
> nection(Http11Protocol.java:386)
>     [junit]   at
>
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:53
4)
>     [junit]   at
>
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool
.j
> ava:530)
>     [junit]   at java.lang.Thread.run(Thread.java:536)
> 
> 
> 
> 
> And the init() method of my Servlet
> ===================================
>   public void init() throws CevexServletException
>   {
>     try
>     {
>       // get the initial context
>       Context initCtx = new InitialContext();
>       Context envCtx = (Context) initCtx.lookup("java:comp/env");
> 
>       // get the datasource
>       ds = (DataSource) envCtx.lookup("jdbc/cevexDB");
> 
>       /* something is worng with the mail session, check later */
>       //session = (Session) envCtx.lookup("mail/Session");
> 
>       // initialize new mail seession
>       Properties props = new Properties();
>       props.put("mail.smtp.host", "localhost");
>       Session session = Session.getDefaultInstance(props, null);
>       session.setDebug(false);
> 
>       // Read email strings from files
>       String realPath = getServletContext().getRealPath("/");
>       mailInscripcionMasc = new CevexMail(session, realPath +
> getInitParameter("mailInscripcionMasc"));
>       mailInscripcionFem  = new CevexMail(session, realPath +
> getInitParameter("mailInscripcionFem"));
>       mailInscripcionConInvitacionMasc = new CevexMail(session,
realPath +
> 
> getInitParameter("mailInscripcionConInvitacionMasc"));
>       mailInscripcionConInvitacionFem = new CevexMail(session,
realPath +
> 
> getInitParameter("mailInscripcionConInvitacionFem"));
> 
>     } // end try
>     .... catch statements
>  }
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to