Re: passing servletRunner web.xml as stream
Russell Gold <[email protected]>
| Newsgroups | gmane.comp.web.httpunit.devel |
|---|---|
| Message-ID | <[email protected]> |
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)
>
>
> thanks
> Adam
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
> Register now and save $200. Hurry, offer ends at 11:59 p.m.,
> Monday, April 7! Use priority code J8TLD2.
> http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
> _______________________________________________
> Httpunit-develop mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/httpunit-develop
-------------------------------------------------------------------------
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