Appendix B

Previous Contents

B Packaging the Test Applications in Servlet-Compliant WAR Files With VI-Specific Information

The JAX-RPC 1.1 specification specifies how JAX-RPC applications are to be published in a Java SE environment, JAX-WS endpoint, or Servlet–compliant Web container.

JAX-RPC TCK test application classes that are to be published in a Java SE environment are located under $TS_HOME/classes.

The JAX-RPC TCK comes with prebuilt test WAR files for deployment on Java EE 8 RI , which provides a Servlet–compliant Web container. The WAR files are Eclipse Glassfish 5.0-specific, with Eclipse Glassfish 5.0’s servlet class and Eclipse Glassfish 5.0’s servlet defined in the web.xml deployment descriptor. To run the TCK tests against the VI in a Servlet–compliant Web container, the tests need to be repackaged to include the VI-specific servlet, and the VI-specific servlet must be defined in the deployment descriptor.

The JAX-RPC TCK makes it easier for the vendor by including template WAR files that contain all of the necessary files except for the VI-specific servlet adaptor class. The JAX-RPC TCK provides a tool to help with the repackaging task.

This appendix contains the following sections:

B.1 Overview

The set of prebuilt archives and classes that ship with the JAX-RPC TCK were built using the Reference Implementation, and must be deployed on Java EE 8 RI and run against the Eclipse Glassfish 5.0 RI.

The prebuilt Eclipse Glassfish 5.0-specific Servlet–compliant WAR files are located under $TS_HOME`/dist`, and have jersey as part of their name; for example:

$TS_HOME/dist/com/sun/ts/tests/jaxrs/ee/rs/get/jaxrs_rs_get_web.war.jersey

The names are made unique by including jersey to minimize the chances that the files will be overwritten or modified.

The Vendor must create VI-specific Servlet–compliant WAR files if the Vendor chooses to publish on a Servlet–compliant Web container, so that the VI-specific Servlet class will be included instead of the Eclipse Glassfish 5.0-specific Servlet class.

B.2 Creating the TCK VI-Specific Servlet–Compliant WAR Files

All resource and application class files are already compiled. The Vendor needs to package these files. All tests also come with a web.xml.template file to be used for generating deployment descriptor files with a VI-specific Servlet definition.

Each test that has a JAX-RPC resource class to publish comes with a template deployment descriptor file. For example, the file $TS_HOME/src/com/sun/ts/tests/jaxrs/ee/rs/get/web.xml.template contains the following elements:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" \
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee \
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
        <servlet-name>CTSJAX-RSGET</servlet-name>
        <servlet-class>servlet_adaptor</servlet-class>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>com.sun.ts.tests.jaxrs.ee.rs.get.TSAppConfig</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>CTSJAX-RSGET</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
</web-app>

In this example, the <servlet-class> element has a value of servlet_adaptor, which is a placeholder for the implementation-specific Servlet class. A Eclipse Glassfish 5.0-specific deployment descriptor also comes with the JAX-RPC TCK, and has the values for the com.sun.jersey.spi.container.servlet.ServletContainer:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" \
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee \
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
        <servlet-name>CTSJAX-RSGET</servlet-name>
        <servlet-class>
            org/glassfish/jersey/servlet/ServletContainer
        </servlet-class>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>com.sun.ts.tests.jaxrs.ee.rs.get.TSAppConfig</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>CTSJAX-RSGET</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>30</session-timeout>
        </session-config>
</web-app>

The JAX-RPC TCK provides a tool, ${ts.home}/bin/xml/impl/glassfish/jersey.xml, for the Java EE 8 RI that you can use as a model to help you create your own VI-specific Web test application.

B.2.1 To Create a VI-Specific Deployment Descriptor

  1. Create a VI handler file.
    Create a VI-specific handler file $TS_HOME/bin/xml/impl/${`impl.vi}/jaxrs_impl_name.xml` if one does not already exist. Make sure the jaxrs_impl_name property is set in the <TS_HOME>/bin/ts.jte, file and that it has a unique name so no file will be overwritten.

  2. Set the VI Servlet class property.
    Set the servlet_adaptor property in the <TS_HOME>/bin/ts.jte file. This property will be used to set the value of the <servlet-class> element in the deployment descriptor.

  3. Create VI Ant tasks.
    Create a update.jaxrs.wars target in the VI handler file. Reference this update.jaxrs.wars target in the jersey.xml file.
    This target will create a web.xml.${`jaxrs_impl_name}` for each test that has a deployment descriptor template. The web.xml.${`jaxrs_impl_name}` will contain the VI-specific Servlet class name. It will also create the test WAR files under $TS_HOME/dist; for example:

    ls $TS_HOME/dist/com/sun/ts/tests/jaxrs/ee/rs/get/
    jaxrs_rs_get_web.war.jersey
    jaxrs_rs_get_web.war.${impl_name}
  4. Change to the $TS_HOME/bin directory and execute the update.jaxrs.wars Ant target.
    This creates a `web.xml.`VI_name file for each test based on the VI’s servlet class name and repackage the tests.


Previous Contents
Eclipse Foundation Logo  Copyright © 2018, Oracle and/or its affiliates. All rights reserved.