diff --git a/jaxrs-tck/src/main/java/jakarta/ws/rs/tck/common/JAXRSCommonClient.java b/jaxrs-tck/src/main/java/jakarta/ws/rs/tck/common/JAXRSCommonClient.java
index e41d223..db8aa0e 100644
--- a/jaxrs-tck/src/main/java/jakarta/ws/rs/tck/common/JAXRSCommonClient.java
+++ b/jaxrs-tck/src/main/java/jakarta/ws/rs/tck/common/JAXRSCommonClient.java
@@ -21,7 +21,7 @@
 import java.net.UnknownHostException;
 import java.util.Enumeration;
 import java.util.Hashtable;
-import java.util.Properties;
+import java.util.stream.Collectors;
 import java.nio.charset.StandardCharsets;
 
 
@@ -49,7 +49,7 @@
  */
 //public abstract class JAXRSCommonClient extends ServiceEETest {
 public abstract class JAXRSCommonClient {
-
+  @SuppressWarnings("unused")
   private static final long serialVersionUID = 1L;
 
   /**
@@ -533,17 +533,14 @@
     return sb.toString();
   }
 
-  public static String editWebXmlString(InputStream inStream) throws IOException{
-    String line;
-    String webXmlTemplate = "";
+  public static String toString(InputStream inStream) throws IOException{
     try (BufferedReader bufReader = new BufferedReader(new InputStreamReader(inStream, StandardCharsets.UTF_8))) {
-      while ((line = bufReader.readLine()) != null) {
-        webXmlTemplate = webXmlTemplate + line + System.lineSeparator();
-      }
+      return bufReader.lines().collect(Collectors.joining(System.lineSeparator()));
     }
-    
-    String webXml = webXmlTemplate.replaceAll("servlet_adaptor", servletAdaptor);
-    return webXml;
+  }
+
+  public static String editWebXmlString(InputStream inStream) throws IOException{
+    return toString(inStream).replaceAll("servlet_adaptor", servletAdaptor);
   }
 
   /**
diff --git a/jaxrs-tck/src/main/java/jakarta/ws/rs/tck/spec/resourceconstructor/JAXRSClientIT.java b/jaxrs-tck/src/main/java/jakarta/ws/rs/tck/spec/resourceconstructor/JAXRSClientIT.java
index 1f52466..f8e9a45 100644
--- a/jaxrs-tck/src/main/java/jakarta/ws/rs/tck/spec/resourceconstructor/JAXRSClientIT.java
+++ b/jaxrs-tck/src/main/java/jakarta/ws/rs/tck/spec/resourceconstructor/JAXRSClientIT.java
@@ -55,8 +55,11 @@
   public static WebArchive createDeployment() throws IOException{
     InputStream inStream = JAXRSClientIT.class.getClassLoader().getResourceAsStream("jakarta/ws/rs/tck/spec/resourceconstructor/web.xml.template");
     String webXml = editWebXmlString(inStream);
+    inStream = JAXRSClientIT.class.getClassLoader().getResourceAsStream("jakarta/ws/rs/tck/spec/resourceconstructor/beans.xml");
+    String beansXml = toString(inStream);
     WebArchive archive = ShrinkWrap.create(WebArchive.class, "jaxrs_spec_resourceconstructor_web.war");
     archive.addClasses(TSAppConfig.class, Resource.class, CookieResource.class, HeaderResource.class, MatrixResource.class, PathResource.class, QueryResource.class);
+    archive.addAsWebInfResource(new StringAsset(beansXml), "beans.xml");
     archive.setWebXML(new StringAsset(webXml));
     return archive;
   }
