Re: passing servletRunner web.xml as stream
Adam Hardy <[email protected]> Mon, 28 Apr 2008 23:58:34 +0100
| Newsgroups | gmane.comp.web.httpunit.devel |
|---|---|
| Message-ID | <[email protected]> |
I couldn't see it during debugging earlier - I didn't have the jasper source to
play with. Hence the message - I was hoping to be able to avoid debugging jasper :(
I'll check it out and get back to you.
Russell Gold on 28/04/08 04:06, wrote:
> Do you know how Jasper is trying to locate the web.xml? How does it
> determine what path should contain it? It may simply be that you
> cannot do the web.xml stream, but need to write it to the file system
> and use it from there.
>
> On Apr 27, 2008, at 9:39 AM, Adam Hardy wrote:
>
>> Hi People,
>>
>> any comments on this issue?
>>
>>
>> Adam Hardy on 22/04/08 14:10, wrote:
>>
>> if you recall, I set up ServletUnit with a web.xml stream, and a
>> servlet is
>> trying to find web.xml.
>>
>> I traced it to here:
>>
>> JspServletWrapper.handleJspException(Exception) line: 492
>> JspServletWrapper.service(HttpServletRequest, HttpServletResponse,
>> boolean)
>> line: 357
>> JspServlet.serviceJspFile(HttpServletRequest, HttpServletResponse,
>> String,
>> Throwable, boolean) line: 320
>> JspServlet.service(HttpServletRequest, HttpServletResponse) line: 266
>> JspServlet(HttpServlet).service(ServletRequest, ServletResponse)
>> line: 853
>> RequestDispatcherImpl.forward(ServletRequest, ServletResponse) line:
>> 54
>> ServletDispatcherResult.doExecute(String, ActionInvocation) line: 139
>>
>>
>> The JspServletWrapper is from the org.apache.jasper.servlet package.
>>
>>
>> So your statement that my servlet is doing a request for the web.xml
>> is only
>> partially correct - it seems that jasper is the true culprit, trying
>> to run the
>> JSP.
>>
>> I didn't have the Jasper source code, but the next question is
>> whether HttpUnit
>> can handle it? Perhaps the config should be available to Jasper
>> somehow?
>>
>> here's its logging:
>>
>> FINE 14:06:54 JspRuntimeContext.<init>(): Parent class loader is:
>> sun.misc.Launcher$AppClassLoader@1858610 (org.apache.jasper.compiler)
>> FINE 14:06:54 JspRuntimeContext.initClassPath(): Compilation classpath
>> initialized:
>> /home/adam/projects/atomic/build/:/home/java/httpunit/trunk/httpunit/
>> build/:/home/java/httpunit/trunk/httpunit/jars/activation.jar:/home/
>> java/httpunit/trunk/httpunit/jars/ant-dependencies.jar:/home/java/
>> httpunit/trunk/httpunit/jars/mailapi.jar:/home/java/httpunit/trunk/
>> httpunit/jars/quicksite.jar:/home/java/httpunit/trunk/httpunit/jars/
>> js.jar:/home/java/httpunit/trunk/httpunit/jars/junit.jar:/home/java/
>> httpunit/trunk/httpunit/jars/nekohtml.jar:/home/java/httpunit/trunk/
>> httpunit/jars/servlet.jar:/home/java/httpunit/trunk/httpunit/jars/
>> Tidy.jar:/home/java/httpunit/trunk/httpunit/jars/xercesImpl.jar:/
>> home/java/httpunit/trunk/httpunit/jars/xmlParserAPIs.jar:/home/java/
>> m2-repo/aopalliance/aopalliance/1.0/aopalliance-1.0.jar:/home/java/
>> m2-repo/avalon-framework/avalon-framework/4.1.3/avalon-
>> framework-4.1.3.jar:/home/java/m2-repo/com/opensymphony/xwork/2.0.4/
>> xwork-2.0.4.jar:/home/java/m2-repo/commons-beanutils/commons-
>> beanutils/1.8.0-BETA/commons-beanutils-1.8.0-BETA.jar:/home/java/m
>>
>> 2-repo/commons-collections/commons-collections/3.2/commons-
>> collections-3.2.jar:/home/java/m2-repo/commons-configuration/commons-
>> configuration/1.5/commons-configuration-1.5.jar:/home/java/m2-repo/
>> commons-digester/commons-digester/1.8/commons-digester-1.8.jar:/home/
>> java/m2-repo/commons-lang/commons-lang/2.3/commons-lang-2.3.jar:/
>> home/java/m2-repo/freemarker/freemarker/2.3.8/freemarker-2.3.8.jar:/
>> home/java/m2-repo/logkit/logkit/1.0.1/logkit-1.0.1.jar:/home/java/m2-
>> repo/opensymphony/ognl/2.6.11/ognl-2.6.11.jar:/home/java/m2-repo/org/
>> apache/struts/struts2-core/2.0.9/struts2-core-2.0.9.jar:/home/java/
>> m2-repo/org/apache/struts/struts2-tiles-plugin/2.0.9/struts2-tiles-
>> plugin-2.0.9.jar:/home/java/m2-repo/org/apache/tiles/tiles-jsp/2.0.4/
>> tiles-jsp-2.0.4.jar:/home/java/m2-repo/org/apache/tiles/tiles-api/
>> 2.0.4/tiles-api-2.0.4.jar:/home/java/m2-repo/org/apache/tiles/tiles-
>> core/2.0.4/tiles-core-2.0.4.jar:/home/java/m2-repo/org/apache/
>> commons/commons-io/1.3.2/commons-io-1.3.2.jar:/home/java
>>
>> /m2-repo/taglibs/standard/1.1.2/standard-1.1.2.jar:/home/java/m2-
>> repo/javax/servlet/jstl/1.1.2/jstl-1.1.2.jar:/home/java/m2-repo/
>> commons-logging/commons-logging/1.1/commons-logging-1.1.jar:/home/
>> java/m2-repo/commons-fileupload/commons-fileupload/1.2.1/commons-
>> fileupload-1.2.1.jar:/home/java/m2-repo/commons-math/commons-math/
>> 1.1/commons-math-1.1.jar:/home/java/m2-repo/cglib/cglib-nodep/2.1_3/
>> cglib-nodep-2.1_3.jar:/home/java/m2-repo/org/easymock/easymock/2.3/
>> easymock-2.3.jar:/home/java/m2-repo/org/easymock/
>> easymockclassextension/2.3/easymockclassextension-2.3.jar:/home/java/
>> m2-repo/org/permacode/atomic-test-jar/1.0-SNAPSHOT/atomic-test-
>> jar-1.0-SNAPSHOT.jar:/home/java/m2-repo/org/dbunit/dbunit/2.2/
>> dbunit-2.2.jar:/home/java/m2-repo/httpunit/httpunit/1.6.2/
>> httpunit-1.6.2.jar:/home/java/m2-repo/org/apache/tomcat/jasper/
>> 6.0.13/jasper-6.0.13.jar:/home/java/m2-repo/org/apache/tomcat/juli/
>> 6.0.13/juli-6.0.13.jar:/home/java/m2-repo/org/apache/tomcat/jasper-
>> el/6.0.13/jasper-el-6.0.13.jar:
>>
>> /home/java/m2-repo/org/apache/tomcat/jasper-jdt/6.0.13/jasper-
>> jdt-6.0.13.jar:/home/java/m2-repo/org/apache/geronimo/specs/geronimo-
>> jpa_3.0_spec/1.1.1/geronimo-jpa_3.0_spec-1.1.1.jar:/home/java/m2-
>> repo/javax/transaction/jta/1.0.1B/jta-1.0.1B.jar:/home/java/m2-repo/
>> p6spy/p6spy/1.3-patch/p6spy-1.3-patch.jar:/home/java/m2-repo/
>> postgresql/postgresql/8.2-507.jdbc3/postgresql-8.2-507.jdbc3.jar:/
>> home/java/m2-repo/com/h2database/h2/1.0.64/h2-1.0.64.jar:/home/java/
>> m2-repo/mysql/mysql-connector-java/5.0.5/mysql-connector-
>> java-5.0.5.jar:/home/java/m2-repo/hsqldb/hsqldb/1.8.0.7/
>> hsqldb-1.8.0.7.jar:/home/java/m2-repo/org/apache/derby/derby/
>> 10.3.2.1/derby-10.3.2.1.jar:/home/java/m2-repo/commons-dbutils/
>> commons-dbutils/1.1/commons-dbutils-1.1.jar:/home/java/m2-repo/org/
>> springframework/spring-aop/2.0.6/spring-aop-2.0.6.jar:/home/java/m2-
>> repo/org/springframework/spring-beans/2.0.6/spring-beans-2.0.6.jar:/
>> home/java/m2-repo/org/springframework/spring-context/2.0.6/spring-
>> context-2.0.6.jar:/home/j
>>
>> ava/m2-repo/org/springframework/spring-core/2.0.6/spring-
>> core-2.0.6.jar:/home/java/m2-repo/org/springframework/spring-dao/
>> 2.0.6/spring-dao-2.0.6.jar:/home/java/m2-repo/org/springframework/
>> spring-jdbc/2.0.6/spring-jdbc-2.0.6.jar:/home/java/m2-repo/org/
>> springframework/spring-jpa/2.0.6/spring-jpa-2.0.6.jar:/home/java/
>> eclipse-3.3.1.1/plugins/org.junit4_4.3.1/junit.jar:/home/java/m2-
>> repo/org/hibernate/hibernate/3.2.5.ga/hibernate-3.2.5.ga.jar:/home/
>> java/m2-repo/org/hibernate/hibernate-annotations/3.3.0.ga/hibernate-
>> annotations-3.3.0.ga.jar:/home/java/m2-repo/org/hibernate/hibernate-
>> entitymanager/3.3.1.ga/hibernate-entitymanager-3.3.1.ga.jar:/home/
>> java/m2-repo/jboss/jboss-archive-browsing/5.0.0alpha-200607201-119/
>> jboss-archive-browsing-5.0.0alpha-200607201-119.jar:/home/java/m2-
>> repo/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar:/home/java/m2-repo/org/
>> hibernate/hibernate-commons-annotations/3.0.0.ga/hibernate-commons-
>> annotations-3.0.0.ga.jar:/home/java/m2-repo/jboss/javassist/3.3.ga/
>> javassist-3
>>
>> .3.ga.jar:/home/java/m2-repo/antlr/antlr/2.7.6/antlr-2.7.6.jar:/home/
>> java/m2-repo/cglib/cglib/2.1_3/cglib-2.1_3.jar:/home/java/m2-repo/
>> asm/asm/1.5.3/asm-1.5.3.jar:/home/java/m2-repo/org/apache/openjpa/
>> openjpa-jdbc/1.1.0-SNAPSHOT/openjpa-jdbc-1.1.0-SNAPSHOT.jar:/home/
>> java/m2-repo/org/apache/openjpa/openjpa/1.1.0-SNAPSHOT/openjpa-1.1.0-
>> SNAPSHOT.jar:/home/java/m2-repo/net/sourceforge/serp/serp/1.13.1/
>> serp-1.13.1.jar:/home/java/m2-repo/org/apache/openjpa/openjpa-
>> examples/1.1.0-SNAPSHOT/openjpa-examples-1.1.0-SNAPSHOT.jar:/home/
>> java/m2-repo/com/oracle/toplink/toplink-essentials/2.0-b58g-fcs/
>> toplink-essentials-2.0-b58g-fcs.jar:/home/java/m2-repo/com/oracle/
>> toplink/toplink-essentials-agent/2.0-b58g-fcs/toplink-essentials-
>> agent-2.0-b58g-fcs.jar:/home/java/m2-repo/javax/servlet/jsp/jsp-api/
>> 2.1/jsp-api-2.1.jar:/home/java/m2-repo/javax/servlet/servlet-api/2.5/
>> servlet-api-2.5.jar:/home/adam/projects/atomic-jdk-logging/build/:/
>> home/java/eclipse-3.3.1.1/configuration/org.eclipse.osgi/bundl
>>
>> es/384/1/.cp/:/home/java/eclipse-3.3.1.1/configuration/
>> org.eclipse.osgi/bundles/92/1/.cp/:/home/java/eclipse-3.3.1.1/
>> configuration/org.eclipse.osgi/bundles/9/1/.cp/:/tmp:null
>>
>> (org.apache.jasper.compiler)
>> FINE 14:06:54 JspServlet.init(): Scratch dir for the JSP engine is: /
>> tmp
>> (org.apache.jasper.servlet)
>> FINE 14:06:54 JspServlet.init(): IMPORTANT: Do not modify the
>> generated servlets
>> (org.apache.jasper.servlet)
>> FINE 14:06:54 JspServlet.service(): JspEngine --> /test.jsp
>> (org.apache.jasper.servlet)
>> FINE 14:06:54 JspServlet.service(): ServletPath: /test.jsp
>> (org.apache.jasper.servlet)
>> FINE 14:06:54 JspServlet.service(): PathInfo: null
>> (org.apache.jasper.servlet)
>> FINE 14:06:54 JspServlet.service(): RealPath:
>> /home/adam/projects/atomic/test.jsp (org.apache.jasper.servlet)
>> FINE 14:06:54 JspServlet.service(): RequestURI: /test/test.jsp
>> (org.apache.jasper.servlet)
>> FINE 14:06:54 JspServlet.service(): QueryString: code=1
>> (org.apache.jasper.servlet)
>> FINE 14:06:54 JspServlet.service(): Request Params:
>> (org.apache.jasper.servlet)
>> FINE 14:06:54 JspServlet.service(): code = 1
>> (org.apache.jasper.servlet)
>> FINE 14:06:54 Compiler.removeGeneratedFiles(): Deleting
>> /tmp/org/apache/jsp/test_jsp.class (org.apache.jasper.compiler)
>> FINE 14:06:54 Compiler.removeGeneratedFiles(): Deleting
>> /tmp/org/apache/jsp/test_jsp.java (org.apache.jasper.compiler)
>>
>>
>>
>>
>> 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)
-------------------------------------------------------------------------
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