If you are using a compatible implementation, other than Eclipse Jersey 2.26, please consult documentation which may contain additional details specific for that implementation.
Appendix B: Rebuild Rules |
Previous | Contents |
If you are using a compatible implementation, other than Eclipse Jersey 2.26, please consult documentation which may contain additional details specific for that implementation.
The RESTful Web Services 2.1 specification specifies how RESTful Web Services applications are to be published in a Java SE environment, JAX-WS endpoint, or Servlet–compliant Web container.
RESTful Web Services TCK test application classes that are to be
published in a Java SE environment are located under
$TS_HOME/classes
.
The RESTful Web Services TCK comes with prebuilt test WAR files for
deployment on JAkarta EE 8 CI, Eclipse GlassFish 5.1, which provides a Servlet–compliant Web
container. The WAR files are Eclipse Jersey 2.26-specific, with Eclipse Jersey 2.26’s servlet
class and Eclipse Jersey 2.26’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 RESTful Web Services 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 RESTful Web Services TCK provides a tool to help with the repackaging task.
This appendix contains the following sections:
The set of prebuilt archives and classes that ship with the RESTful Web Services TCK were built using the Eclipse GlassFish 5.1, Compatible Implementation, and must be deployed on a Jakarta EE 8 CI and run against the Eclipse Jersey 2.26 CI.
The prebuilt Eclipse Jersey 2.26-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 keyword 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 Jersey 2.26-specific Servlet class.
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 RESTful Web Services 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 Jersey 2.26-specific
deployment descriptor also comes with the RESTful Web Services 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 RESTful Web Services TCK provides a tool,
${ts.home}/bin/xml/impl/glassfish/jersey.xml
, for use with the Jakarta EE 8 CI, Eclipse GlassFish 5.1
that you can use as a model to help you create your own VI-specific Web
test application.
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.
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.
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}
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 |