In fact, config is null
why does it happen???
hey thanks a lot Vincent, here is the stack trace when run via browser:
junit.framework.AssertionFailedError: aha config is null
at com.cevex.servlet.TestInscribeServlet.testPostMethod(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at
org.apache.cactus.internal.server.ServerTestCaseDelegate.runServerTest(ServerTestCaseDelegate.java;org/apache/cactus/util/log/LogAspect.aj[1k]:214)
at
org.apache.cactus.server.AbstractWebTestCaller.doTest(AbstractWebTestCaller.java:156)
at
org.apache.cactus.server.AbstractWebTestController.dispatch133_handleRequest(AbstractWebTestController.java;org/apache/cactus/util/log/LogAspect.aj[1k]:130)
at
org.apache.cactus.server.AbstractWebTestController.around133_handleRequest(AbstractWebTestController.java;org/apache/cactus/util/log/LogAspect.aj[1k]:1158)
at
org.apache.cactus.server.AbstractWebTestController.handleRequest(AbstractWebTestController.java;org/apache/cactus/util/log/LogAspect.aj[1k]:101)
at
org.apache.cactus.server.ServletTestRedirector.dispatch160_doPost(ServletTestRedirector.java;org/apache/cactus/util/log/LogAspect.aj[1k]:125)
at
org.apache.cactus.server.ServletTestRedirector.around160_doPost(ServletTestRedirector.java;org/apache/cactus/util/log/LogAspect.aj[1k]:1158)
at
org.apache.cactus.server.ServletTestRedirector.doPost(ServletTestRedirector.java;org/apache/cactus/util/log/LogAspect.aj[1k]:109)
at
org.apache.cactus.server.ServletTestRedirector.dispatch159_doGet(ServletTestRedirector.java;org/apache/cactus/util/log/LogAspect.aj[1k]:96)
at
org.apache.cactus.server.ServletTestRedirector.around159_doGet(ServletTestRedirector.java;org/apache/cactus/util/log/LogAspect.aj[1k]:1158)
at
org.apache.cactus.server.ServletTestRedirector.doGet(ServletTestRedirector.java;org/apache/cactus/util/log/LogAspect.aj[1k]:92)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:509)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530)
at java.lang.Thread.run(Thread.java:536)
On Mon, Aug 11, 2003 at 08:35:43PM +0200, Vincent Massol wrote:
> 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]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]