You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

Running

Tomcat

This is a work in progress while I figure out which settings required for  the Servlet 4.0 TCK ar still required for the Servlet 5.0 TCK.

setenv.[sh|bat]

Set the following system properties

  • -Dorg.apache.catalina.STRICT_SERVLET_COMPLIANCE=true

context.xml

Make the following changes:

<Context crossContext="true" resourceOnlyServlets="jsp">
   <CookieProcessor className="org.apache.tomcat.util.http.LegacyCookieProcessor" alwaysAddExpires="true" forwardSlashIsSeparator="false" />
   ...

</Context>

server.xml

Enable h2c on port 8080, and add some trailer headers
<Connector ... allowedTrailerHeaders="myTrailer, myTrailer2" >
    <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
</Connector>

Enable TLS on port 8443

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true">

        <SSLHostConfig truststoreFile="conf/cacerts.jks">

            <Certificate certificateKeystoreFile="conf/clientcert.jks"

                         certificateKeystorePassword="changeit"

                         type="RSA" />

        </SSLHostConfig>

    </Connector>

tomcat-users.xml

Make the following changes:

<user username="CN=CTS, OU=Java Software, O=Sun Microsystems Inc., L=Burlington, ST=MA, C=US" roles="Administrator"/>
<user username="j2ee" password="j2ee" roles="Administrator,Employee" />
<user username="javajoe" password="javajoe" roles="VP,Manager" />

web.xml

Remove the sections setting the default character encoding for requests and responses to UTF-8.

Tomcat config for Servlet 4.0

server.xml

Enable TLS on port 8443

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true">

        <SSLHostConfig truststoreFile="conf/cacerts.jks">

            <Certificate certificateKeystoreFile="conf/clientcert.jks"

                         certificateKeystorePassword="changeit"

                         type="RSA" />

        </SSLHostConfig>

    </Connector>

Remove the lock-out realm

Client certificate tests: see below

Test Suite

Download latest nightly build

http://download.eclipse.org/ee4j/jakartaee-tck/master/nightly/servlet-tck-5.0.0.zip

Extract to SERVLET_TCK_HOME

Import bin/cts_cert to a truststore doing: "keytool -import -alias cts -file cts_cert -storetype JKS -keystore cacerts.jks" password should be "changeit"

Create the truststore using  "keytool -import -alias cts -file cts_cert -storetype JKS -keystore cacerts.jks" password should be "changeit"

Place cacerts.jks truststore in $SERVLET_TCK_HOME/bin/certificates

Add $SERVLET_TCK_HOME/bin/certificates/cacerts.jks and $SERVLET_TCK_HOME/bin/certificates/clientcert.jks in the Tomcat conf folder


Edit $SERVLET_TCK_HOME/bin/ts.jte

You'll need to set the following properties (adjust the paths and values for your environment)


web.home=/path/to/tomcat

servlet.classes=${web.home}/lib/servlet-api.jar:${web.home}/lib/annotations-api.jar
webServerHost=localhost
webServerPort=8080
securedWebServicePort=8443
command.testExecute += -Djava.endorsed.dirs=${ts.home}/endorsedlib -Djavax.net.ssl.trustStore=${ts.home}/bin/certificates/cacerts.jks
  
set JAVA_HOME
cd $SERVLET_TCK_HOME/bin
ant gui
Accept the defaults and then run the tests

Expected results

A default 10.0.x build (as of 2020-06-18) with the above configuration and the TCK built from source (as of 2020-06-18) triggers 25 test failures

1 Expected failures

  • 1 x default context path test as Tomcat configuration always overrides this

TCK bugs

  • PR 338
    • Incorrect major version (1 failure),
    • Using LF rather an CRLF (15 failures)
    • Strange /j_security_check test (2 failures)
    • Error page attributes assumed to be unset when spec requires them to be set (3 failures)
    • Missing annotation marker in Java 8 signature tests (1 failure)

2 failures suspected to be related to incomplete client-cert configuration. Signature tests with Java 11 not yet tested.

  • No labels