Hi,

If I call the servlet directly, everything work fine. But if I run it with cactus, it 
throws a NullPointerException.
I've included the junit ant log, the test class and the class under test. There is 
nothing in the server log.

The appserver is weblogic 8.1
Cactus version is 1.5rc1


/************************************************/
/************************************************/
       [junit] Testcase: testExample took 1.016 sec
       [junit] Testcase: testXXX took 0.094 sec
       [junit] Testcase: testShouldNotBeSuccess took 0.031 sec
       [junit] Testcase: testResultSessionBean took 0.219 sec
       [junit] Testcase: testResponseHelloServlet took 0.187 sec
       [junit]  Caused an ERROR
       [junit] null
       [junit] java.lang.NullPointerException
       [junit]  at 
javax.servlet.GenericServlet.getServletContext(GenericServlet.java:205)
       [junit]  at 
XXX.applications.sampleapplication.HelloServlet.processRequest(Unknown Source)
       [junit]  at 
XXX.applications.sampleapplication.TestHelloServlet.testResponseHelloServlet(Unknown 
Source)
       [junit]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       [junit]  at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       [junit]  at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       [junit]  at 
org.apache.cactus.ServletTestCase.runCactusTest(ServletTestCase.java:295)
       [junit]  at org.apache.cactus.ServletTestCase.runBare(ServletTestCase.java:263)
       [junit]  at 
org.apache.cactus.server.AbstractWebTestCaller.doTest(AbstractWebTestCaller.java:156)
       [junit]  at 
org.apache.cactus.server.AbstractWebTestController.handleRequest_aroundBody0(AbstractWebTestController.java:130)
       [junit]  at 
org.apache.cactus.server.AbstractWebTestController.handleRequest_aroundBody1$advice(AbstractWebTestController.java:158)
       [junit]  at 
org.apache.cactus.server.AbstractWebTestController.handleRequest(AbstractWebTestController.java)
       [junit]  at 
org.apache.cactus.server.ServletTestRedirector.doPost_aroundBody2(ServletTestRedirector.java:138)
       [junit]  at 
org.apache.cactus.server.ServletTestRedirector.doPost_aroundBody3$advice(ServletTestRedirector.java:158)
       [junit]  at 
org.apache.cactus.server.ServletTestRedirector.doPost(ServletTestRedirector.java)
       [junit]  at 
org.apache.cactus.server.ServletTestRedirector.doGet_aroundBody0(ServletTestRedirector.java:109)
       [junit]  at 
org.apache.cactus.server.ServletTestRedirector.doGet_aroundBody1$advice(ServletTestRedirector.java:158)
       [junit]  at 
org.apache.cactus.server.ServletTestRedirector.doGet(ServletTestRedirector.java)
       [junit]  at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
       [junit]  at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
       [junit]  at 
weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1053)
       [junit]  at 
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387)
       [junit]  at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
       [junit]  at 
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
       [junit]  at 
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6316)
       [junit]  at 
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
       [junit]  at 
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
       [junit]  at 
weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3622)
       [junit]  at 
weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2569)
       [junit]  at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
       [junit]  at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
       [junit] 
       [junit] Testcase: testResponseHelloServlet
       [junit] TEST XXX.AllTest FAILED

/******************************************************************/
/******************************************************************/

package XXX.applications.sampleapplication;

import java.io.IOException;

import javax.servlet.ServletException;

import junit.framework.Test;
import junit.framework.TestSuite;

import org.apache.cactus.ServletTestCase;
import org.apache.cactus.WebRequest;
import org.apache.cactus.WebResponse;

import XXX.test.genericframework.log.LoggerFactory;

public class TestHelloServlet extends ServletTestCase{

        ...

        public void beginResponseHelloServlet(WebRequest myWebRequest){
                
LoggerFactory.getInstance().logInfo("beginResponseHelloServlet","before addParameter");
                myWebRequest.addParameter("username","David");
        }

        public void endResponseHelloServlet(WebResponse theResponse){
                LoggerFactory.getInstance().logInfo("endResponseHelloServlet","in 
endXXX");
                assertTrue("Assert that the submitted name is the one on the 
page",theResponse.getText().indexOf("David") != -1);
        }

        
        public void testResponseHelloServlet(){
                LoggerFactory.getInstance().logInfo("testResponseHelloServlet","test");
                HelloServlet myHelloServlet = new HelloServlet();
                
                assertNotNull("servlet not null",myHelloServlet);
                assertNotNull("request not null",request);
                assertNotNull("response not null",response);

                try {
                        myHelloServlet.init();
                        myHelloServlet.processRequest(request,response);
                } catch (ServletException e) {
                        // XXX Auto-generated catch block
                        e.printStackTrace();
                        fail(e.toString());
                } catch (IOException e) {
                        // XXX Auto-generated catch block
                        e.printStackTrace();
                        fail(e.toString());
                }
        }
}
/************************************************************************/
/************************************************************************/

    public void processRequest(HttpServletRequest request,HttpServletResponse 
response) throws ServletException, IOException {

          System.out.println("Debut");
      response.setContentType("text/html");
      response.setBufferSize(8192);
      PrintWriter out = response.getWriter();
      
      String message = null;

                ... // Set message using session bean

                if(message == null){
                        message = "";
                }
      // then write the data of the response
      out.println("<html>" +
                  "<head><title>Hello</title></head>");

                // then write the data of the response
      out.println("<body  bgcolor=\"#ffffff\">" +
         "<img src=\"/mml/images/mmllogo.gif\"  width=\"204\" height=\"100\">" + 
                "<h2>" + message + "</h2>" +
         "<form method=\"get\">" +
         "<input type=\"text\" name=\"username\" size=\"25\">" +
         "<p></p>" +
         "<input type=\"submit\" value=\"Submit\">" +
         "<input type=\"reset\" value=\"Reset\">" +
         "</form>");

      String username = request.getParameter("username");
      if ( username != null && username.length() > 0 ) {
/*      THE NEXT LINE THROWS THE EXCEPTION      */
/*******/ RequestDispatcher dispatcher = 
getServletContext().getRequestDispatcher("/sampleapplication/helloresponse");
                                    
            if (dispatcher != null){
                                dispatcher.include(request, response);
            }

      }
      out.println("</body></html>");
      out.close();
          System.out.println("Fin");
    }
/**********************************************************************************/
/**********************************************************************************/


David Lemieux


Reply via email to