sun.com docs.sun.com | My Sun Worldwide Sites

|  | Products |  | Downloads |  | Service & Solutions |  | Support |  | Training |  | Research

|  | Previous | Contents |  |
Appendix B ### Packaging the JAX-RS 1.1 TCK Test Applications in Servlet-Compliant WAR Files With VI-Specific Information The JAX-RS 1.1 specification specifies how JAX-RS applications are to be published in a Java SE environment, JAX-WS endpoint, or Servlet–compliant Web container. JAX-RS 1.1 TCK test application classes that are to be published in a Java SE environment are located under `$TS_HOME/classes`. The JAX-RS 1.1 TCK comes with prebuilt test WAR files for deployment on Java EE 6 RI , which provides a Servlet–compliant Web container. The WAR files are Jersey-specific, with Jersey's servlet class and Jersey'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-RS 1.1 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-RS 1.1 TCK provides a tool to help with the repackaging task. This appendix contains the following sections: B.1 Overview B.2 Creating the JAX-RS 1.1 TCK VI-Specific Servlet-Compliant WAR Files ### B.1 Overview The set of prebuilt archives and classes that ship with the JAX-RS 1.1 TCK were built using the Sun Reference Implementation, and must be deployed on Java EE 6 RI and run against the Jersey RI. The prebuilt Jersey-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/getTest/jaxrs_rs_getTest_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 Jersey-specific Servlet class. ### B.2 Creating the JAX-RS 1.1 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-RS 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/getTest/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.getTest.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 Jersey-specific deployment descriptor also comes with the JAX-RS 1.1 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>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
            <init-param>
                <param-name>javax.ws.rs.Application</param-name>
                <param-value>com.sun.ts.tests.jaxrs.ee.rs.getTest.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>
3. The JAX-RS 1.1 TCK provides a tool, `${ts.home}/bin/xml/impl/glassfish/jersey.xml`, for the Java EE 6 RI that you can use as a model to help you create your own VI-specific Web test application. #### To Create a VI-Specific Deployment Descriptor 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.jte`, file and that it has a unique name so no file will be overwritten. Set the VI Servlet class property. Set the `servlet_adaptor` property in the `ts.jte` file. This property will be used to set the value of the `<servlet-class>` element in the deployment descriptor. 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 will be created under `$TS_HOME/dist`; for example:
       ls $TS_HOME/dist/com/sun/ts/tests/jaxrs/ee/rs/getTest/ \
       jaxrs_rs_getTest_web.war.jersey
       jaxrs_rs_getTest_web.war.${impl_name}
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 |  |

Company Info Contact Terms of Use Privacy Copyright 1994-2009 Sun Microsystems, Inc.