You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by re...@apache.org on 2024/09/19 00:32:32 UTC
(cxf) branch main updated: CXF-9039: Run Jakarta RESTful Web Services 3.1 TCK (initial commit)
This is an automated email from the ASF dual-hosted git repository.
reta pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cxf.git
The following commit(s) were added to refs/heads/main by this push:
new 0136e233c8 CXF-9039: Run Jakarta RESTful Web Services 3.1 TCK (initial commit)
0136e233c8 is described below
commit 0136e233c8b183444d6d7ad3f20cf5dfd7db147d
Author: Andriy Redko <dr...@gmail.com>
AuthorDate: Wed Sep 18 20:31:32 2024 -0400
CXF-9039: Run Jakarta RESTful Web Services 3.1 TCK (initial commit)
---
tck/cxf-tck/README.md | 15 +
tck/cxf-tck/j2ee.pass | 16 +
tck/cxf-tck/javajoe.pass | 16 +
tck/cxf-tck/pom.xml | 500 +++++++++++++++++++++
.../cxf/tck/CxfApplicationArchiveProcessor.java | 35 ++
.../org/apache/cxf/tck/CxfLoadableExtension.java | 27 ++
...org.jboss.arquillian.core.spi.LoadableExtension | 1 +
..._core_securitycontext_basic_web.war.sun-web.xml | 31 ++
...ner_requestcontext_security_web.war.sun-web.xml | 27 ++
9 files changed, 668 insertions(+)
diff --git a/tck/cxf-tck/README.md b/tck/cxf-tck/README.md
new file mode 100644
index 0000000000..7e57cf5e2a
--- /dev/null
+++ b/tck/cxf-tck/README.md
@@ -0,0 +1,15 @@
+# Jakarta REST TCK
+
+The **Jakarta REST TCK** is a standalone kit for testing compliance of an implementation with the Jakarta REST specification.
+
+**Note:** This TCK contains *only* tests being added since Jakarta REST 3.0. To proof compliance as part of a certification review, additional test have to be performed. Those are part of the Jakarta Platform TCK for historic reasons.
+
+## Performing Test
+
+* Execute `mvn verify`.
+* Find the test result as part of Maven's output on the console or refer to the surefire reports.
+
+## Source
+
+* `https://github.com/jakartaee/rest/blob/3.1.0/jersey-tck/`
+
diff --git a/tck/cxf-tck/j2ee.pass b/tck/cxf-tck/j2ee.pass
new file mode 100644
index 0000000000..906340cd6a
--- /dev/null
+++ b/tck/cxf-tck/j2ee.pass
@@ -0,0 +1,16 @@
+#
+# Copyright (c) 2021 Oracle and/or its affiliates. All rights reserved.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License v. 2.0, which is available at
+# http://www.eclipse.org/legal/epl-2.0.
+#
+# This Source Code may also be made available under the following Secondary
+# Licenses when the conditions for such availability set forth in the
+# Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+# version 2 with the GNU Classpath Exception, which is available at
+# https://www.gnu.org/software/classpath/license.html.
+#
+# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+#
+AS_ADMIN_USERPASSWORD=j2ee
\ No newline at end of file
diff --git a/tck/cxf-tck/javajoe.pass b/tck/cxf-tck/javajoe.pass
new file mode 100644
index 0000000000..4e595a6168
--- /dev/null
+++ b/tck/cxf-tck/javajoe.pass
@@ -0,0 +1,16 @@
+#
+# Copyright (c) 2021 Oracle and/or its affiliates. All rights reserved.
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Public License v. 2.0, which is available at
+# http://www.eclipse.org/legal/epl-2.0.
+#
+# This Source Code may also be made available under the following Secondary
+# Licenses when the conditions for such availability set forth in the
+# Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+# version 2 with the GNU Classpath Exception, which is available at
+# https://www.gnu.org/software/classpath/license.html.
+#
+# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+#
+AS_ADMIN_USERPASSWORD=javajoe
\ No newline at end of file
diff --git a/tck/cxf-tck/pom.xml b/tck/cxf-tck/pom.xml
new file mode 100644
index 0000000000..d3a77e769b
--- /dev/null
+++ b/tck/cxf-tck/pom.xml
@@ -0,0 +1,500 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+ Copyright (c) 2021, 2022 Oracle and/or its affiliates. All rights reserved.
+
+ This program and the accompanying materials are made available under the
+ terms of the Eclipse Public License v. 2.0, which is available at
+ http://www.eclipse.org/legal/epl-2.0.
+
+ This Source Code may also be made available under the following Secondary
+ Licenses when the conditions for such availability set forth in the
+ Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ version 2 with the GNU Classpath Exception, which is available at
+ https://www.gnu.org/software/classpath/license.html.
+
+ SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>cxf-rest-tck</artifactId>
+ <packaging>jar</packaging>
+
+ <parent>
+ <groupId>jakarta.ws.rs</groupId>
+ <artifactId>all</artifactId>
+ <version>3.1.0</version>
+ </parent>
+
+ <name>Jakarta RESTful WS Compliance</name>
+ <description>This test verifies the compliance of Apache CXF with Jakarta REST</description>
+
+ <properties>
+ <maven.compiler.source>11</maven.compiler.source>
+ <maven.compiler.target>11</maven.compiler.target>
+ <cxf.version>4.1.0-SNAPSHOT</cxf.version>
+ <glassfish.container.version>7.0.16</glassfish.container.version>
+ <glassfish.home>${project.build.directory}/glassfish7</glassfish.home>
+ <jakarta.platform.version>10.0.0</jakarta.platform.version>
+ <junit.jupiter.version>5.11.0</junit.jupiter.version>
+ <jakarta.rest.version>3.1.0</jakarta.rest.version>
+ <tck.artifactId>jakarta-restful-ws-tck</tck.artifactId>
+ <arquillian.version>1.8.0.Final</arquillian.version>
+ </properties>
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.junit</groupId>
+ <artifactId>junit-bom</artifactId>
+ <version>${junit.jupiter.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-bom</artifactId>
+ <version>${cxf.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.arquillian</groupId>
+ <artifactId>arquillian-bom</artifactId>
+ <version>${arquillian.version}</version>
+ <scope>import</scope>
+ <type>pom</type>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.glassfish.hk2</groupId>
+ <artifactId>hk2-locator</artifactId>
+ <version>3.0.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-impl</artifactId>
+ <version>4.0.5</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>com.github.hantsy.arquillian-container-glassfish-jakarta</groupId>
+ <artifactId>arquillian-glassfish-managed-jakarta</artifactId>
+ <version>7.0.10</version>
+ </dependency>
+
+ <dependency>
+ <groupId>jakarta.ws.rs</groupId>
+ <artifactId>${tck.artifactId}</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>jakarta.ws.rs</groupId>
+ <artifactId>jakarta.ws.rs-api</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>hamcrest</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.glassfish.main.common</groupId>
+ <artifactId>simple-glassfish-api</artifactId>
+ <version>${glassfish.container.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.arquillian.junit5</groupId>
+ <artifactId>arquillian-junit5-container</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>jakarta.platform</groupId>
+ <artifactId>jakarta.jakartaee-api</artifactId>
+ <version>${jakarta.platform.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ <version>3.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-transports-http</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-frontend-jaxrs</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-rs-sse</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-rs-client</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.netbeans.tools</groupId>
+ <artifactId>sigtest-maven-plugin</artifactId>
+ <version>1.4</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <version>3.2.0</version>
+ <executions>
+ <execution>
+ <id>unpack</id>
+ <phase>pre-integration-test</phase>
+ <goals>
+ <goal>unpack</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>org.glassfish.main.distributions</groupId>
+ <artifactId>glassfish</artifactId>
+ <version>${glassfish.container.version}</version>
+ <type>zip</type>
+ <overWrite>false</overWrite>
+ <outputDirectory>${project.build.directory}</outputDirectory>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ <execution>
+ <id>copy</id>
+ <phase>pre-integration-test</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-rs-client</artifactId>
+ <version>${cxf.version}</version>
+ <type>jar</type>
+ <overWrite>true</overWrite>
+ <outputDirectory>${glassfish.home}/glassfish/lib</outputDirectory>
+ </artifactItem>
+ <artifactItem>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-core</artifactId>
+ <version>${cxf.version}</version>
+ <type>jar</type>
+ <overWrite>true</overWrite>
+ <outputDirectory>${glassfish.home}/glassfish/lib</outputDirectory>
+ </artifactItem>
+ <artifactItem>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-frontend-jaxrs</artifactId>
+ <version>${cxf.version}</version>
+ <type>jar</type>
+ <overWrite>true</overWrite>
+ <outputDirectory>${glassfish.home}/glassfish/lib</outputDirectory>
+ </artifactItem>
+ <artifactItem>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-transports-http</artifactId>
+ <version>${cxf.version}</version>
+ <type>jar</type>
+ <overWrite>true</overWrite>
+ <outputDirectory>${glassfish.home}/glassfish/lib</outputDirectory>
+ </artifactItem>
+ <artifactItem>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-rs-sse</artifactId>
+ <version>${cxf.version}</version>
+ <type>jar</type>
+ <overWrite>true</overWrite>
+ <outputDirectory>${glassfish.home}/glassfish/lib</outputDirectory>
+ </artifactItem>
+ <artifactItem>
+ <groupId>jakarta.ws.rs</groupId>
+ <artifactId>jakarta.ws.rs-api</artifactId>
+ <version>${jakarta.rest.version}</version>
+ <type>jar</type>
+ <overWrite>true</overWrite>
+ <outputDirectory>${glassfish.home}/glassfish/modules</outputDirectory>
+ <destFileName>jakarta.ws.rs-api.jar</destFileName>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <version>3.4.1</version>
+ <executions>
+ <execution>
+ <id>StopDomain1</id>
+ <phase>pre-integration-test</phase>
+ <goals>
+ <goal>exec</goal>
+ </goals>
+ <configuration>
+ <executable>${project.build.directory}/glassfish7/glassfish/bin/asadmin</executable>
+ <arguments>
+ <argument>stop-domain</argument>
+ </arguments>
+ </configuration>
+ </execution>
+ <execution>
+ <id>UpdateConfigs</id>
+ <phase>pre-integration-test</phase>
+ <goals>
+ <goal>exec</goal>
+ </goals>
+ <configuration>
+ <executable>zip</executable>
+ <arguments>
+ <argument>-d</argument>
+ <argument>${project.build.directory}/glassfish7/glassfish/modules/jersey-server.jar</argument>
+ <argument>META-INF/services/jakarta.ws.rs.ext.RuntimeDelegate</argument>
+ </arguments>
+ </configuration>
+ </execution>
+ <execution>
+ <id>StartDomain1</id>
+ <phase>pre-integration-test</phase>
+ <goals>
+ <goal>exec</goal>
+ </goals>
+ <configuration>
+ <executable>${project.build.directory}/glassfish7/glassfish/bin/asadmin</executable>
+ <arguments>
+ <argument>start-domain</argument>
+ </arguments>
+ </configuration>
+ </execution>
+ <execution>
+ <id>Enable Trace requests</id>
+ <phase>pre-integration-test</phase>
+ <goals>
+ <goal>exec</goal>
+ </goals>
+ <configuration>
+ <executable>${project.build.directory}/glassfish7/glassfish/bin/asadmin</executable>
+ <arguments>
+ <argument>set</argument>
+ <argument>server-config.network-config.protocols.protocol.http-listener-1.http.trace-enabled=true</argument>
+ </arguments>
+ </configuration>
+ </execution>
+ <execution>
+ <id>Delete User j2ee</id>
+ <phase>pre-integration-test</phase>
+ <goals>
+ <goal>exec</goal>
+ </goals>
+ <configuration>
+ <executable>${project.build.directory}/glassfish7/glassfish/bin/asadmin</executable>
+ <arguments>
+ <argument>--passwordfile</argument>
+ <argument>${project.basedir}/j2ee.pass</argument>
+ <argument>delete-file-user</argument>
+ <argument>j2ee</argument>
+ </arguments>
+ <successCodes>
+ <successCode>0</successCode>
+ <successCode>1</successCode>
+ </successCodes>
+ </configuration>
+ </execution>
+ <execution>
+ <id>Add User j2ee</id>
+ <phase>pre-integration-test</phase>
+ <goals>
+ <goal>exec</goal>
+ </goals>
+ <configuration>
+ <executable>${project.build.directory}/glassfish7/glassfish/bin/asadmin</executable>
+ <arguments>
+ <argument>--passwordfile</argument>
+ <argument>${project.basedir}/j2ee.pass</argument>
+ <argument>create-file-user</argument>
+ <argument>--groups</argument>
+ <argument>staff:mgr</argument>
+ <argument>j2ee</argument>
+ </arguments>
+ </configuration>
+ </execution>
+ <execution>
+ <id>Delete User javajoe</id>
+ <phase>pre-integration-test</phase>
+ <goals>
+ <goal>exec</goal>
+ </goals>
+ <configuration>
+ <executable>${project.build.directory}/glassfish7/glassfish/bin/asadmin</executable>
+ <arguments>
+ <argument>--passwordfile</argument>
+ <argument>${project.basedir}/javajoe.pass</argument>
+ <argument>delete-file-user</argument>
+ <argument>javajoe</argument>
+ </arguments>
+ <successCodes>
+ <successCode>0</successCode>
+ <successCode>1</successCode>
+ </successCodes>
+ </configuration>
+ </execution>
+ <execution>
+ <id>Add User javajoe</id>
+ <phase>pre-integration-test</phase>
+ <goals>
+ <goal>exec</goal>
+ </goals>
+ <configuration>
+ <executable>${project.build.directory}/glassfish7/glassfish/bin/asadmin</executable>
+ <arguments>
+ <argument>--passwordfile</argument>
+ <argument>${project.basedir}/javajoe.pass</argument>
+ <argument>create-file-user</argument>
+ <argument>--groups</argument>
+ <argument>guest</argument>
+ <argument>javajoe</argument>
+ </arguments>
+ </configuration>
+ </execution>
+ <execution>
+ <id>list users</id>
+ <phase>pre-integration-test</phase>
+ <goals>
+ <goal>exec</goal>
+ </goals>
+ <configuration>
+ <executable>${project.build.directory}/glassfish7/glassfish/bin/asadmin</executable>
+ <arguments>
+ <argument>list-file-users</argument>
+ </arguments>
+ </configuration>
+ </execution>
+ <execution>
+ <id>StopDomain</id>
+ <phase>pre-integration-test</phase>
+ <goals>
+ <goal>exec</goal>
+ </goals>
+ <configuration>
+ <executable>${project.build.directory}/glassfish7/glassfish/bin/asadmin</executable>
+ <arguments>
+ <argument>stop-domain</argument>
+ </arguments>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <version>3.5.0</version>
+ <executions>
+ <execution>
+ <id>gf-tests</id>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ <configuration>
+ <excludes>
+ <exclude>**/SeBootstrapIT.java</exclude>
+ </excludes>
+ <dependenciesToScan>jakarta.ws.rs:${tck.artifactId}</dependenciesToScan>
+ <systemPropertyVariables>
+ <glassFishHome>${glassfish.home}</glassFishHome>
+ <servlet_adaptor>org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet</servlet_adaptor>
+ <webServerHost>localhost</webServerHost>
+ <webServerPort>8080</webServerPort>
+ <junit.log.traceflag>true</junit.log.traceflag>
+ <user>j2ee</user>
+ <password>j2ee</password>
+ <authuser>javajoe</authuser>
+ <authpassword>javajoe</authpassword>
+ <porting.ts.url.class.1>ee.jakarta.tck.ws.rs.lib.implementation.sun.common.SunRIURL</porting.ts.url.class.1>
+ <jimage.dir>${project.build.directory}/jdk11-bundle</jimage.dir>
+ <optional.tech.packages.to.ignore>jakarta.xml.bind</optional.tech.packages.to.ignore>
+ <signature.sigTestClasspath>${glassfish.home}/glassfish/modules/jakarta.ws.rs-api.jar:${glassfish.home}/glassfish/modules/jakarta.xml.bind-api.jar:${project.build.directory}/jdk11-bundle/java.base:${project.build.directory}/jdk11-bundle/java.rmi:${project.build.directory}/jdk11-bundle/java.sql:${project.build.directory}/jdk11-bundle/java.naming</signature.sigTestClasspath>
+ </systemPropertyVariables>
+ <environmentVariables>
+ <GLASSFISH_HOME>${glassfish.home}</GLASSFISH_HOME>
+ </environmentVariables>
+ </configuration>
+ </execution>
+ <execution>
+ <id>se-tests</id>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ <configuration>
+ <includes>
+ <include>**/SeBootstrapIT.java</include>
+ </includes>
+ <dependenciesToScan>jakarta.ws.rs:${tck.artifactId}</dependenciesToScan>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+ <repositories>
+ <repository>
+ <id>central</id>
+ <url>https://repo.maven.apache.org/maven2</url>
+ </repository>
+ <repository>
+ <id>jitpack.io</id>
+ <url>https://jitpack.io</url>
+ </repository>
+ </repositories>
+</project>
diff --git a/tck/cxf-tck/src/main/java/org/apache/cxf/tck/CxfApplicationArchiveProcessor.java b/tck/cxf-tck/src/main/java/org/apache/cxf/tck/CxfApplicationArchiveProcessor.java
new file mode 100644
index 0000000000..8e42d495dc
--- /dev/null
+++ b/tck/cxf-tck/src/main/java/org/apache/cxf/tck/CxfApplicationArchiveProcessor.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2021 Oracle and/or its affiliates. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0, which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+
+package org.apache.cxf.tck;
+
+import org.jboss.arquillian.container.test.spi.client.deployment.ApplicationArchiveProcessor;
+import org.jboss.arquillian.test.spi.TestClass;
+import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+
+public class CxfApplicationArchiveProcessor implements ApplicationArchiveProcessor {
+ @Override
+ public void process(Archive<?> archive, TestClass testClass) {
+ if ("jaxrs_ee_rs_container_requestcontext_security_web.war".equals(archive.getName())) {
+ WebArchive webArchive = (WebArchive) archive;
+ webArchive.addAsWebInfResource("jaxrs_ee_rs_container_requestcontext_security_web.war.sun-web.xml", "sun-web.xml");
+ } else if ("jaxrs_ee_core_securitycontext_basic_web.war".equals(archive.getName())) {
+ WebArchive webArchive = (WebArchive) archive;
+ webArchive.addAsWebInfResource("jaxrs_ee_core_securitycontext_basic_web.war.sun-web.xml", "sun-web.xml");
+ }
+ }
+}
diff --git a/tck/cxf-tck/src/main/java/org/apache/cxf/tck/CxfLoadableExtension.java b/tck/cxf-tck/src/main/java/org/apache/cxf/tck/CxfLoadableExtension.java
new file mode 100644
index 0000000000..3dd69ca246
--- /dev/null
+++ b/tck/cxf-tck/src/main/java/org/apache/cxf/tck/CxfLoadableExtension.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2021 Oracle and/or its affiliates. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0, which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+
+package org.apache.cxf.tck;
+
+import org.jboss.arquillian.container.test.spi.client.deployment.ApplicationArchiveProcessor;
+import org.jboss.arquillian.core.spi.LoadableExtension;
+
+public class CxfLoadableExtension implements LoadableExtension {
+ @Override
+ public void register(ExtensionBuilder extensionBuilder) {
+ extensionBuilder.service(ApplicationArchiveProcessor.class, CxfApplicationArchiveProcessor.class);
+ }
+}
diff --git a/tck/cxf-tck/src/main/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension b/tck/cxf-tck/src/main/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
new file mode 100644
index 0000000000..c70bb77d8c
--- /dev/null
+++ b/tck/cxf-tck/src/main/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
@@ -0,0 +1 @@
+org.apache.cxf.tck.CxfLoadableExtension
\ No newline at end of file
diff --git a/tck/cxf-tck/src/main/resources/jaxrs_ee_core_securitycontext_basic_web.war.sun-web.xml b/tck/cxf-tck/src/main/resources/jaxrs_ee_core_securitycontext_basic_web.war.sun-web.xml
new file mode 100644
index 0000000000..84d84bc0ca
--- /dev/null
+++ b/tck/cxf-tck/src/main/resources/jaxrs_ee_core_securitycontext_basic_web.war.sun-web.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved.
+
+ This program and the accompanying materials are made available under the
+ terms of the Eclipse Public License v. 2.0, which is available at
+ http://www.eclipse.org/legal/epl-2.0.
+
+ This Source Code may also be made available under the following Secondary
+ Licenses when the conditions for such availability set forth in the
+ Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ version 2 with the GNU Classpath Exception, which is available at
+ https://www.gnu.org/software/classpath/license.html.
+
+ SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Sun ONE Application Server 8.0 Servlet 2.4//EN" "http://www.sun.com/software/sunone/appserver/dtds/sun-web-app_2_5-0.dtd">
+<sun-web-app>
+ <context-root>jaxrs_ee_core_securitycontext_basic_web</context-root>
+ <security-role-mapping>
+ <role-name>DIRECTOR</role-name>
+ <principal-name>j2ee</principal-name>
+ </security-role-mapping>
+ <security-role-mapping>
+ <role-name>OTHERROLE</role-name>
+ <principal-name>javajoe</principal-name>
+ </security-role-mapping>
+</sun-web-app>
diff --git a/tck/cxf-tck/src/main/resources/jaxrs_ee_rs_container_requestcontext_security_web.war.sun-web.xml b/tck/cxf-tck/src/main/resources/jaxrs_ee_rs_container_requestcontext_security_web.war.sun-web.xml
new file mode 100644
index 0000000000..1ba5a0796b
--- /dev/null
+++ b/tck/cxf-tck/src/main/resources/jaxrs_ee_rs_container_requestcontext_security_web.war.sun-web.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved.
+
+ This program and the accompanying materials are made available under the
+ terms of the Eclipse Public License v. 2.0, which is available at
+ http://www.eclipse.org/legal/epl-2.0.
+
+ This Source Code may also be made available under the following Secondary
+ Licenses when the conditions for such availability set forth in the
+ Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ version 2 with the GNU Classpath Exception, which is available at
+ https://www.gnu.org/software/classpath/license.html.
+
+ SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Sun ONE Application Server 8.0 Servlet 2.4//EN" "http://www.sun.com/software/sunone/appserver/dtds/sun-web-app_2_5-0.dtd">
+<sun-web-app>
+ <context-root>jaxrs_ee_rs_container_requestcontext_security_web</context-root>
+ <security-role-mapping>
+ <role-name>DIRECTOR</role-name>
+ <principal-name>j2ee</principal-name>
+ </security-role-mapping>
+</sun-web-app>