Return-Path: Delivered-To: apmail-jakarta-cactus-user-archive@apache.org Received: (qmail 71704 invoked from network); 4 Sep 2002 16:48:05 -0000 Received: from unknown (HELO nagoya.betaversion.org) (192.18.49.131) by daedalus.apache.org with SMTP; 4 Sep 2002 16:48:05 -0000 Received: (qmail 17283 invoked by uid 97); 4 Sep 2002 16:48:34 -0000 Delivered-To: qmlist-jakarta-archive-cactus-user@jakarta.apache.org Received: (qmail 17193 invoked by uid 97); 4 Sep 2002 16:48:32 -0000 Mailing-List: contact cactus-user-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Cactus Users List" Reply-To: "Cactus Users List" Delivered-To: mailing list cactus-user@jakarta.apache.org Received: (qmail 17059 invoked by uid 98); 4 Sep 2002 16:48:30 -0000 X-Antivirus: nagoya (v4218 created Aug 14 2002) Message-ID: <6D8B28EFD2B5B04BBE3653A930AE4C1E0439482C@exmc01.cmates.com> From: Charles Massey To: 'Cactus Users List' Subject: RE: NullPointerException at org.apache.cactus.server.AbstractWebT estC aller.doGetResults(AbstractWebTestCaller.java:196) Date: Wed, 4 Sep 2002 09:47:40 -0700 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2653.19) Content-Type: text/plain; charset="iso-8859-1" X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N Shriniwas, Here's a little background for our implementation. We use Dynamo Nucleus components also, which means that a component will be tested in our ServletTestCase class. For our test class, we extend ServletTestCase and to be able to test our component, we do a lookup for the component we are accessing. Here is an example: public void setUp() { this.myComponentToTest = (ComponentToTest) getNucleusComponent( "/my_module_name/my_path/componentToTest"); } public Object getNucleusComponent(String componentName) { return atg.nucleus.Nucleus.getGlobalNucleus().resolveName(componentName); } We don't, however, make our test classes Nucleus Components. That means that we do not create configuration files for our test classes to make them into components. The reason is that we don't want the extra overhead and maintanence that would occur by maintaining not only source code, but configuration files for all the tests too. The other reason is that Cactus uses the context class loader when the object is created on the server, so it's most likely not going to use your test class component. > in 5.1 we are using Dynamo Nucleus and the > CONFIGPATH framework to integrate our applications into the Dynamo > application server. This is quite proprietary to Dynamo. This does not > require the use of web.xml files, but has the concept of config files in the > CONFIGPATH (this is similar to the unix PATH variable) which look like java > properties files which map a servlet to a name. But I've been able to set > up it such that appropriate Servlets are being invoked. Also, 5.1 supports > Servlet spec 2.2. So my feeling is that the basic requirements are being > met. > 2. I've gone through the Cactus Configuration guide and semantically mapped > the web.xml to Dynamo proprietary setup. We investigated at one time whether using Dynamo's proprietary servlet configuration would work for us, and found that it would not work. We pretty much settled on using the instructions followed in the Cactus Configuration document and set up our web.xml to map the ServletRedirector. Since Dynamo 5.1 supports Servlet 2.2 I would suggest you try the setup as described in the Cactus configuration guide. You will also want to put the cactus.jar, junit.jar and aspectjrt.jar in your MANIFEST.MF file. > 3. Now coming to the use of the jsp, Dynamo 5.1 has a bug due to which if a > Servlet is directly invoked, any RequestDispatch.forward(.) calls from > within the Servlet cause it to go into an infinite loop. But if a JSP is > the primary recipient of the request which further hands over the request > processing to the Servlet, that works fine. Hence the JSP shows up in the > middle. The JSP code is very simple and is shown below. This code also > shows how the Nucleus is used to get the servlet and hand over the > processing to the servlet : Try setting up the Cactus Redirectors in only your web.xml, and make sure that Dynamo can pick up the cactus.jar, junit.jar, aspectjrt.jar and your test classes path by adding them to your MANIFEST.MF file. See if this works - if you continue to have servlet redirector problems, perhaps ATG can provide you a patch to fix their bug. Good luck and let us know how this works out. Charley -----Original Message----- From: Wagle, Shriniwas [mailto:swagle@verisign.com] Sent: Wednesday, September 04, 2002 7:40 AM To: 'Cactus Users List' Subject: RE: NullPointerException at org.apache.cactus.server.AbstractWebT estC aller.doGetResults(AbstractWebTestCaller.java:196) Hi Charles, Thanks for your response. 1. We are still at Dynamo 5.1, as per the company policy. I'm not sure how things work with 5.6.1, but in 5.1 we are using Dynamo Nucleus and the CONFIGPATH framework to integrate our applications into the Dynamo application server. This is quite proprietary to Dynamo. This does not require the use of web.xml files, but has the concept of config files in the CONFIGPATH (this is similar to the unix PATH variable) which look like java properties files which map a servlet to a name. But I've been able to set up it such that appropriate Servlets are being invoked. Also, 5.1 supports Servlet spec 2.2. So my feeling is that the basic requirements are being met. 2. I've gone through the Cactus Configuration guide and semantically mapped the web.xml to Dynamo proprietary setup. 3. Now coming to the use of the jsp, Dynamo 5.1 has a bug due to which if a Servlet is directly invoked, any RequestDispatch.forward(.) calls from within the Servlet cause it to go into an infinite loop. But if a JSP is the primary recipient of the request which further hands over the request processing to the Servlet, that works fine. Hence the JSP shows up in the middle. The JSP code is very simple and is shown below. This code also shows how the Nucleus is used to get the servlet and hand over the processing to the servlet : <%@ page import="org.apache.cactus.server.ServletTestRedirector" %> <%! public static final String sccsID = "%TC-INFO%"; final static String servletPath = "/craa/servlet/ServletRedirector" ; final static ServletTestRedirector servlet = (ServletTestRedirector)Nucleus.getGlobalNucleus().resolveName(servletPath); // --- end of Declarations --- %> <% // --- main control begins here --- // Request dispatcher's forward method wasn't working if the servlet is directly called with the current Dynamo version // So using the JSP Controller and calling the sevlet's service method from JSP servlet.doGet(request,response); %> 4. The NullPointerException is occuring in the file framework/src/java/share/org/apache/cactus/server/AbstractWebTestCaller.java at line number 196, so either the "writer" or the "result" or both are null. : 176 public void doGetResults() throws ServletException 177 { 178 // One could think there is a potential risk that the client side of 179 // Cactus will request the result before it has been written to the 180 // context scope as the HTTP request will not block in some containers. 181 // However this will not happend because on the client side, once the 182 // first request is done to execute the test, all the result is read 183 // by the AutoReadHttpURLConnection class, thus ensuring that the 184 // request is fully finished and the resukt has been committed ... 185 186 WebTestResult result = 187 (WebTestResult) (this.webImplicitObjects.getServletContext(). 188 getAttribute(TEST_RESULTS)); 189 190 LOGGER.debug("Test Result = [" + result + "]"); 191 192 // Write back the results to the outgoing stream as an XML string. 193 try { 194 195 Writer writer = getResponseWriter(); 196 writer.write(result.toXml()); 197 writer.close(); 198 199 } catch (IOException e) { 200 String message = "Error writing WebTestResult instance to output " 201 + "stream"; 202 LOGGER.error(message, e); 203 throw new ServletException(message, e); 204 } 205 } The final option for me would be to add some debug statements to the above file around line 196 and do a build. I'm not exactly sure how to do that but I can't think of anything else now. Thanks Shriniwas Wagle > -----Original Message----- > From: Charles Massey [mailto:CMassey@corp.classmates.com] > Sent: Tuesday, September 03, 2002 6:29 PM > To: 'Cactus Users List' > Subject: RE: NullPointerException at > org.apache.cactus.server.AbstractWebT estC > aller.doGetResults(AbstractWebTestCaller.java:196) > > > Hi Shriniwas, > > I'm using Dynamo - so I can probably help you here. We're still using > Cactus 1.3, and I haven't tried running Cactus 1.4 on Dynamo yet. > > To start, you mention below that you are not following the > web.xml and .war > format. Does this mean that you are not declaring your > definitions in the web.xml file? I have found that using the "Cactus > Configuration" guide has helped a lot ( > http://jakarta.apache.org/cactus/howto_config.html ). It is true that > Dynamo uses .dar files to package files, but you may still > need to declare > the ServletRedirector and/or JspRedirector in your web.xml if > you intend to > use them. > > Looking at the following section in your stack trace, what does > servlet_redirector.jsp do? It looks like it is throwing a > NullPointerException in this code also (or from the servlet) ? > > [/atg/dynamo/server/HttpServer-0:ipaddr=10.136.42.72;path=/en_ > US/servlet_tes > t_runner.jsp;sessionid=4QWWRQKZKB12UCULHTOCFEQ] INFO httpclient.wire > - << "500 Internal Server Error >

500 Internal Server Error

> The servlet invoked by the requested URL > //en_US/servlet_redirector.jsp > raised the exception:

java.lang.NullPointerException

> > " > 14:50:29,946 > [/atg/dynamo/server/HttpServer-0:ipaddr=10.136.42.72;path=/en_ > US/servlet_tes > t_runner.jsp;sessionid=4QWWRQKZKB12UCULHTOCFEQ] DEBUG > httpclient.HttpMethod > - HttpMethodBase.execute(): closing connection since we're > using HTTP/1.0 > 14:50:29,947 > > > To help you further I need more information. I have been > able to integrate > Cactus 1.3 into Dynamo 5.6.1 by using the ServletRedirector > redirector and > subclassing ServletTestCase for my tests. > > Charley > > > > -----Original Message----- > From: Wagle, Shriniwas [mailto:swagle@verisign.com] > Sent: Tuesday, September 03, 2002 12:36 PM > To: 'cactus-user@jakarta.apache.org' > Subject: NullPointerException at > org.apache.cactus.server.AbstractWebTestC > aller.doGetResults(AbstractWebTestCaller.java:196) > > > I've recently started working with Cactus and after trying to > make it work > over the last couple of days, I'm feeling rather stuck. So > any help would > be appreciated. I apologize for the rather long traces. I > hope they are of > some help. > > Environment : > jakarta-cactus-12-1.4 > Dynamo Application Server 5.1 on SunOS 5.8 > jdk 1.2 > -- To unsubscribe, e-mail: For additional commands, e-mail: -- To unsubscribe, e-mail: For additional commands, e-mail: