Re: passing servletRunner web.xml as stream

Adam Hardy <[email protected]>
Newsgroups gmane.comp.web.httpunit.devel
Message-ID <[email protected]>
Do you mean that httpunit is substituting the actual exception for the one below?

In other words, ServletUnitClient.java line 121 is a catch block?

Is there any logging I can turn on to see more of the original exception? 
(Ideally, a stacktrace could be printed at that point, or exception chaining).


Russell Gold on 09/04/08 01:13, wrote:
> Based on the stack trace, it appears that your servlet is doing a request for
> the web.xml on its own. The input stream allows you to specify the web.xml
> for ServletUnit to use to interpret requests; however, if one of your
> servlets looks for that file, it will be treated as any other web request.
> 
> 
> On Apr 8, 2008, at 10:09 AM, Adam Hardy wrote:
> 
>> I am trying to figure out the exception from the following code (see below
>> for stacktrace).
>> 
>> What more do I need to do? I have done this:
>> 
>> - instantiated servletRunner with XML stream for deployment descriptor -
>> created a WebRequest object - passed in the request to the getResponse()
>> call
>> 
>> Yet ServletRunner is looking for the deployment descriptor again, which it 
>> should already have.
>> 
>> 
>> StringBuilder xml = new StringBuilder(); xml.append("<?xml version=\"1.0\"
>> encoding=\"UTF-8\"?>"); xml.append("<web-app version=\"2.4\""); 
>> xml.append(" xmlns=\"http://java.sun.com/xml/ns/j2ee\""); xml.append("
>> xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance \""); xml.append("
>> xsi:schemaLocation=\"http://java.sun.com/xml/ns/j2ee"); xml.append("
>> http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd\">"); 
>> xml.append("<filter><filter-name>Struts</filter-name>"); 
>> xml.append("<filter-class>"); 
>> xml.append("org.apache.struts2.dispatcher.FilterDispatcher"); 
>> xml.append("</filter-class></filter>"); 
>> xml.append("<filter-mapping><filter-name>Struts</filter-name>"); 
>> xml.append("<url-pattern>*.html</url-pattern></filter-mapping>"); 
>> xml.append("<servlet><servlet-name>bla</servlet-name><servlet- class>"); 
>> xml.append("bug.EmptyServlet"); xml.append("</servlet-class></servlet>"); 
>> xml.append("<servlet-mapping><servlet-name>bla</servlet-name>"); 
>> xml.append("<url-pattern>*.html</url-pattern></servlet-mapping>"); 
>> xml.append("</web-app>"); ServletRunner servletRunner = new
>> ServletRunner(new ByteArrayInputStream(xml.toString() .getBytes()),
>> "/test"); servletRunner.registerServlet("bla",
>> EmptyServlet.class.getName()); ServletUnitClient client =
>> servletRunner.newClient(); File file = new
>> File("src/test/resources/results.csv"); WebRequest getRequest = new
>> GetMethodWebRequest( "http://localhost/test/test-result/edit.html"); 
>> WebResponse response = servletRunner.getResponse(getRequest);
>> 
>> 
>> 
>> 
>> com.meterware.httpunit.HttpInternalErrorException: Error on HTTP request:
>> 500 javax.servlet.ServletException: 
>> /home/adam/projects/bug-httpunit-struts/WEB-INF/web.xml (No such file or 
>> directory) [http://localhost/test/test-result/edit.html] at com .meterware
>>  .servletunit.ServletUnitClient.newResponse(ServletUnitClient.java:121) at
>> com.meterware.httpunit.WebWindow.getResource(WebWindow.java:164) at 
>> com.meterware.httpunit.WebWindow.getSubframeResponse(WebWindow.java: 128) 
>> at com.meterware.httpunit.WebWindow.getResponse(WebWindow.java:121) at
>> com.meterware.httpunit.WebClient.getResponse(WebClient.java:113) at com 
>> .meterware.servletunit.ServletRunner.getResponse(ServletRunner.java: 151) 
>> at bug.TestResultActionTest.test(TestResultActionTest.java:54) at
>> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun .reflect
>>  .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun
>>  .reflect .DelegatingMethodAccessorImpl 
>> .invoke(DelegatingMethodAccessorImpl.java:25) at
>> java.lang.reflect.Method.invoke(Method.java:585) at org .junit .internal 
>> .runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99) at 
>> org .junit .internal 
>> .runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81) at org 
>> .junit .internal 
>> .runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java: 34) 
>> at org .junit 
>> .internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75) at
>>  org .junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
>>  at org .junit .internal .runners 
>> .TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java: 71) 
>> at org .junit .internal 
>> .runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35) at 
>> org.junit.internal.runners.TestClassRunner 
>> $1.runUnprotected(TestClassRunner.java:42) at org .junit .internal 
>> .runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java: 34) 
>> at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java: 52)
>>  at org .eclipse .jdt .internal 
>> .junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38) at org
>>  .eclipse 
>> .jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org
>>  .eclipse .jdt .internal 
>> .junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) at org 
>> .eclipse .jdt .internal 
>> .junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) at org 
>> .eclipse .jdt 
>> .internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) at 
>> org .eclipse .jdt 
>> .internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java: 196)

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.