----- Original Message -----
From: "Nicholas Lesiecki" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, September 26, 2001 10:08 PM
Subject: RE: testStatusCode IOException during cactus unit tests
> One thing to try...and I'm not sure I've followed the thread correctly, so
> let me know if I'm being helpful, is to hit the ServletRedirector with
your
> web browser. If it returns a 500 error claiming that a certain parameter
was
> not in the request, then your problem probably relates to the httpURL
> connection bug. If, however, it in fact returns a 404 not found, then you
> have got a problem with your mapping. Not a solution, just something to
> try...
>
Nick, this test (have a look at the code) voluntarily returns a 40x error
code and we test for it in endXXX() ! So getting a 40x error is normal and
expected, except that I would like HttpURLConnection not to trap it
(otherwise the endXXX is not called). The solution I had found so far was to
terminate URLs by "/" because if you have a look at the JDK source code for
HttpURLConnection (in the getInputStream() method) it says :
"[...]
if (respCode >= 400 && fname != null && !fname.endsWith(".html") &&
!fname.endsWith(".htm") && !fname.endsWith("/") &&
!fname.endsWith(".txt")) {
/* for unfound html files, the server's response
* can sometimes contain useful information, like a
* help page. In all other cases, e.g., ".class" or
* ".gif" or ".jpg" or ".ser", it is more telling
* to raise FileNotFoundException(), which for example
* keeps the AppletClassLoader from parsing an HTML page
* into a Class.
*/
throw new java.io.FileNotFoundException(url.toString());
}
[...]
"
Hope it is more clear now. This limitation will be removed when we use
HttpClient for making the HTTP connection (we don't use it at the current
time because it still has bugs like handling HTTP headers with the same name
which is needed for cookie handling, ... but this bug is known and may be
corrected soon).
-Vincent
> Cheers,
>
> Nick
>
> -----Original Message-----
> From: Malcolm Alexander [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, September 26, 2001 11:34 AM
> To: [EMAIL PROTECTED]
> Subject: Re: testStatusCode IOException during cactus unit tests
>
>
>
> Vincent,
>
> I am using JDK1.3.1_01 from sun's site, on NT4.0SP6. Had same problem
with
> same JDK on Win2000 as well. I'll try an earlier 1.3 jdk ...Thanks!!
>
> malcolm
>
>
>
>
> "Vincent
> Massol" To:
> <[EMAIL PROTECTED]>
> <vmassol@octo. cc:
> com> Subject: Re: testStatusCode
> IOException during cactus unit tests
>
> 09/26/01 12:39
> PM
> Please respond
> to cactus-user
>
>
>
>
>
>
>
> ----- Original Message -----
> From: "Malcolm Alexander" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Wednesday, September 26, 2001 4:45 PM
> Subject: Re: testStatusCode IOException during cactus unit tests
>
>
> >
> > Vincent,
> >
> > That was the first thing I checked, as it is mentioned in the
> documentation
> > and the code as well. Here is the code in the web.xml :
> >
> > <servlet-mapping>
> > <servlet-name>ServletRedirector</servlet-name>
> > <url-pattern>/ServletRedirector/</url-pattern>
> > </servlet-mapping>
> >
> > <servlet-mapping>
> > <servlet-name>JspRedirector</servlet-name>
> > <url-pattern>/JspRedirector/</url-pattern>
> > </servlet-mapping>
> >
> > and in cactus.properties:
> >
> > # Servlet Redirector. Used by ServletTestCase test cases.
> > cactus.servletRedirectorURL =
> http://localhost:8180/test/ServletRedirector/
> >
> > # JSP Redirector. Used by JspTestCase test cases.
> > cactus.jspRedirectorURL = http://localhost:8180/test/JspRedirector/
> >
> >
> > I'll keep looking though ... thanks much for your help!
>
> hummm ... What JVM and OS are you on ? I have only tried it on JDK 1.3 on
> Win32. This error comes from a limitation (should I call it a bug ? :) )
of
> HttpURLConnection and the implementation of that is probably different on
> different OSs.
>
> P.S.: We'll use Jakarta Commons HttpClient as soon as it is ready ...
>
> -Vincent
>
> >
> > malcolm
> >
> >
> >
> >
> > "Vincent
> > Massol" To:
> <[EMAIL PROTECTED]>
> > <vmassol@octo. cc:
> > com> Subject: Re: testStatusCode
> IOException during cactus unit tests
> >
>
> > 09/26/01 11:06
> > AM
> > Please respond
> > to cactus-user
> >
> >
> >
> >
> >
> >
> >
> > ----- Original Message -----
> > From: "Malcolm Alexander" <[EMAIL PROTECTED]>
> > To: <[EMAIL PROTECTED]>
> > Sent: Wednesday, September 26, 2001 3:04 PM
> > Subject: testStatusCode IOException during cactus unit tests
> >
> >
> > > With cactus 2.2, and following the steps in the samples howto, I get
an
> > > IOException during the testStatusCode test (did "ant tests_all").
> > > Commenting out the testcase code for testStatusCode (in
> > > TestServletTestCase2.java) shows that all the other tests run fine.
> > >
> > > Did I miss something in the configuration?
> > >
> >
> > Yes, probably, but it is a bit tricky ! :-) You may have missed the
> > trailing
> > "/" in the URL ... See
http://jakarta.apache.org/cactus/howto_config.html
> ,
> > you'll see a note:
> > "Notice the trailing slash ("/") to Redirector URLs. This is because
> Cactus
> > uses the JDK HttpURLConnection class to connect to these URLs and if
your
> > code on the server side returns an HTTP status code greater than 400,
> > HttpURLConnection will return an exception. It does not if the URL ends
> > with
> > a forward slash ("/") ! "
> >
> > -Vincent
> >
> > > The build results are shown below.
> > >
> > > Thanks,
> > >
> > > ****************************
> > >
> > > Buildfile: build.xml
> > >
> > > init:
> > > [echo] --------- Cactus Sample 1.2 ---------
> > > [echo]
> > > [echo] java.class.path = G:\jdk1.3.1_01\lib\tools.jar;F:
> > > \Development\Tools\jakarta-ant-1.4\lib\junit.jar;F:\Develop
> > > ment\Tools\jakarta-ant-1.4\lib\jaxp.jar;F:
> > > \Development\Tools\jakarta-ant-1.4\lib\jakarta-ant-1.4-optional.jar;F:
> > > \Develop
> > > ment\Tools\jakarta-ant-1.4\lib\crimson.jar;F:
> > > \Development\Tools\jakarta-ant-1.4\lib\ant.jar;
> > > [echo]
> > > [echo] java.home = G:\jdk1.3.1_01\jre
> > > [echo] user.home = C:\WINNT\Profiles\alexander
> > > [echo]
> > > [echo] basedir =
F:\Development\Tools\jakarta-cactus-23-1.2\sample
> > > [echo]
> > > [echo] cactus.jar = ../lib/cactus.jar
> > > [echo] cactus.ant.jar = ../lib/cactus-ant.jar
> > > [echo] servlet.jar = G:/Apache Tomcat 4.0/common/lib/servlet.jar
> > > [echo] junit.jar =
> > F:/Development/Tools/jakarta-ant-1.4/lib/junit.jar
> > > [echo] httpclient.jar = ../lib/httpclient.jar
> > >
> > > prepare:
> > > [copy] Copying 1 file to F:
> > > \Development\Tools\jakarta-cactus-23-1.2\sample\target\src
> > >
> > > prepare-compile:
> > >
> > > compile:
> > > [javac] Compiling 1 source file to F:
> > > \Development\Tools\jakarta-cactus-23-1.2\sample\target\classes
> > > [javac] Note: F:
> > >
> >
>
\Development\Tools\jakarta-cactus-23-1.2\sample\target\src\org\apache\cactus
>
> >
> > \sample\unit\TestServlet
> > > TestCase2.java uses or overrides a deprecated API.
> > > [javac] Note: Recompile with -deprecation for details.
> > >
> > > prepare-testwar-log4j:
> > >
> > > prepare-testwar:
> > >
> > > testwar:
> > > [war] Building war: F:
> > > \Development\Tools\jakarta-cactus-23-1.2\sample\target\test\test.war
> > >
> > > check_tests_resin_20:
> > > [echo]
> > > [echo] *********************************************************
> > > [echo] WARNING : The 'resin.home.20' property has not been set.
> > > [echo] No test will be run on that servlet engine.
> > > [echo] *********************************************************
> > > [echo]
> > >
> > > prepare_tests_resin_20:
> > >
> > > tests_resin_20:
> > >
> > > check_tests_resin_13:
> > > [echo]
> > > [echo] *********************************************************
> > > [echo] WARNING : The 'resin.home.13' property has not been set.
> > > [echo] No test will be run on that servlet engine.
> > > [echo] *********************************************************
> > > [echo]
> > >
> > > prepare_tests_resin_13:
> > >
> > > tests_resin_13:
> > >
> > > check_tests_tomcat_40:
> > >
> > > prepare_tests_tomcat_40:
> > > [echo] tomcat.home.40 = G:/Apache Tomcat 4.0
> > > [delete] Deleting: F:
> > >
> >
>
\Development\Tools\jakarta-cactus-23-1.2\sample\target\test\tomcat40\conf\se
>
> >
> > rver.xml
> > > [delete] Deleting directory F:
> > >
> >
>
\Development\Tools\jakarta-cactus-23-1.2\sample\target\test\tomcat40\webapps
>
> >
> > \test
> > > [copy] Copying 1 file to F:
> > >
> \Development\Tools\jakarta-cactus-23-1.2\sample\target\test\tomcat40\conf
> > > [copy] Copying 1 file to F:
> > >
> >
>
\Development\Tools\jakarta-cactus-23-1.2\sample\target\test\tomcat40\webapps
>
> >
> > >
> > > tests_tomcat_40:
> > >
> > > start_tomcat_40:
> > > [java] HttpConnector Opening server socket on all host IP
> addresses
> > > [java] Starting service Tomcat-Standalone
> > > [java] Apache Tomcat/4.0
> > > [java] StandardHost[localhost]: Installing web application at
> > context
> > > path /test from URL jar:file:F:\Development\T
> > >
> ools\jakarta-cactus-23-1.2\sample\target\test\tomcat40\webapps\test.war!/
> > > [java] WebappLoader[/test]: Deploying class repositories to work
> > > directory G:\Apache Tomcat 4.0\work\localhost\test
> > >
> > > [java] WebappLoader[/test]: Deploy JAR /WEB-INF/lib/cactus.jar to
> F:
> > > \Development\Tools\jakarta-cactus-23-1.2\sample
> > > \target\test\tomcat40\webapps\test\WEB-INF\lib\cactus.jar
> > > [java] WebappLoader[/test]: Deploy JAR
/WEB-INF/lib/httpclient.jar
> > to
> > > F:\Development\Tools\jakarta-cactus-23-1.2\sa
> > > mple\target\test\tomcat40\webapps\test\WEB-INF\lib\httpclient.jar
> > > [java] WebappLoader[/test]: Deploy JAR /WEB-INF/lib/junit.jar to
> F:
> > > \Development\Tools\jakarta-cactus-23-1.2\sample\
> > > target\test\tomcat40\webapps\test\WEB-INF\lib\junit.jar
> > > [java] WebappLoader[/test]: Deploy JAR /WEB-INF/lib/log4j.jar to
> F:
> > > \Development\Tools\jakarta-cactus-23-1.2\sample\
> > > target\test\tomcat40\webapps\test\WEB-INF\lib\log4j.jar
> > > [java] StandardManager[/test]: Seeding random number generator
> class
> > > java.security.SecureRandom
> > > [java] StandardManager[/test]: Seeding of random number generator
> > has
> > > been completed
> > > [java] StandardWrapper[/test:default]: Loading container servlet
> > > default
> > > [java] StandardWrapper[/test:invoker]: Loading container servlet
> > > invoker
> > > [java] StandardWrapper[/test:jsp]: Using Jasper classloader for
> > > servlet jsp
> > > [java] HttpConnector[8180] Starting background thread
> > >
> > > tests:
> > > [junit] Running org.apache.cactus.TestAll
> > > [java] StandardWrapper[/test:JspRedirector]: Using Jasper
> > classloader
> > > for servlet JspRedirector
> > > [junit] Tests run: 41, Failures: 0, Errors: 1, Time elapsed:
10.154
> > sec
> > > [junit] Testsuite: org.apache.cactus.TestAll
> > > [junit] Tests run: 41, Failures: 0, Errors: 1, Time elapsed:
10.154
> > sec
> > > [junit]
> > > [junit] Testcase: testLongProcess took 3.655 sec
> > > [junit] Testcase: testLotsOfData took 2.003 sec
> > > [junit] Testcase: testReadServletOutputStream took 0.11 sec
> > > [junit] Testcase: testPostMethod took 0.04 sec
> > > [junit] Testcase: testGetMethod took 0.03 sec
> > > [junit] Testcase: testSetAttribute took 0.03 sec
> > > [junit] Testcase: testSetRequestAttribute took 0.04 sec
> > > [junit] Testcase: testSendParams took 0.03 sec
> > > [junit] Testcase: testSendHeader took 0.05 sec
> > > [junit] Testcase: testSendCookie took 0.07 sec
> > > [junit] Testcase: testSendMultipleCookies took 0.03 sec
> > > [junit] Testcase: testReceiveHeader took 0.031 sec
> > > [junit] Testcase: testReceiveCookie took 0.1 sec
> > > [junit] Testcase: testRequestDispatcher took 2.153 sec
> > > [junit] Testcase: testServletConfig took 0.06 sec
> > > [junit] Testcase: testAddHeaderParamOK took 0.09 sec
> > > [junit] Testcase: testAddHeaderParamNotDefined took 0.04 sec
> > > [junit] Testcase: testAddFooterParamOK took 0.03 sec
> > > [junit] Testcase: testAddFooterParamNotDefined took 0.03 sec
> > > [junit] Testcase: testDoFilterOK took 0.06 sec
> > > [junit] Testcase: testDoStartTag took 0.691 sec
> > > [junit] Testcase: testDoStartTagInclude took 0.04 sec
> > > [junit] Testcase: testDoEndTagContinue took 0.03 sec
> > > [junit] Testcase: testDoEndTagStop took 0.04 sec
> > > [junit] Testcase: testReplacement took 0.06 sec
> > > [junit] Testcase: testAssertionFailedError took 0.101 sec
> > > [junit] Testcase: testExceptionNotSerializable took 0.03 sec
> > > [junit] Testcase: testExceptionSerializable took 0.03 sec
> > > [junit] Testcase: testNoAutomaticSessionCreation took 0.05 sec
> > > [junit] Testcase: testMultiValueParameters took 0.02 sec
> > > [junit] Testcase: testWriteOutputStream took 0.03 sec
> > > [junit] Testcase: testSetConfigParameter took 0.03 sec
> > > [junit] Testcase: testGetServletName took 0.03 sec
> > > [junit] Testcase: testSendMultivaluedHeader took 0.02 sec
> > > [junit] Testcase: testGetResponseAsStringMultiLines took 0.03 sec
> > > [junit] Testcase: testGetResponseAsStringArrayMultiLines took 0.06
> > sec
> > > [junit] Testcase: testCookieEncoding took 0.03 sec
> > > [junit] Testcase: testGetRequestDispatcherFromRequest1 took 0.05
> sec
> > > [junit] Testcase: testGetRequestDispatcherFromRequest2 took 0.03
> sec
> > > [junit] Testcase: testGetLogs took 0.02 sec
> > > [junit] Testcase: testStatusCode took 0.02 sec
> > > [junit] Caused an ERROR
> > > [junit] Server returned HTTP response code: 401 for URL:
> > > http://localhost:8180/test/ServletRedirector/
> > > [junit] java.io.IOException: Server returned HTTP response code:
> 401
> > > for URL: http://localhost:8180/test/ServletRedi
> > > rector/
> > > [junit] at
> > >
> >
>
sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection
>
> >
> > .java:564)
> > > [junit] at
> > >
> >
>
org.apache.cactus.client.AutoReadHttpURLConnection.getInputStream(AutoReadHt
>
> >
> > tpURLConnection.java:127)
> > >
> > > [junit] at
> > >
> >
>
org.apache.cactus.client.AbstractHttpClient.doTest(AbstractHttpClient.java:1
>
> >
> > 36)
> > > [junit] at
> > >
> >
>
org.apache.cactus.AbstractTestCase.runGenericTest(AbstractTestCase.java:422)
>
> >
> > > [junit] at
> > > org.apache.cactus.ServletTestCase.runTest(ServletTestCase.java:130)
> > > [junit] at
> > > org.apache.cactus.AbstractTestCase.runBare(AbstractTestCase.java:371)
> > > [junit] at
> > > junit.framework.TestResult$1.protect(TestResult.java:106)
> > > [junit] at
> > > junit.framework.TestResult.runProtected(TestResult.java:124)
> > > [junit] at junit.framework.TestResult.run(TestResult.java:109)
> > > [junit] at junit.framework.TestCase.run(TestCase.java:131)
> > > [junit] at
> junit.framework.TestSuite.runTest(TestSuite.java:173)
> > > [junit] at junit.framework.TestSuite.run(TestSuite.java:168)
> > > [junit] at
> junit.framework.TestSuite.runTest(TestSuite.java:173)
> > > [junit] at junit.framework.TestSuite.run(TestSuite.java:168)
> > > [junit] at
> > >
> >
>
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRu
>
> >
> > nner.java:231)
> > > [junit] at
> > >
> >
>
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestR
>
> >
> > unner.java:409)
> > > [junit]
> > >
> > > stop_tomcat_40:
> > > [java] Stopping service Tomcat-Standalone
> > > [java] HttpConnector[8180] Stopping background thread
> > > [java] StandardHost[localhost]: Removing web application at
> context
> > > path /test
> > > [runservertests] Server stopped !
> > >
> > > BUILD FAILED
> > >
> > > F:\Development\Tools\jakarta-cactus-23-1.2\sample\build\build.xml:376:
> > Test
> > > org.apache.cactus.TestAll failed
> > >
> > > Total time: 30 seconds
> > >
> > >
> > >
> > >
> > >
> >
> >
> >
> >
> >
> >
> >
>
>
>
>
>
>
>
>