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 2020/12/20 21:34:25 UTC

[cxf] branch master updated: CXF-8340: GraalVM native image fails to run. Added sample projects, minor changes

This is an automated email from the ASF dual-hosted git repository.

reta pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git


The following commit(s) were added to refs/heads/master by this push:
     new 17ae5b5  CXF-8340: GraalVM native image fails to run. Added sample projects, minor changes
17ae5b5 is described below

commit 17ae5b56dea7f1d460cf2ecd4db9dd89ab3a9acd
Author: reta <dr...@gmail.com>
AuthorDate: Sun Dec 20 16:33:53 2020 -0500

    CXF-8340: GraalVM native image fails to run. Added sample projects, minor changes
---
 .../cxf/common/spi/GeneratedClassClassLoader.java  |   2 +-
 .../spi/GeneratedClassClassLoaderCapture.java      |   2 +-
 .../common/spi/GeneratedNamespaceClassLoader.java  |   7 +-
 .../main/release/samples/jaxws_graalvm/README.txt  |  66 ++
 .../src/main/release/samples/jaxws_graalvm/pom.xml | 179 ++++
 .../src/graalvm/client/jni-config.json             |  22 +
 .../src/graalvm/client/proxy-config.json           |  15 +
 .../src/graalvm/client/reflect-config.json         | 761 +++++++++++++++++
 .../src/graalvm/client/resource-config.json        |  58 ++
 .../src/graalvm/server/jni-config.json             |  22 +
 .../src/graalvm/server/proxy-config.json           |  22 +
 .../src/graalvm/server/reflect-config.json         | 909 +++++++++++++++++++++
 .../src/graalvm/server/resource-config.json        |  56 ++
 .../src/main/java/demo/jaxws/client/Client.java    |  85 ++
 .../java/demo/jaxws/server/AddNumbersImpl.java     |  56 ++
 .../src/main/java/demo/jaxws/server/Server.java    |  50 ++
 .../jaxws_graalvm/native-image.properties          |   1 +
 .../src/main/resources/addNumbers.wsdl             |  83 ++
 .../samples/jaxws_graalvm_dynamic/README.txt       |  72 ++
 .../samples/jaxws_graalvm_dynamic/client/pom.xml   | 104 +++
 .../src/main/java/demo/jaxws/client/Client.java    | 101 +++
 .../main/java/demo/jaxws/client/ClientCapture.java |  51 ++
 .../jaxws/client/DumpingClassLoaderCapturer.java   |  60 ++
 .../main/java/org/apache/handlers/AddNumbers.java  |  43 +
 .../java/org/apache/handlers/AddNumbersFault.java  |  55 ++
 .../org/apache/handlers/types/FaultDetail.java     |  84 ++
 .../org/apache/handlers/types/package-info.java    |  21 +
 .../jaxws_graalvm_dynamic_client/jni-config.json   |  22 +
 .../native-image.properties                        |   1 +
 .../jaxws_graalvm_dynamic_client/proxy-config.json |  10 +
 .../reflect-config.json                            | 625 ++++++++++++++
 .../resource-config.json                           |  56 ++
 .../client/src/main/resources/addNumbers.wsdl      |  83 ++
 .../samples/jaxws_graalvm_dynamic/server/pom.xml   | 105 +++
 .../java/demo/jaxws/server/AddNumbersImpl.java     |  56 ++
 .../src/main/java/demo/jaxws/server/Server.java    |  50 ++
 .../jaxws_graalvm_dynamic_server/jni-config.json   |  22 +
 .../native-image.properties                        |   1 +
 .../jaxws_graalvm_dynamic_server/proxy-config.json |  22 +
 .../reflect-config.json                            | 909 +++++++++++++++++++++
 .../resource-config.json                           |  56 ++
 .../server/src/main/resources/addNumbers.wsdl      |  83 ++
 distribution/src/main/release/samples/pom.xml      |   3 +
 43 files changed, 5086 insertions(+), 5 deletions(-)

diff --git a/core/src/main/java/org/apache/cxf/common/spi/GeneratedClassClassLoader.java b/core/src/main/java/org/apache/cxf/common/spi/GeneratedClassClassLoader.java
index 452c5fe..320ee52 100644
--- a/core/src/main/java/org/apache/cxf/common/spi/GeneratedClassClassLoader.java
+++ b/core/src/main/java/org/apache/cxf/common/spi/GeneratedClassClassLoader.java
@@ -32,7 +32,7 @@ import org.apache.cxf.common.util.StringUtils;
  * @author olivier dufour
  */
 public class GeneratedClassClassLoader {
-    private static final Logger LOG = LogUtils.getL7dLogger(ClassLoaderProxyService.class);
+    private static final Logger LOG = LogUtils.getL7dLogger(GeneratedClassClassLoader.class);
     protected final Bus bus;
 
     public GeneratedClassClassLoader(Bus bus) {
diff --git a/core/src/main/java/org/apache/cxf/common/spi/GeneratedClassClassLoaderCapture.java b/core/src/main/java/org/apache/cxf/common/spi/GeneratedClassClassLoaderCapture.java
index 06f7044..00c6c05 100644
--- a/core/src/main/java/org/apache/cxf/common/spi/GeneratedClassClassLoaderCapture.java
+++ b/core/src/main/java/org/apache/cxf/common/spi/GeneratedClassClassLoaderCapture.java
@@ -26,7 +26,7 @@ package org.apache.cxf.common.spi;
  *  bus.setExtension(new WrapperHelperClassLoader(bus), WrapperHelperCreator.class);
  *  bus.setExtension(new ExtensionClassLoader(bus), ExtensionClassCreator.class);
  *  bus.setExtension(new ExceptionClassLoader(bus), ExceptionClassCreator.class);
- *  bus.setExtension(new WrapperHelperClassLoader(bus), WrapperClassCreator.class);
+ *  bus.setExtension(new WrapperClassLoader(bus), WrapperClassCreator.class);
  *  bus.setExtension(new FactoryClassLoader(bus), FactoryClassCreator.class);
  *  bus.setExtension(new GeneratedNamespaceClassLoader(bus), NamespaceClassCreator.class);
  * @author olivier dufour
diff --git a/core/src/main/java/org/apache/cxf/common/spi/GeneratedNamespaceClassLoader.java b/core/src/main/java/org/apache/cxf/common/spi/GeneratedNamespaceClassLoader.java
index 1f3bf89..affa7d5 100644
--- a/core/src/main/java/org/apache/cxf/common/spi/GeneratedNamespaceClassLoader.java
+++ b/core/src/main/java/org/apache/cxf/common/spi/GeneratedNamespaceClassLoader.java
@@ -30,9 +30,11 @@ import org.apache.cxf.Bus;
  * @author olivier dufour
  */
 public class GeneratedNamespaceClassLoader extends GeneratedClassClassLoader implements NamespaceClassCreator {
-    GeneratedNamespaceClassLoader(Bus bus) {
+    public GeneratedNamespaceClassLoader(Bus bus) {
         super(bus);
     }
+    
+    @Override
     public synchronized Class<?> createNamespaceWrapperClass(Class<?> mcls, Map<String, String> map) {
         String postFix = "";
 
@@ -44,8 +46,7 @@ public class GeneratedNamespaceClassLoader extends GeneratedClassClassLoader imp
         } else if (mcls.getName().contains("com.sun")) {
             postFix = "RI";
         }
-        return findClass("org.apache.cxf.jaxb.NamespaceMapper" + postFix, NamespaceClassCreator.class);
-
 
+        return findClass("org.apache.cxf.jaxb.NamespaceMapper" + postFix, NamespaceClassCreator.class);
     }
 }
diff --git a/distribution/src/main/release/samples/jaxws_graalvm/README.txt b/distribution/src/main/release/samples/jaxws_graalvm/README.txt
new file mode 100644
index 0000000..4614bd9
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm/README.txt
@@ -0,0 +1,66 @@
+JAX-WS GraalVM native-image Demo
+===================
+
+This demo shows how JAX-WS services and clients could use GraalVM's native-image 
+capabilities and be packaged as native executables.
+
+Pre-requisites
+---------------------------------------
+
+GraalVM 20.3.0 or later distribution should be installed and pre-configured as 
+default JVM runtime (using JAVA_HOME), see please instructions at [1].
+
+The GraalVM's native-image tool should be installed, see please 
+instructions at [2].
+
+Building and running the demo using Maven
+---------------------------------------
+
+From the base directory of this sample (i.e., where this README file is
+located), the pom.xml file is used to build and run the demo. 
+
+Using either UNIX or Windows:
+  
+  mvn clean
+
+Than build server:  
+  
+  mvn package -Pserver  (from one command line window)
+  
+This goal will produce 'target/jaxws-demo-server' executable (platform-dependent) 
+which could be run right away: 
+
+  On Windows: target\jaxws-demo-server.exe
+  On Linux: ./target/jaxws-demo-server
+
+Than build client:
+  
+  mvn package -Pclient  (from a second command line window)
+
+This goal will produce 'target/jaxws-demo-client' executable (platform-dependent) 
+which could be run right away: 
+
+  On Windows: target\jaxws-demo-client.exe src\main\resources\addNumbers.wsdl
+  On Linux: ./target/jaxws-demo-client src/main/resources/addNumbers.wsdl
+
+The command should produce the following output (assuming the server is up and running):
+
+  org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean buildServiceFromWSDL
+
+  INFO: Creating Service {http://apache.org/handlers}AddNumbersService from WSDL: client/src/main/resources/addNumbers.wsdl
+  Invoking addNumbers(10, 20)
+  The result of adding 10 and 20 is 30.
+
+  Invoking addNumbers(3, 5)
+  The result of adding 3 and 5 is 8.
+
+  Invoking addNumbers(-10, 5)
+  Caught AddNumbersFault: Negative number cant be added!
+
+To remove the code generated from the WSDL file and the .class
+files, run "mvn clean".
+
+References
+---------------------------------------
+[1] https://www.graalvm.org/downloads/
+[2] https://www.graalvm.org/reference-manual/native-image/ 
diff --git a/distribution/src/main/release/samples/jaxws_graalvm/pom.xml b/distribution/src/main/release/samples/jaxws_graalvm/pom.xml
new file mode 100644
index 0000000..d0c4fe7
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm/pom.xml
@@ -0,0 +1,179 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements. See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership. The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License. You may obtain a copy of the License at
+ 
+  http://www.apache.org/licenses/LICENSE-2.0
+ 
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied. See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<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/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>jaxws_graalvm</artifactId>
+    <name>JAX-WS GraalVM Demo</name>
+    <description>JAX-WS GraalVM Demo</description>
+    <parent>
+        <groupId>org.apache.cxf.samples</groupId>
+        <artifactId>cxf-samples</artifactId>
+        <version>3.5.0-SNAPSHOT</version>
+    </parent>
+    <properties>
+        <cxf.version>${project.version}</cxf.version>
+        <wsdl.file>${basedir}/src/main/resources/addNumbers.wsdl</wsdl.file>
+        <graalvm.version>20.3.0</graalvm.version>
+    </properties>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.cxf</groupId>
+                <artifactId>cxf-codegen-plugin</artifactId>
+                <version>${project.version}</version>
+                <executions>
+                    <execution>
+                        <id>generate-SOAPService1</id>
+                        <phase>generate-sources</phase>
+                        <configuration>
+                            <wsdlOptions>
+                                <wsdlOption>
+                                    <wsdl>${wsdl.file}</wsdl>
+                                </wsdlOption>
+                            </wsdlOptions>
+                        </configuration>
+                        <goals>
+                            <goal>wsdl2java</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+    <profiles>
+        <profile>
+            <id>server</id>
+            <dependencies>
+                <dependency>
+                    <groupId>org.apache.cxf</groupId>
+                    <artifactId>cxf-rt-transports-http-netty-server</artifactId>
+                </dependency>
+            </dependencies>
+            <build>
+                <plugins>
+                    <plugin>
+                        <artifactId>maven-resources-plugin</artifactId>
+                        <version>3.2.0</version>
+                        <executions>
+                            <execution>
+                                <id>copy-resources</id>
+                                <phase>generate-resources</phase>
+                                <goals>
+                                    <goal>copy-resources</goal>
+                                </goals>
+                                <configuration>
+                                    <outputDirectory>${project.build.outputDirectory}/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm</outputDirectory>
+                                    <resources>
+                                        <resource>
+                                            <directory>src/graalvm/server</directory>
+                                            <filtering>false</filtering>
+                                        </resource>
+                                    </resources>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.graalvm.nativeimage</groupId>
+                        <artifactId>native-image-maven-plugin</artifactId>
+                        <version>${graalvm.version}</version>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>native-image</goal>
+                                </goals>
+                                <phase>package</phase>
+                            </execution>
+                        </executions>
+                        <configuration>
+                            <mainClass>demo.jaxws.server.Server</mainClass>
+                            <imageName>jaxws-demo-server</imageName>
+                            <buildArgs>--no-fallback</buildArgs>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        <profile>
+            <id>client</id>
+            <dependencies>
+                <dependency>
+                    <groupId>org.apache.cxf</groupId>
+                    <artifactId>cxf-rt-transports-http-netty-client</artifactId>
+                </dependency>
+            </dependencies>
+            <build>
+                <plugins>
+                    <plugin>
+                        <artifactId>maven-resources-plugin</artifactId>
+                        <version>3.2.0</version>
+                        <executions>
+                            <execution>
+                                <id>copy-resources</id>
+                                <phase>generate-resources</phase>
+                                <goals>
+                                    <goal>copy-resources</goal>
+                                </goals>
+                                <configuration>
+                                    <outputDirectory>${project.build.outputDirectory}/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm</outputDirectory>
+                                    <resources>
+                                        <resource>
+                                            <directory>src/graalvm/client</directory>
+                                            <filtering>false</filtering>
+                                        </resource>
+                                    </resources>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.graalvm.nativeimage</groupId>
+                        <artifactId>native-image-maven-plugin</artifactId>
+                        <version>${graalvm.version}</version>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>native-image</goal>
+                                </goals>
+                                <phase>package</phase>
+                            </execution>
+                        </executions>
+                        <configuration>
+                            <mainClass>demo.jaxws.client.Client</mainClass>
+                            <imageName>jaxws-demo-client</imageName>
+                            <buildArgs>--no-fallback</buildArgs>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-frontend-jaxws</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-transports-http</artifactId>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/client/jni-config.json b/distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/client/jni-config.json
new file mode 100644
index 0000000..0218ccb
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/client/jni-config.json
@@ -0,0 +1,22 @@
+[
+{
+  "name":"java.lang.ClassLoader",
+  "methods":[{"name":"getPlatformClassLoader","parameterTypes":[] }]
+},
+{
+  "name":"java.lang.NoSuchMethodError"
+},
+{
+  "name":"sun.management.VMManagementImpl",
+  "fields":[
+    {"name":"compTimeMonitoringSupport"}, 
+    {"name":"currentThreadCpuTimeSupport"}, 
+    {"name":"objectMonitorUsageSupport"}, 
+    {"name":"otherThreadCpuTimeSupport"}, 
+    {"name":"remoteDiagnosticCommandsSupport"}, 
+    {"name":"synchronizerUsageSupport"}, 
+    {"name":"threadAllocatedMemorySupport"}, 
+    {"name":"threadContentionMonitoringSupport"}
+  ]
+}
+]
diff --git a/distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/client/proxy-config.json b/distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/client/proxy-config.json
new file mode 100644
index 0000000..fb9c728
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/client/proxy-config.json
@@ -0,0 +1,15 @@
+[
+  ["com.sun.xml.bind.marshaller.CharacterEscapeHandler"],
+  ["javax.xml.bind.annotation.XmlAccessorType","com.sun.xml.bind.v2.model.annotation.Locatable"],
+  ["javax.xml.bind.annotation.XmlRegistry","com.sun.xml.bind.v2.model.annotation.Locatable"],
+  ["org.apache.cxf.binding.soap.wsdl.extensions.SoapAddress"],
+  ["org.apache.cxf.binding.soap.wsdl.extensions.SoapBinding"],
+  ["org.apache.cxf.binding.soap.wsdl.extensions.SoapBody"],
+  ["org.apache.cxf.binding.soap.wsdl.extensions.SoapOperation"],
+  ["org.apache.cxf.common.jaxb.JAXBContextProxy"],
+  ["org.apache.cxf.common.util.ASMHelper$AnnotationVisitor"],
+  ["org.apache.cxf.common.util.ASMHelper$ClassWriter"],
+  ["org.apache.cxf.common.util.ASMHelper$FieldVisitor"],
+  ["org.apache.cxf.common.util.ASMHelper$MethodVisitor"],
+  ["org.apache.handlers.AddNumbers","javax.xml.ws.BindingProvider","java.io.Closeable","org.apache.cxf.endpoint.Client"]
+]
diff --git a/distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/client/reflect-config.json b/distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/client/reflect-config.json
new file mode 100644
index 0000000..bc0e5ee
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/client/reflect-config.json
@@ -0,0 +1,761 @@
+[
+{
+  "name":"char[]"
+},
+{
+  "name":"com.ibm.wsdl.extensions.schema.SchemaImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.extensions.soap.SOAPAddressImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.extensions.soap.SOAPBindingImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.extensions.soap.SOAPBodyImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.extensions.soap.SOAPFaultImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.extensions.soap.SOAPHeaderImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.extensions.soap.SOAPOperationImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.factory.WSDLFactoryImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.sun.xml.bind.marshaller.CharacterEscapeHandler",
+  "allPublicMethods":true
+},
+{
+  "name":"com.sun.xml.bind.marshaller.MinimumEscapeHandler",
+  "fields":[{"name":"theInstance"}]
+},
+{
+  "name":"com.sun.xml.bind.marshaller.NoEscapeHandler",
+  "fields":[{"name":"theInstance"}]
+},
+{
+  "name":"com.sun.xml.bind.v2.model.nav.ReflectionNavigator",
+  "methods":[{"name":"getInstance","parameterTypes":[] }]
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.JAXBContextImpl",
+  "methods":[{"name":"hasSwaRef","parameterTypes":[] }]
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.ArrayElementLeafProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.ArrayElementNodeProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.ArrayReferenceNodeProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.SingleElementLeafProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.SingleMapNodeProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.SingleReferenceNodeProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.unmarshaller.StAXExConnector",
+  "methods":[{"name":"<init>","parameterTypes":["org.jvnet.staxex.XMLStreamReaderEx","com.sun.xml.bind.v2.runtime.unmarshaller.XmlVisitor"] }]
+},
+{
+  "name":"com.sun.xml.messaging.saaj.soap.SOAPDocumentImpl",
+  "allPublicMethods":true
+},
+{
+  "name":"int",
+  "allDeclaredConstructors":true
+},
+{
+  "name":"io.netty.channel.socket.nio.NioSocketChannel",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueColdProducerFields",
+  "fields":[{"name":"producerLimit", "allowUnsafeAccess":true}]
+},
+{
+  "name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueConsumerFields",
+  "fields":[{"name":"consumerIndex", "allowUnsafeAccess":true}]
+},
+{
+  "name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueProducerFields",
+  "fields":[{"name":"producerIndex", "allowUnsafeAccess":true}]
+},
+{
+  "name":"java.io.Closeable",
+  "allPublicMethods":true
+},
+{
+  "name":"java.io.Writer"
+},
+{
+  "name":"java.lang.Class"
+},
+{
+  "name":"java.lang.Object",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true
+},
+{
+  "name":"java.lang.Object[]"
+},
+{
+  "name":"java.lang.String"
+},
+{
+  "name":"java.lang.invoke.MethodHandles",
+  "methods":[{"name":"lookup","parameterTypes":[] }]
+},
+{
+  "name":"java.lang.invoke.MethodHandles$Lookup",
+  "methods":[{"name":"findClass","parameterTypes":["java.lang.String"] }]
+},
+{
+  "name":"java.lang.management.ManagementFactory",
+  "methods":[{"name":"getRuntimeMXBean","parameterTypes":[] }]
+},
+{
+  "name":"java.lang.management.RuntimeMXBean",
+  "methods":[{"name":"getInputArguments","parameterTypes":[] }]
+},
+{
+  "name":"java.net.Authenticator",
+  "methods":[{"name":"getDefault","parameterTypes":[] }]
+},
+{
+  "name":"java.nio.Bits",
+  "fields":[{"name":"UNALIGNED"}]
+},
+{
+  "name":"java.nio.Buffer",
+  "fields":[{"name":"address", "allowUnsafeAccess":true}]
+},
+{
+  "name":"java.nio.DirectByteBuffer",
+  "methods":[{"name":"<init>","parameterTypes":["long","int"] }]
+},
+{
+  "name":"java.security.MessageDigestSpi"
+},
+{
+  "name":"java.security.SecureRandomParameters"
+},
+{
+  "name":"java.util.List"
+},
+{
+  "name":"java.util.Map"
+},
+{
+  "name":"java.util.concurrent.Executor"
+},
+{
+  "name":"javax.security.auth.login.Configuration"
+},
+{
+  "name":"javax.xml.bind.annotation.XmlAccessorType"
+},
+{
+  "name":"javax.xml.bind.annotation.XmlElement",
+  "methods":[{"name":"type","parameterTypes":[] }]
+},
+{
+  "name":"javax.xml.bind.annotation.XmlElementDecl",
+  "methods":[{"name":"scope","parameterTypes":[] }]
+},
+{
+  "name":"javax.xml.bind.annotation.XmlRegistry"
+},
+{
+  "name":"javax.xml.bind.annotation.XmlType",
+  "methods":[{"name":"factoryClass","parameterTypes":[] }]
+},
+{
+  "name":"javax.xml.namespace.QName"
+},
+{
+  "name":"javax.xml.ws.Binding"
+},
+{
+  "name":"javax.xml.ws.BindingProvider",
+  "allPublicMethods":true
+},
+{
+  "name":"javax.xml.ws.EndpointReference"
+},
+{
+  "name":"jdk.internal.misc.Unsafe",
+  "methods":[{"name":"getUnsafe","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.Bus"
+},
+{
+  "name":"org.apache.cxf.binding.AbstractBindingFactory",
+  "fields":[{"name":"bus"}]
+},
+{
+  "name":"org.apache.cxf.binding.soap.SoapBindingFactory",
+  "fields":[{"name":"DEFAULT_NAMESPACES"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.binding.soap.SoapTransportFactory",
+  "fields":[{"name":"DEFAULT_NAMESPACES"}],
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.binding.xml.XMLBindingFactory",
+  "fields":[{"name":"DEFAULT_NAMESPACES"}]
+},
+{
+  "name":"org.apache.cxf.binding.xml.wsdl11.XMLWSDLExtensionLoader",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.bindings.xformat.ObjectFactory",
+  "allDeclaredMethods":true
+},
+{
+  "name":"org.apache.cxf.bindings.xformat.XMLBindingMessageFormat",
+  "methods":[{"name":"getOtherAttributes","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.bindings.xformat.XMLFormatBinding",
+  "methods":[{"name":"getOtherAttributes","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.bus.managers.CXFBusLifeCycleManager",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.bus.managers.ClientLifeCycleManagerImpl",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.bus.managers.EndpointResolverRegistryImpl"
+},
+{
+  "name":"org.apache.cxf.bus.managers.HeaderManagerImpl"
+},
+{
+  "name":"org.apache.cxf.bus.managers.PhaseManagerImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.bus.managers.ServerLifeCycleManagerImpl"
+},
+{
+  "name":"org.apache.cxf.bus.managers.ServerRegistryImpl"
+},
+{
+  "name":"org.apache.cxf.bus.managers.WorkQueueManagerImpl"
+},
+{
+  "name":"org.apache.cxf.bus.resource.ResourceManagerImpl"
+},
+{
+  "name":"org.apache.cxf.buslifecycle.BusLifeCycleManager"
+},
+{
+  "name":"org.apache.cxf.catalog.OASISCatalogManager",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.common.spi.ClassLoaderProxyService"
+},
+{
+  "name":"org.apache.cxf.common.util.ASMHelper"
+},
+{
+  "name":"org.apache.cxf.common.util.ASMHelperImpl",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.common.util.ASMHelperImpl$2",
+  "methods":[
+    {"name":"getValue","parameterTypes":[] }, 
+    {"name":"realType","parameterTypes":[] }
+  ]
+},
+{
+  "name":"org.apache.cxf.common.util.OpcodesProxy",
+  "allDeclaredFields":true
+},
+{
+  "name":"org.apache.cxf.endpoint.Client",
+  "allPublicMethods":true
+},
+{
+  "name":"org.apache.cxf.endpoint.Client$Contexts"
+},
+{
+  "name":"org.apache.cxf.endpoint.ClientCallback"
+},
+{
+  "name":"org.apache.cxf.endpoint.ClientLifeCycleManager"
+},
+{
+  "name":"org.apache.cxf.endpoint.ConduitSelector"
+},
+{
+  "name":"org.apache.cxf.endpoint.Endpoint"
+},
+{
+  "name":"org.apache.cxf.endpoint.dynamic.ExceptionClassCreatorProxyService"
+},
+{
+  "name":"org.apache.cxf.ext.logging.LoggingBusLifecycleListener"
+},
+{
+  "name":"org.apache.cxf.ext.logging.LoggingFactoryBeanListener",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.ext.logging.OldLoggingFactoryBeanListener",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.jaxb.FactoryClassProxyService"
+},
+{
+  "name":"org.apache.cxf.jaxb.JAXBDataBinding",
+  "methods":[{"name":"<init>","parameterTypes":["boolean","java.util.Map"] }]
+},
+{
+  "name":"org.apache.cxf.jaxb.WrapperHelperCreator"
+},
+{
+  "name":"org.apache.cxf.jaxb.WrapperHelperProxyService",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.jaxws.context.WebServiceContextResourceResolver",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.jaxws.spi.WrapperClassCreator"
+},
+{
+  "name":"org.apache.cxf.jaxws.spi.WrapperClassCreatorProxyService",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.message.Exchange"
+},
+{
+  "name":"org.apache.cxf.message.Message"
+},
+{
+  "name":"org.apache.cxf.phase.PhaseManager"
+},
+{
+  "name":"org.apache.cxf.policy.PolicyDataEngine"
+},
+{
+  "name":"org.apache.cxf.service.factory.FactoryBeanListenerManager",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.service.model.BindingOperationInfo"
+},
+{
+  "name":"org.apache.cxf.transport.Conduit"
+},
+{
+  "name":"org.apache.cxf.transport.http.HTTPTransportFactory",
+  "fields":[{"name":"DEFAULT_NAMESPACES"}],
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.transport.http.HTTPWSDLExtensionLoader",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.transport.http.ReferencingAuthenticator",
+  "methods":[{"name":"<init>","parameterTypes":["java.net.Authenticator","java.net.Authenticator"] }]
+},
+{
+  "name":"org.apache.cxf.transport.http.netty.client.NettyHttpConduitFactory",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder"
+},
+{
+  "name":"org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder"
+},
+{
+  "name":"org.apache.cxf.transport.http.policy.NoOpPolicyInterceptorProvider"
+},
+{
+  "name":"org.apache.cxf.transports.http.configuration.HTTPClientPolicy",
+  "methods":[{"name":"getOtherAttributes","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.transports.http.configuration.HTTPServerPolicy",
+  "methods":[{"name":"getOtherAttributes","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.transports.http.configuration.ObjectFactory",
+  "allDeclaredMethods":true
+},
+{
+  "name":"org.apache.cxf.ws.addressing.impl.AddressingFeatureApplier"
+},
+{
+  "name":"org.apache.cxf.ws.addressing.impl.AddressingWSDLExtensionLoader",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.addressing.impl.MAPAggregatorImplLoader"
+},
+{
+  "name":"org.apache.cxf.ws.addressing.policy.AddressingAssertionBuilder"
+},
+{
+  "name":"org.apache.cxf.ws.addressing.policy.AddressingPolicyInterceptorProvider"
+},
+{
+  "name":"org.apache.cxf.ws.addressing.policy.UsingAddressingAssertionBuilder"
+},
+{
+  "name":"org.apache.cxf.ws.addressing.wsdl.ObjectFactory",
+  "allDeclaredMethods":true
+},
+{
+  "name":"org.apache.cxf.ws.addressing.wsdl.UsingAddressing",
+  "methods":[{"name":"getOtherAttributes","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.AssertionBuilderRegistry"
+},
+{
+  "name":"org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyAnnotationListener",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyBuilder"
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyBuilderImpl",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyDataEngineImpl",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyEngine"
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyEngineImpl",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyInterceptorProviderRegistry"
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyInterceptorProviderRegistryImpl",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.attachment.ServiceModelPolicyProvider",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.attachment.external.DomainExpressionBuilderRegistry"
+},
+{
+  "name":"org.apache.cxf.ws.policy.attachment.external.EndpointReferenceDomainExpressionBuilder"
+},
+{
+  "name":"org.apache.cxf.ws.policy.attachment.external.URIDomainExpressionBuilder"
+},
+{
+  "name":"org.apache.cxf.ws.policy.attachment.wsdl11.Wsdl11AttachmentPolicyProvider",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.mtom.MTOMAssertionBuilder"
+},
+{
+  "name":"org.apache.cxf.ws.policy.mtom.MTOMPolicyInterceptorProvider"
+},
+{
+  "name":"org.apache.cxf.wsdl.ExtensionClassCreator"
+},
+{
+  "name":"org.apache.cxf.wsdl.ExtensionClassCreatorProxyService",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.wsdl.WSDLManager"
+},
+{
+  "name":"org.apache.cxf.wsdl.http.AddressType",
+  "methods":[{"name":"getOtherAttributes","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.wsdl.http.ObjectFactory",
+  "allDeclaredMethods":true
+},
+{
+  "name":"org.apache.cxf.wsdl11.WSDLManagerImpl",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.handlers.AddNumbers",
+  "allPublicMethods":true
+},
+{
+  "name":"org.apache.handlers.AddNumbersFault",
+  "allPublicConstructors":true,
+  "methods":[{"name":"getFaultInfo","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.handlers.types.AddNumbers",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.handlers.types.AddNumbersResponse",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.handlers.types.FaultDetail",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.handlers.types.ObjectFactory",
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.xml.resolver.CatalogManager"
+},
+{
+  "name":"org.jvnet.staxex.XMLStreamReaderEx"
+},
+{
+  "name":"org.objectweb.asm.AnnotationWriter",
+  "methods":[{"name":"visitEnd","parameterTypes":[] }]
+},
+{
+  "name":"org.objectweb.asm.ClassWriter",
+  "fields":[
+    {"name":"COMPUTE_FRAMES"}, 
+    {"name":"COMPUTE_MAXS"}
+  ],
+  "methods":[
+    {"name":"<init>","parameterTypes":["int"] }, 
+    {"name":"toByteArray","parameterTypes":[] }, 
+    {"name":"visit","parameterTypes":["int","int","java.lang.String","java.lang.String","java.lang.String","java.lang.String[]"] }, 
+    {"name":"visitEnd","parameterTypes":[] }, 
+    {"name":"visitField","parameterTypes":["int","java.lang.String","java.lang.String","java.lang.String","java.lang.Object"] }, 
+    {"name":"visitMethod","parameterTypes":["int","java.lang.String","java.lang.String","java.lang.String","java.lang.String[]"] }, 
+    {"name":"visitSource","parameterTypes":["java.lang.String","java.lang.String"] }
+  ]
+},
+{
+  "name":"org.objectweb.asm.FieldWriter",
+  "methods":[{"name":"visitEnd","parameterTypes":[] }]
+},
+{
+  "name":"org.objectweb.asm.Label",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.objectweb.asm.MethodVisitor",
+  "methods":[{"name":"visitFrame","parameterTypes":["int","int","java.lang.Object[]","int","java.lang.Object[]"] }]
+},
+{
+  "name":"org.objectweb.asm.MethodWriter",
+  "allPublicMethods":true
+},
+{
+  "name":"org.objectweb.asm.Opcodes",
+  "fields":[
+    {"name":"AALOAD"}, 
+    {"name":"ACC_ABSTRACT"}, 
+    {"name":"ACC_FINAL"}, 
+    {"name":"ACC_INTERFACE"}, 
+    {"name":"ACC_PRIVATE"}, 
+    {"name":"ACC_PUBLIC"}, 
+    {"name":"ACC_STATIC"}, 
+    {"name":"ACC_SUPER"}, 
+    {"name":"ACC_SYNTHETIC"}, 
+    {"name":"ACONST_NULL"}, 
+    {"name":"ALOAD"}, 
+    {"name":"ANEWARRAY"}, 
+    {"name":"ARETURN"}, 
+    {"name":"ARRAYLENGTH"}, 
+    {"name":"ASTORE"}, 
+    {"name":"ATHROW"}, 
+    {"name":"CHECKCAST"}, 
+    {"name":"DCONST_0"}, 
+    {"name":"DUP"}, 
+    {"name":"FCONST_0"}, 
+    {"name":"F_APPEND"}, 
+    {"name":"F_SAME"}, 
+    {"name":"F_SAME1"}, 
+    {"name":"GETFIELD"}, 
+    {"name":"GETSTATIC"}, 
+    {"name":"GOTO"}, 
+    {"name":"ICONST_0"}, 
+    {"name":"ICONST_1"}, 
+    {"name":"IFNONNULL"}, 
+    {"name":"IFNULL"}, 
+    {"name":"IF_ICMPLT"}, 
+    {"name":"ILOAD"}, 
+    {"name":"INTEGER"}, 
+    {"name":"INVOKEINTERFACE"}, 
+    {"name":"INVOKESPECIAL"}, 
+    {"name":"INVOKESTATIC"}, 
+    {"name":"INVOKEVIRTUAL"}, 
+    {"name":"IRETURN"}, 
+    {"name":"ISTORE"}, 
+    {"name":"LCONST_0"}, 
+    {"name":"NEW"}, 
+    {"name":"POP"}, 
+    {"name":"PUTFIELD"}, 
+    {"name":"PUTSTATIC"}, 
+    {"name":"RETURN"}, 
+    {"name":"SIPUSH"}, 
+    {"name":"V1_5"}, 
+    {"name":"V1_6"}, 
+    {"name":"V1_7"}
+  ]
+},
+{
+  "name":"org.slf4j.LoggerFactory",
+  "methods":[{"name":"getILoggerFactory","parameterTypes":[] }]
+},
+{
+  "name":"org.slf4j.impl.StaticLoggerBinder"
+},
+{
+  "name":"org.w3c.dom.Node",
+  "methods":[
+    {"name":"getUserData","parameterTypes":["java.lang.String"] }, 
+    {"name":"setUserData","parameterTypes":["java.lang.String","java.lang.Object","org.w3c.dom.UserDataHandler"] }
+  ]
+},
+{
+  "name":"org.w3c.dom.UserDataHandler"
+},
+{
+  "name":"sun.misc.Unsafe",
+  "fields":[{"name":"theUnsafe"}],
+  "methods":[
+    {"name":"copyMemory","parameterTypes":["java.lang.Object","long","java.lang.Object","long","long"] }, 
+    {"name":"getAndAddLong","parameterTypes":["java.lang.Object","long","long"] }, 
+    {"name":"getAndSetObject","parameterTypes":["java.lang.Object","long","java.lang.Object"] }, 
+    {"name":"invokeCleaner","parameterTypes":["java.nio.ByteBuffer"] }
+  ]
+},
+{
+  "name":"sun.nio.ch.SelectorImpl",
+  "fields":[
+    {"name":"publicSelectedKeys", "allowUnsafeAccess":true}, 
+    {"name":"selectedKeys", "allowUnsafeAccess":true}
+  ]
+},
+{
+  "name":"sun.security.provider.DRBG",
+  "methods":[{"name":"<init>","parameterTypes":["java.security.SecureRandomParameters"] }]
+},
+{
+  "name":"sun.security.provider.SHA",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"sun.security.provider.SHA2$SHA256",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+}
+]
diff --git a/distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/client/resource-config.json b/distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/client/resource-config.json
new file mode 100644
index 0000000..3a80131
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/client/resource-config.json
@@ -0,0 +1,58 @@
+{
+  "resources":{
+  "includes":[
+    {"pattern":"\\QMETA-INF/cxf/bus-extensions.txt\\E"}, 
+    {"pattern":"\\QMETA-INF/io.netty.versions.properties\\E"}, 
+    {"pattern":"\\QMETA-INF/mailcap.default\\E"}, 
+    {"pattern":"\\QMETA-INF/services/javax.xml.bind.JAXBContextFactory\\E"}, 
+    {"pattern":"\\QMETA-INF/services/javax.xml.stream.XMLEventFactory\\E"}, 
+    {"pattern":"\\QMETA-INF/services/javax.xml.stream.XMLInputFactory\\E"}, 
+    {"pattern":"\\QMETA-INF/services/javax.xml.stream.XMLOutputFactory\\E"}, 
+    {"pattern":"\\QMETA-INF/services/javax.xml.ws.spi.Provider\\E"}, 
+    {"pattern":"\\Qorg/apache/cxf/transport/http/ReferencingAuthenticator.class\\E"}, 
+    {"pattern":"\\Qorg/apache/cxf/version/version.properties\\E"}, 
+    {"pattern":"\\Qorg/apache/xml/resolver/etc/catalog.dtd\\E"}, 
+    {"pattern":"\\Qorg/apache/xml/resolver/etc/catalog.rng\\E"}, 
+    {"pattern":"\\Qorg/apache/xml/resolver/etc/catalog.xsd\\E"}, 
+    {"pattern":"\\Qorg/apache/xml/resolver/etc/xcatalog.dtd\\E"}, 
+    {"pattern":"\\Qorg/slf4j/impl/StaticLoggerBinder.class\\E"}, 
+    {"pattern":"\\Qschemas/wsdl/ws-addr-wsdl.xsd\\E"}, 
+    {"pattern":"\\Qschemas/wsdl/ws-addr.xsd\\E"}, 
+    {"pattern":"\\Qschemas/wsdl/wsrm.xsd\\E"}
+  ]},
+  "bundles":[
+    {"name":"org.apache.cxf.Messages"}, 
+    {"name":"org.apache.cxf.binding.soap.interceptor.Messages"}, 
+    {"name":"org.apache.cxf.binding.soap.saaj.Messages"}, 
+    {"name":"org.apache.cxf.bus.extension.Messages"}, 
+    {"name":"org.apache.cxf.bus.managers.Messages"}, 
+    {"name":"org.apache.cxf.common.annotation.Messages"}, 
+    {"name":"org.apache.cxf.common.injection.Messages"}, 
+    {"name":"org.apache.cxf.common.jaxb.Messages"}, 
+    {"name":"org.apache.cxf.common.util.Messages"}, 
+    {"name":"org.apache.cxf.endpoint.Messages"}, 
+    {"name":"org.apache.cxf.frontend.Messages"}, 
+    {"name":"org.apache.cxf.interceptor.Messages"}, 
+    {"name":"org.apache.cxf.jaxb.Messages"}, 
+    {"name":"org.apache.cxf.jaxb.attachment.Messages"}, 
+    {"name":"org.apache.cxf.jaxws.Messages"}, 
+    {"name":"org.apache.cxf.jaxws.binding.soap.Messages"}, 
+    {"name":"org.apache.cxf.jaxws.handler.Messages"}, 
+    {"name":"org.apache.cxf.jaxws.interceptors.Messages"}, 
+    {"name":"org.apache.cxf.jaxws.spi.Messages"}, 
+    {"name":"org.apache.cxf.jaxws.support.Messages"}, 
+    {"name":"org.apache.cxf.resource.Messages"}, 
+    {"name":"org.apache.cxf.service.factory.Messages"}, 
+    {"name":"org.apache.cxf.service.model.Messages"}, 
+    {"name":"org.apache.cxf.staxutils.Messages"}, 
+    {"name":"org.apache.cxf.transport.http.Messages"}, 
+    {"name":"org.apache.cxf.transport.https.Messages"}, 
+    {"name":"org.apache.cxf.ws.policy.APIMessages"}, 
+    {"name":"org.apache.cxf.ws.policy.Messages"}, 
+    {"name":"org.apache.cxf.ws.policy.attachment.Messages"}, 
+    {"name":"org.apache.cxf.wsdl.Messages"}, 
+    {"name":"org.apache.cxf.wsdl.interceptors.Messages"}, 
+    {"name":"org.apache.cxf.wsdl.service.factory.Messages"}, 
+    {"name":"org.apache.cxf.wsdl11.Messages"}
+  ]
+}
diff --git a/distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/server/jni-config.json b/distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/server/jni-config.json
new file mode 100644
index 0000000..0218ccb
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/server/jni-config.json
@@ -0,0 +1,22 @@
+[
+{
+  "name":"java.lang.ClassLoader",
+  "methods":[{"name":"getPlatformClassLoader","parameterTypes":[] }]
+},
+{
+  "name":"java.lang.NoSuchMethodError"
+},
+{
+  "name":"sun.management.VMManagementImpl",
+  "fields":[
+    {"name":"compTimeMonitoringSupport"}, 
+    {"name":"currentThreadCpuTimeSupport"}, 
+    {"name":"objectMonitorUsageSupport"}, 
+    {"name":"otherThreadCpuTimeSupport"}, 
+    {"name":"remoteDiagnosticCommandsSupport"}, 
+    {"name":"synchronizerUsageSupport"}, 
+    {"name":"threadAllocatedMemorySupport"}, 
+    {"name":"threadContentionMonitoringSupport"}
+  ]
+}
+]
diff --git a/distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/server/proxy-config.json b/distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/server/proxy-config.json
new file mode 100644
index 0000000..9e5ed4d
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/server/proxy-config.json
@@ -0,0 +1,22 @@
+[
+  ["com.sun.xml.bind.marshaller.CharacterEscapeHandler"],
+  ["com.sun.xml.bind.v2.schemagen.xmlschema.ComplexType"],
+  ["com.sun.xml.bind.v2.schemagen.xmlschema.ContentModelContainer"],
+  ["com.sun.xml.bind.v2.schemagen.xmlschema.LocalElement"],
+  ["com.sun.xml.bind.v2.schemagen.xmlschema.Particle"],
+  ["com.sun.xml.bind.v2.schemagen.xmlschema.Schema"],
+  ["com.sun.xml.bind.v2.schemagen.xmlschema.TopLevelElement"],
+  ["javax.xml.bind.annotation.XmlAccessorType","com.sun.xml.bind.v2.model.annotation.Locatable"],
+  ["javax.xml.bind.annotation.XmlRegistry","com.sun.xml.bind.v2.model.annotation.Locatable"],
+  ["org.apache.cxf.binding.soap.wsdl.extensions.SoapAddress"],
+  ["org.apache.cxf.binding.soap.wsdl.extensions.SoapBinding"],
+  ["org.apache.cxf.binding.soap.wsdl.extensions.SoapBody"],
+  ["org.apache.cxf.binding.soap.wsdl.extensions.SoapFault"],
+  ["org.apache.cxf.binding.soap.wsdl.extensions.SoapOperation"],
+  ["org.apache.cxf.common.jaxb.JAXBBeanInfo"],
+  ["org.apache.cxf.common.jaxb.JAXBContextProxy"],
+  ["org.apache.cxf.common.util.ASMHelper$AnnotationVisitor"],
+  ["org.apache.cxf.common.util.ASMHelper$ClassWriter"],
+  ["org.apache.cxf.common.util.ASMHelper$FieldVisitor"],
+  ["org.apache.cxf.common.util.ASMHelper$MethodVisitor"]
+]
diff --git a/distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/server/reflect-config.json b/distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/server/reflect-config.json
new file mode 100644
index 0000000..e4a5a9e
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/server/reflect-config.json
@@ -0,0 +1,909 @@
+[
+{
+  "name":"char[]"
+},
+{
+  "name":"com.ibm.wsdl.extensions.soap.SOAPAddressImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.extensions.soap.SOAPBindingImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.extensions.soap.SOAPBodyImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.extensions.soap.SOAPFaultImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.extensions.soap.SOAPHeaderImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.extensions.soap.SOAPOperationImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.factory.WSDLFactoryImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.sun.xml.bind.marshaller.CharacterEscapeHandler",
+  "allPublicMethods":true
+},
+{
+  "name":"com.sun.xml.bind.marshaller.MinimumEscapeHandler",
+  "fields":[{"name":"theInstance"}]
+},
+{
+  "name":"com.sun.xml.bind.marshaller.NoEscapeHandler",
+  "fields":[{"name":"theInstance"}]
+},
+{
+  "name":"com.sun.xml.bind.v2.model.nav.ReflectionNavigator",
+  "methods":[{"name":"getInstance","parameterTypes":[] }]
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.JAXBContextImpl",
+  "methods":[
+    {"name":"getBeanInfo","parameterTypes":["java.lang.Class"] }, 
+    {"name":"hasSwaRef","parameterTypes":[] }
+  ]
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.JaxBeanInfo",
+  "methods":[
+    {"name":"getTypeNames","parameterTypes":[] }, 
+    {"name":"isElement","parameterTypes":[] }
+  ]
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.LeafBeanInfoImpl"
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.output.StAXExStreamWriterOutput",
+  "methods":[{"name":"<init>","parameterTypes":["org.jvnet.staxex.XMLStreamWriterEx"] }]
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.ArrayElementLeafProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.ArrayElementNodeProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.ArrayReferenceNodeProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.SingleElementLeafProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.SingleMapNodeProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.SingleReferenceNodeProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.unmarshaller.StAXExConnector",
+  "methods":[{"name":"<init>","parameterTypes":["org.jvnet.staxex.XMLStreamReaderEx","com.sun.xml.bind.v2.runtime.unmarshaller.XmlVisitor"] }]
+},
+{
+  "name":"com.sun.xml.messaging.saaj.soap.SOAPDocumentImpl",
+  "allPublicMethods":true
+},
+{
+  "name":"demo.jaxws.server.AddNumbersImpl",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true
+},
+{
+  "name":"int",
+  "allDeclaredConstructors":true
+},
+{
+  "name":"io.netty.bootstrap.ServerBootstrap$1"
+},
+{
+  "name":"io.netty.bootstrap.ServerBootstrap$ServerBootstrapAcceptor",
+  "methods":[
+    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
+    {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }
+  ]
+},
+{
+  "name":"io.netty.buffer.AbstractByteBufAllocator",
+  "allDeclaredMethods":true
+},
+{
+  "name":"io.netty.buffer.AbstractReferenceCountedByteBuf",
+  "fields":[{"name":"refCnt", "allowUnsafeAccess":true}]
+},
+{
+  "name":"io.netty.channel.ChannelDuplexHandler",
+  "methods":[
+    {"name":"bind","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, 
+    {"name":"close","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
+    {"name":"connect","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, 
+    {"name":"deregister","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
+    {"name":"disconnect","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
+    {"name":"flush","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"read","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }
+  ]
+},
+{
+  "name":"io.netty.channel.ChannelHandlerAdapter",
+  "methods":[{"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }]
+},
+{
+  "name":"io.netty.channel.ChannelInboundHandlerAdapter",
+  "methods":[
+    {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
+    {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelUnregistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelWritabilityChanged","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }, 
+    {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }
+  ]
+},
+{
+  "name":"io.netty.channel.ChannelInitializer",
+  "methods":[
+    {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }
+  ]
+},
+{
+  "name":"io.netty.channel.ChannelOutboundHandlerAdapter",
+  "methods":[
+    {"name":"bind","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, 
+    {"name":"close","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
+    {"name":"connect","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, 
+    {"name":"deregister","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
+    {"name":"disconnect","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
+    {"name":"flush","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"read","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }
+  ]
+},
+{
+  "name":"io.netty.channel.DefaultChannelPipeline$HeadContext",
+  "methods":[
+    {"name":"bind","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, 
+    {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
+    {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelUnregistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelWritabilityChanged","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"close","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
+    {"name":"connect","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, 
+    {"name":"deregister","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
+    {"name":"disconnect","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
+    {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }, 
+    {"name":"flush","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"read","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
+    {"name":"write","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object","io.netty.channel.ChannelPromise"] }
+  ]
+},
+{
+  "name":"io.netty.channel.DefaultChannelPipeline$TailContext",
+  "methods":[
+    {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
+    {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelUnregistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelWritabilityChanged","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }, 
+    {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }
+  ]
+},
+{
+  "name":"io.netty.channel.socket.nio.NioServerSocketChannel",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"io.netty.handler.codec.ByteToMessageDecoder",
+  "methods":[
+    {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
+    {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }
+  ]
+},
+{
+  "name":"io.netty.handler.codec.MessageAggregator",
+  "methods":[
+    {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }
+  ]
+},
+{
+  "name":"io.netty.handler.codec.MessageToMessageCodec",
+  "methods":[
+    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
+    {"name":"write","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object","io.netty.channel.ChannelPromise"] }
+  ]
+},
+{
+  "name":"io.netty.handler.codec.MessageToMessageDecoder",
+  "methods":[{"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }]
+},
+{
+  "name":"io.netty.handler.codec.MessageToMessageEncoder",
+  "methods":[{"name":"write","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object","io.netty.channel.ChannelPromise"] }]
+},
+{
+  "name":"io.netty.handler.codec.http.HttpContentCompressor"
+},
+{
+  "name":"io.netty.handler.codec.http.HttpContentEncoder",
+  "methods":[{"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }]
+},
+{
+  "name":"io.netty.handler.codec.http.HttpObjectAggregator"
+},
+{
+  "name":"io.netty.handler.codec.http.HttpObjectDecoder",
+  "methods":[{"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }]
+},
+{
+  "name":"io.netty.handler.codec.http.HttpRequestDecoder"
+},
+{
+  "name":"io.netty.handler.codec.http.HttpResponseEncoder"
+},
+{
+  "name":"io.netty.handler.timeout.IdleStateHandler",
+  "methods":[
+    {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
+    {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"write","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object","io.netty.channel.ChannelPromise"] }
+  ]
+},
+{
+  "name":"io.netty.util.ReferenceCountUtil",
+  "allDeclaredMethods":true
+},
+{
+  "name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueColdProducerFields",
+  "fields":[{"name":"producerLimit", "allowUnsafeAccess":true}]
+},
+{
+  "name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueConsumerFields",
+  "fields":[{"name":"consumerIndex", "allowUnsafeAccess":true}]
+},
+{
+  "name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueProducerFields",
+  "fields":[{"name":"producerIndex", "allowUnsafeAccess":true}]
+},
+{
+  "name":"io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueConsumerIndexField",
+  "fields":[{"name":"consumerIndex", "allowUnsafeAccess":true}]
+},
+{
+  "name":"io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerIndexField",
+  "fields":[{"name":"producerIndex", "allowUnsafeAccess":true}]
+},
+{
+  "name":"io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerLimitField",
+  "fields":[{"name":"producerLimit", "allowUnsafeAccess":true}]
+},
+{
+  "name":"java.io.Writer"
+},
+{
+  "name":"java.lang.Object",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true
+},
+{
+  "name":"java.lang.management.ManagementFactory",
+  "methods":[{"name":"getRuntimeMXBean","parameterTypes":[] }]
+},
+{
+  "name":"java.lang.management.RuntimeMXBean",
+  "methods":[
+    {"name":"getInputArguments","parameterTypes":[] }, 
+    {"name":"getName","parameterTypes":[] }
+  ]
+},
+{
+  "name":"java.nio.Bits",
+  "fields":[{"name":"UNALIGNED"}]
+},
+{
+  "name":"java.nio.Buffer",
+  "fields":[{"name":"address", "allowUnsafeAccess":true}]
+},
+{
+  "name":"java.nio.DirectByteBuffer",
+  "methods":[{"name":"<init>","parameterTypes":["long","int"] }]
+},
+{
+  "name":"java.security.MessageDigestSpi"
+},
+{
+  "name":"java.security.SecureRandomParameters"
+},
+{
+  "name":"javax.security.auth.login.Configuration"
+},
+{
+  "name":"javax.xml.bind.annotation.XmlAccessorType"
+},
+{
+  "name":"javax.xml.bind.annotation.XmlElement",
+  "methods":[{"name":"type","parameterTypes":[] }]
+},
+{
+  "name":"javax.xml.bind.annotation.XmlElementDecl",
+  "methods":[{"name":"scope","parameterTypes":[] }]
+},
+{
+  "name":"javax.xml.bind.annotation.XmlRegistry"
+},
+{
+  "name":"javax.xml.bind.annotation.XmlType",
+  "methods":[{"name":"factoryClass","parameterTypes":[] }]
+},
+{
+  "name":"javax.xml.ws.RequestWrapper",
+  "methods":[{"name":"partName","parameterTypes":[] }]
+},
+{
+  "name":"javax.xml.ws.ResponseWrapper",
+  "methods":[{"name":"partName","parameterTypes":[] }]
+},
+{
+  "name":"javax.xml.ws.WebFault",
+  "methods":[{"name":"messageName","parameterTypes":[] }]
+},
+{
+  "name":"jdk.internal.misc.Unsafe",
+  "methods":[{"name":"getUnsafe","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.binding.AbstractBindingFactory",
+  "fields":[{"name":"bus"}]
+},
+{
+  "name":"org.apache.cxf.binding.soap.SoapBindingFactory",
+  "fields":[{"name":"DEFAULT_NAMESPACES"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.binding.soap.SoapTransportFactory",
+  "fields":[{"name":"DEFAULT_NAMESPACES"}],
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.binding.xml.XMLBindingFactory",
+  "fields":[{"name":"DEFAULT_NAMESPACES"}]
+},
+{
+  "name":"org.apache.cxf.binding.xml.wsdl11.XMLWSDLExtensionLoader",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.bindings.xformat.ObjectFactory",
+  "allDeclaredMethods":true
+},
+{
+  "name":"org.apache.cxf.bindings.xformat.XMLBindingMessageFormat",
+  "methods":[{"name":"getOtherAttributes","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.bindings.xformat.XMLFormatBinding",
+  "methods":[{"name":"getOtherAttributes","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.bus.managers.CXFBusLifeCycleManager",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.bus.managers.ClientLifeCycleManagerImpl"
+},
+{
+  "name":"org.apache.cxf.bus.managers.EndpointResolverRegistryImpl"
+},
+{
+  "name":"org.apache.cxf.bus.managers.HeaderManagerImpl"
+},
+{
+  "name":"org.apache.cxf.bus.managers.PhaseManagerImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.bus.managers.ServerLifeCycleManagerImpl",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.bus.managers.ServerRegistryImpl",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.bus.managers.WorkQueueManagerImpl"
+},
+{
+  "name":"org.apache.cxf.bus.resource.ResourceManagerImpl"
+},
+{
+  "name":"org.apache.cxf.buslifecycle.BusLifeCycleManager"
+},
+{
+  "name":"org.apache.cxf.catalog.OASISCatalogManager"
+},
+{
+  "name":"org.apache.cxf.common.spi.ClassLoaderProxyService"
+},
+{
+  "name":"org.apache.cxf.common.util.ASMHelper"
+},
+{
+  "name":"org.apache.cxf.common.util.ASMHelperImpl",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.common.util.ASMHelperImpl$2",
+  "methods":[
+    {"name":"getValue","parameterTypes":[] }, 
+    {"name":"realType","parameterTypes":[] }
+  ]
+},
+{
+  "name":"org.apache.cxf.common.util.OpcodesProxy",
+  "allDeclaredFields":true
+},
+{
+  "name":"org.apache.cxf.endpoint.ServerLifeCycleManager"
+},
+{
+  "name":"org.apache.cxf.endpoint.ServerRegistry"
+},
+{
+  "name":"org.apache.cxf.endpoint.dynamic.ExceptionClassCreatorProxyService"
+},
+{
+  "name":"org.apache.cxf.ext.logging.LoggingBusLifecycleListener"
+},
+{
+  "name":"org.apache.cxf.ext.logging.LoggingFactoryBeanListener",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.ext.logging.OldLoggingFactoryBeanListener",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.jaxb.FactoryClassProxyService"
+},
+{
+  "name":"org.apache.cxf.jaxb.JAXBDataBinding",
+  "methods":[{"name":"<init>","parameterTypes":["boolean","java.util.Map"] }]
+},
+{
+  "name":"org.apache.cxf.jaxb.WrapperHelperCreator"
+},
+{
+  "name":"org.apache.cxf.jaxb.WrapperHelperProxyService",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.jaxws.context.WebServiceContextResourceResolver",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.jaxws.spi.WrapperClassCreator"
+},
+{
+  "name":"org.apache.cxf.jaxws.spi.WrapperClassCreatorProxyService",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.phase.PhaseManager"
+},
+{
+  "name":"org.apache.cxf.policy.PolicyDataEngine"
+},
+{
+  "name":"org.apache.cxf.service.factory.FactoryBeanListenerManager",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.transport.http.HTTPTransportFactory",
+  "fields":[{"name":"DEFAULT_NAMESPACES"}],
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.transport.http.HTTPWSDLExtensionLoader",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.transport.http.netty.server.NettyHttpDestinationFactory",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.transport.http.netty.server.NettyHttpServerEngineFactory",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.transport.http.netty.server.NettyHttpServletHandler",
+  "methods":[
+    {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
+    {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }, 
+    {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }
+  ]
+},
+{
+  "name":"org.apache.cxf.transport.http.netty.server.NettyHttpServletPipelineFactory"
+},
+{
+  "name":"org.apache.cxf.transport.http.netty.server.NettyHttpTransportFactory"
+},
+{
+  "name":"org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder"
+},
+{
+  "name":"org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder"
+},
+{
+  "name":"org.apache.cxf.transport.http.policy.NoOpPolicyInterceptorProvider"
+},
+{
+  "name":"org.apache.cxf.transports.http.configuration.HTTPClientPolicy",
+  "methods":[{"name":"getOtherAttributes","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.transports.http.configuration.HTTPServerPolicy",
+  "methods":[{"name":"getOtherAttributes","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.transports.http.configuration.ObjectFactory",
+  "allDeclaredMethods":true
+},
+{
+  "name":"org.apache.cxf.ws.addressing.impl.AddressingFeatureApplier"
+},
+{
+  "name":"org.apache.cxf.ws.addressing.impl.AddressingWSDLExtensionLoader",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.addressing.impl.MAPAggregatorImplLoader"
+},
+{
+  "name":"org.apache.cxf.ws.addressing.policy.AddressingAssertionBuilder"
+},
+{
+  "name":"org.apache.cxf.ws.addressing.policy.AddressingPolicyInterceptorProvider"
+},
+{
+  "name":"org.apache.cxf.ws.addressing.policy.UsingAddressingAssertionBuilder"
+},
+{
+  "name":"org.apache.cxf.ws.addressing.wsdl.ObjectFactory",
+  "allDeclaredMethods":true
+},
+{
+  "name":"org.apache.cxf.ws.addressing.wsdl.UsingAddressing",
+  "methods":[{"name":"getOtherAttributes","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.AssertionBuilderRegistry"
+},
+{
+  "name":"org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyAnnotationListener",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyBuilder"
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyBuilderImpl",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyDataEngineImpl",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyEngine"
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyEngineImpl",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyInterceptorProviderRegistry"
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyInterceptorProviderRegistryImpl",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.attachment.ServiceModelPolicyProvider",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.attachment.external.DomainExpressionBuilderRegistry"
+},
+{
+  "name":"org.apache.cxf.ws.policy.attachment.external.EndpointReferenceDomainExpressionBuilder"
+},
+{
+  "name":"org.apache.cxf.ws.policy.attachment.external.URIDomainExpressionBuilder"
+},
+{
+  "name":"org.apache.cxf.ws.policy.attachment.wsdl11.Wsdl11AttachmentPolicyProvider",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.mtom.MTOMAssertionBuilder"
+},
+{
+  "name":"org.apache.cxf.ws.policy.mtom.MTOMPolicyInterceptorProvider"
+},
+{
+  "name":"org.apache.cxf.wsdl.ExtensionClassCreator"
+},
+{
+  "name":"org.apache.cxf.wsdl.ExtensionClassCreatorProxyService",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.wsdl.WSDLManager"
+},
+{
+  "name":"org.apache.cxf.wsdl.http.AddressType",
+  "methods":[{"name":"getOtherAttributes","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.wsdl.http.ObjectFactory",
+  "allDeclaredMethods":true
+},
+{
+  "name":"org.apache.cxf.wsdl11.WSDLManagerImpl",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.handlers.AddNumbers",
+  "allPublicMethods":true
+},
+{
+  "name":"org.apache.handlers.AddNumbersFault",
+  "methods":[{"name":"getFaultInfo","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.handlers.types.AddNumbers",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.handlers.types.AddNumbersResponse",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.handlers.types.FaultDetail",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.handlers.types.ObjectFactory",
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.jvnet.staxex.XMLStreamReaderEx"
+},
+{
+  "name":"org.jvnet.staxex.XMLStreamWriterEx"
+},
+{
+  "name":"org.objectweb.asm.AnnotationWriter",
+  "methods":[{"name":"visitEnd","parameterTypes":[] }]
+},
+{
+  "name":"org.objectweb.asm.ClassWriter",
+  "fields":[
+    {"name":"COMPUTE_FRAMES"}, 
+    {"name":"COMPUTE_MAXS"}
+  ],
+  "methods":[
+    {"name":"<init>","parameterTypes":["int"] }, 
+    {"name":"toByteArray","parameterTypes":[] }, 
+    {"name":"visit","parameterTypes":["int","int","java.lang.String","java.lang.String","java.lang.String","java.lang.String[]"] }, 
+    {"name":"visitEnd","parameterTypes":[] }, 
+    {"name":"visitField","parameterTypes":["int","java.lang.String","java.lang.String","java.lang.String","java.lang.Object"] }, 
+    {"name":"visitMethod","parameterTypes":["int","java.lang.String","java.lang.String","java.lang.String","java.lang.String[]"] }, 
+    {"name":"visitSource","parameterTypes":["java.lang.String","java.lang.String"] }
+  ]
+},
+{
+  "name":"org.objectweb.asm.FieldWriter",
+  "methods":[{"name":"visitEnd","parameterTypes":[] }]
+},
+{
+  "name":"org.objectweb.asm.Label",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.objectweb.asm.MethodVisitor",
+  "methods":[{"name":"visitFrame","parameterTypes":["int","int","java.lang.Object[]","int","java.lang.Object[]"] }]
+},
+{
+  "name":"org.objectweb.asm.MethodWriter",
+  "allPublicMethods":true
+},
+{
+  "name":"org.objectweb.asm.Opcodes",
+  "fields":[
+    {"name":"AALOAD"}, 
+    {"name":"ACC_ABSTRACT"}, 
+    {"name":"ACC_FINAL"}, 
+    {"name":"ACC_INTERFACE"}, 
+    {"name":"ACC_PRIVATE"}, 
+    {"name":"ACC_PUBLIC"}, 
+    {"name":"ACC_STATIC"}, 
+    {"name":"ACC_SUPER"}, 
+    {"name":"ACC_SYNTHETIC"}, 
+    {"name":"ACONST_NULL"}, 
+    {"name":"ALOAD"}, 
+    {"name":"ANEWARRAY"}, 
+    {"name":"ARETURN"}, 
+    {"name":"ARRAYLENGTH"}, 
+    {"name":"ASTORE"}, 
+    {"name":"ATHROW"}, 
+    {"name":"CHECKCAST"}, 
+    {"name":"DCONST_0"}, 
+    {"name":"DUP"}, 
+    {"name":"FCONST_0"}, 
+    {"name":"F_APPEND"}, 
+    {"name":"F_SAME"}, 
+    {"name":"F_SAME1"}, 
+    {"name":"GETFIELD"}, 
+    {"name":"GETSTATIC"}, 
+    {"name":"GOTO"}, 
+    {"name":"ICONST_0"}, 
+    {"name":"ICONST_1"}, 
+    {"name":"IFNONNULL"}, 
+    {"name":"IFNULL"}, 
+    {"name":"IF_ICMPLT"}, 
+    {"name":"ILOAD"}, 
+    {"name":"INTEGER"}, 
+    {"name":"INVOKEINTERFACE"}, 
+    {"name":"INVOKESPECIAL"}, 
+    {"name":"INVOKESTATIC"}, 
+    {"name":"INVOKEVIRTUAL"}, 
+    {"name":"IRETURN"}, 
+    {"name":"ISTORE"}, 
+    {"name":"LCONST_0"}, 
+    {"name":"NEW"}, 
+    {"name":"POP"}, 
+    {"name":"PUTFIELD"}, 
+    {"name":"PUTSTATIC"}, 
+    {"name":"RETURN"}, 
+    {"name":"SIPUSH"}, 
+    {"name":"V1_5"}, 
+    {"name":"V1_6"}, 
+    {"name":"V1_7"}
+  ]
+},
+{
+  "name":"org.slf4j.LoggerFactory",
+  "methods":[{"name":"getILoggerFactory","parameterTypes":[] }]
+},
+{
+  "name":"org.slf4j.impl.StaticLoggerBinder"
+},
+{
+  "name":"org.w3c.dom.Node",
+  "methods":[
+    {"name":"getUserData","parameterTypes":["java.lang.String"] }, 
+    {"name":"setUserData","parameterTypes":["java.lang.String","java.lang.Object","org.w3c.dom.UserDataHandler"] }
+  ]
+},
+{
+  "name":"org.w3c.dom.UserDataHandler"
+},
+{
+  "name":"sun.misc.Unsafe",
+  "fields":[{"name":"theUnsafe"}],
+  "methods":[
+    {"name":"copyMemory","parameterTypes":["java.lang.Object","long","java.lang.Object","long","long"] }, 
+    {"name":"getAndAddLong","parameterTypes":["java.lang.Object","long","long"] }, 
+    {"name":"getAndSetObject","parameterTypes":["java.lang.Object","long","java.lang.Object"] }, 
+    {"name":"invokeCleaner","parameterTypes":["java.nio.ByteBuffer"] }
+  ]
+},
+{
+  "name":"sun.nio.ch.SelectorImpl",
+  "fields":[
+    {"name":"publicSelectedKeys", "allowUnsafeAccess":true}, 
+    {"name":"selectedKeys", "allowUnsafeAccess":true}
+  ]
+},
+{
+  "name":"sun.security.provider.DRBG",
+  "methods":[{"name":"<init>","parameterTypes":["java.security.SecureRandomParameters"] }]
+},
+{
+  "name":"sun.security.provider.SHA",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"sun.security.provider.SHA2$SHA256",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+}
+]
diff --git a/distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/server/resource-config.json b/distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/server/resource-config.json
new file mode 100644
index 0000000..4de452a
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/server/resource-config.json
@@ -0,0 +1,56 @@
+{
+  "resources":{
+  "includes":[
+    {"pattern":"\\QMETA-INF/cxf/bus-extensions.txt\\E"}, 
+    {"pattern":"\\QMETA-INF/io.netty.versions.properties\\E"}, 
+    {"pattern":"\\QMETA-INF/mailcap.default\\E"}, 
+    {"pattern":"\\QMETA-INF/services/javax.xml.bind.JAXBContextFactory\\E"}, 
+    {"pattern":"\\QMETA-INF/services/javax.xml.stream.XMLEventFactory\\E"}, 
+    {"pattern":"\\QMETA-INF/services/javax.xml.stream.XMLInputFactory\\E"}, 
+    {"pattern":"\\QMETA-INF/services/javax.xml.stream.XMLOutputFactory\\E"}, 
+    {"pattern":"\\QMETA-INF/services/javax.xml.ws.spi.Provider\\E"}, 
+    {"pattern":"\\Qorg/apache/cxf/version/version.properties\\E"}, 
+    {"pattern":"\\Qorg/slf4j/impl/StaticLoggerBinder.class\\E"}, 
+    {"pattern":"\\Qschemas/wsdl/ws-addr-wsdl.xsd\\E"}, 
+    {"pattern":"\\Qschemas/wsdl/ws-addr.xsd\\E"}, 
+    {"pattern":"\\Qschemas/wsdl/wsrm.xsd\\E"}
+  ]},
+  "bundles":[
+    {"name":"javax.servlet.LocalStrings"}, 
+    {"name":"org.apache.cxf.Messages"}, 
+    {"name":"org.apache.cxf.binding.soap.interceptor.Messages"}, 
+    {"name":"org.apache.cxf.binding.soap.saaj.Messages"}, 
+    {"name":"org.apache.cxf.bus.extension.Messages"}, 
+    {"name":"org.apache.cxf.bus.managers.Messages"}, 
+    {"name":"org.apache.cxf.common.annotation.Messages"}, 
+    {"name":"org.apache.cxf.common.injection.Messages"}, 
+    {"name":"org.apache.cxf.common.jaxb.Messages"}, 
+    {"name":"org.apache.cxf.common.util.Messages"}, 
+    {"name":"org.apache.cxf.endpoint.Messages"}, 
+    {"name":"org.apache.cxf.frontend.Messages"}, 
+    {"name":"org.apache.cxf.interceptor.Messages"}, 
+    {"name":"org.apache.cxf.jaxb.Messages"}, 
+    {"name":"org.apache.cxf.jaxb.attachment.Messages"}, 
+    {"name":"org.apache.cxf.jaxws.Messages"}, 
+    {"name":"org.apache.cxf.jaxws.binding.soap.Messages"}, 
+    {"name":"org.apache.cxf.jaxws.context.Messages"}, 
+    {"name":"org.apache.cxf.jaxws.handler.Messages"}, 
+    {"name":"org.apache.cxf.jaxws.interceptors.Messages"}, 
+    {"name":"org.apache.cxf.jaxws.spi.Messages"}, 
+    {"name":"org.apache.cxf.jaxws.support.Messages"}, 
+    {"name":"org.apache.cxf.resource.Messages"}, 
+    {"name":"org.apache.cxf.service.factory.Messages"}, 
+    {"name":"org.apache.cxf.service.invoker.Messages"}, 
+    {"name":"org.apache.cxf.service.model.Messages"}, 
+    {"name":"org.apache.cxf.staxutils.Messages"}, 
+    {"name":"org.apache.cxf.transport.http.Messages"}, 
+    {"name":"org.apache.cxf.transport.http.netty.server.Messages"}, 
+    {"name":"org.apache.cxf.transport.https.Messages"}, 
+    {"name":"org.apache.cxf.ws.addressing.Messages"}, 
+    {"name":"org.apache.cxf.ws.policy.Messages"}, 
+    {"name":"org.apache.cxf.ws.policy.attachment.Messages"}, 
+    {"name":"org.apache.cxf.wsdl.Messages"}, 
+    {"name":"org.apache.cxf.wsdl.interceptors.Messages"}, 
+    {"name":"org.apache.cxf.wsdl.service.factory.Messages"}
+  ]
+}
diff --git a/distribution/src/main/release/samples/jaxws_graalvm/src/main/java/demo/jaxws/client/Client.java b/distribution/src/main/release/samples/jaxws_graalvm/src/main/java/demo/jaxws/client/Client.java
new file mode 100644
index 0000000..284005d
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm/src/main/java/demo/jaxws/client/Client.java
@@ -0,0 +1,85 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package demo.jaxws.client;
+
+import java.io.File;
+
+import javax.xml.namespace.QName;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.bus.extension.ExtensionManagerBus;
+import org.apache.handlers.AddNumbers;
+import org.apache.handlers.AddNumbersFault;
+import org.apache.handlers.AddNumbersService;
+
+public final class Client {
+
+    static QName serviceName = new QName("http://apache.org/handlers",
+                                           "AddNumbersService");
+
+    static QName portName = new QName("http://apache.org/handlers",
+                                        "AddNumbersPort");
+    
+    private Client() {
+    }
+
+    public static void main(String[] args) throws Exception {
+
+        if (args.length == 0) {
+            System.err.println("please provide wsdl");
+            System.exit(0);
+        }
+
+        final Bus bus = new ExtensionManagerBus();
+        BusFactory.setDefaultBus(bus);
+        
+        File wsdl = new File(args[0]);
+
+        AddNumbersService service = new AddNumbersService(wsdl.toURI().toURL(), serviceName);
+        AddNumbers port = (AddNumbers)service.getPort(portName, AddNumbers.class);
+
+        try {
+            int number1 = 10;
+            int number2 = 20;
+
+            System.out.printf("Invoking addNumbers(%d, %d)\n", number1, number2);
+            int result = port.addNumbers(number1, number2);
+            System.out.printf("The result of adding %d and %d is %d.\n\n", number1, number2, result);
+
+            number1 = 3;
+            number2 = 5;
+
+            System.out.printf("Invoking addNumbers(%d, %d)\n", number1, number2);
+            result = port.addNumbers(number1, number2);
+            System.out.printf("The result of adding %d and %d is %d.\n\n", number1, number2, result);
+
+            number1 = -10;
+            System.out.printf("Invoking addNumbers(%d, %d)\n", number1, number2);
+            result = port.addNumbers(number1, number2);
+            System.out.printf("The result of adding %d and %d is %d.\n", number1, number2, result);
+
+        } catch (AddNumbersFault ex) {
+            System.out.printf("Caught AddNumbersFault: %s\n", ex.getFaultInfo().getMessage());
+        }
+
+        System.exit(0);
+    }
+}
diff --git a/distribution/src/main/release/samples/jaxws_graalvm/src/main/java/demo/jaxws/server/AddNumbersImpl.java b/distribution/src/main/release/samples/jaxws_graalvm/src/main/java/demo/jaxws/server/AddNumbersImpl.java
new file mode 100644
index 0000000..5704498
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm/src/main/java/demo/jaxws/server/AddNumbersImpl.java
@@ -0,0 +1,56 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package demo.jaxws.server;
+
+import javax.jws.WebService;
+import org.apache.handlers.AddNumbers;
+import org.apache.handlers.AddNumbersFault;
+import org.apache.handlers.types.FaultDetail;
+
+
+@WebService(name = "AddNumbers",
+            targetNamespace = "http://apache.org/handlers",
+            portName = "AddNumbersPort",
+            endpointInterface = "org.apache.handlers.AddNumbers",
+            serviceName = "AddNumbersService")
+public class AddNumbersImpl implements AddNumbers {
+
+
+    /**
+     * @param number1
+     * @param number2
+     * @return The sum
+     * @throws AddNumbersException
+     *             if any of the numbers to be added is negative.
+     */
+    public int addNumbers(int number1, int number2) throws AddNumbersFault {
+        System.out.println("addNumbers called....." + number1 + ":" + number2);
+        if (number1 < 0 || number2 < 0) {
+            String message = "Negative number cant be added!";
+            String detail = "Numbers: " + number1 + ", " + number2;
+            FaultDetail fault = new FaultDetail();
+            fault.setMessage(message);
+            fault.setFaultInfo(detail);
+            throw new AddNumbersFault(message, fault);
+        }
+        return number1 + number2;
+    }
+
+}
diff --git a/distribution/src/main/release/samples/jaxws_graalvm/src/main/java/demo/jaxws/server/Server.java b/distribution/src/main/release/samples/jaxws_graalvm/src/main/java/demo/jaxws/server/Server.java
new file mode 100644
index 0000000..f94ff35
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm/src/main/java/demo/jaxws/server/Server.java
@@ -0,0 +1,50 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package demo.jaxws.server;
+
+
+import javax.xml.ws.Endpoint;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.bus.extension.ExtensionManagerBus;
+
+public class Server {
+    protected Server() throws Exception {
+        System.out.println("Starting AddNumbers Server");
+        
+        final Bus bus = new ExtensionManagerBus(); 
+        BusFactory.setDefaultBus(bus);
+        
+        Object implementor = new AddNumbersImpl();
+        String address = "http://localhost:9000/handlers/AddNumbersService/AddNumbersPort";
+        
+        Endpoint.publish(address, implementor);
+    }
+
+    public static void main(String[] args) throws Exception {
+        new Server();
+        System.out.println("Server ready...");
+
+        Thread.sleep(5 * 60 * 1000);
+        System.out.println("Server exiting");
+        System.exit(0);
+    }
+}
diff --git a/distribution/src/main/release/samples/jaxws_graalvm/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm/native-image.properties b/distribution/src/main/release/samples/jaxws_graalvm/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm/native-image.properties
new file mode 100644
index 0000000..b2069af
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm/native-image.properties
@@ -0,0 +1 @@
+Args = --initialize-at-build-time=org.slf4j.impl.JDK14LoggerAdapter,org.slf4j.impl.StaticLoggerBinder,org.slf4j.LoggerFactory --allow-incomplete-classpath -H:JNIConfigurationResources=${.}/jni-config.json -H:ResourceConfigurationResources=${.}/resource-config.json -H:DynamicProxyConfigurationResources=${.}/proxy-config.json -H:ReflectionConfigurationResources=${.}/reflect-config.json --report-unsupported-elements-at-runtime --enable-url-protocols=http
\ No newline at end of file
diff --git a/distribution/src/main/release/samples/jaxws_graalvm/src/main/resources/addNumbers.wsdl b/distribution/src/main/release/samples/jaxws_graalvm/src/main/resources/addNumbers.wsdl
new file mode 100644
index 0000000..415c688
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm/src/main/resources/addNumbers.wsdl
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements. See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership. The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License. You may obtain a copy of the License at
+
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied. See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<definitions xmlns:tns="http://apache.org/handlers" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:x1="http://apache.org/handlers/types" name="AddNumbers" targetNamespace="http://apache.org/handlers">
+    <types>
+        <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://apache.org/handlers/types" elementFormDefault="qualified">
+            <complexType name="addNumbersResponse">
+                <sequence>
+                    <element name="return" type="xsd:int"/>
+                </sequence>
+            </complexType>
+            <element name="addNumbersResponse" type="x1:addNumbersResponse"/>
+            <complexType name="addNumbers">
+                <sequence>
+                    <element name="arg0" type="xsd:int"/>
+                    <element name="arg1" type="xsd:int"/>
+                </sequence>
+            </complexType>
+            <element name="addNumbers" type="x1:addNumbers"/>
+            <element name="FaultDetail" type="x1:FaultDetail"/>
+            <complexType name="FaultDetail">
+                <sequence>
+                    <element name="faultInfo" type="xsd:string"/>
+                    <element name="message" type="xsd:string"/>
+                </sequence>
+            </complexType>
+        </xsd:schema>
+    </types>
+    <message name="addNumbers">
+        <part name="parameters" element="x1:addNumbers"/>
+    </message>
+    <message name="addNumbersResponse">
+        <part name="result" element="x1:addNumbersResponse"/>
+    </message>
+    <message name="addNumbersFault">
+        <part name="AddNumbersFault" element="x1:FaultDetail"/>
+    </message>
+    <portType name="AddNumbers">
+        <operation name="addNumbers">
+            <input message="tns:addNumbers"/>
+            <output message="tns:addNumbersResponse"/>
+            <fault name="addNumbersFault" message="tns:addNumbersFault"/>
+        </operation>
+    </portType>
+    <binding name="AddNumbersBinding" type="tns:AddNumbers">
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+        <operation name="addNumbers">
+            <soap:operation soapAction=""/>
+            <input>
+                <soap:body use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+            <fault name="addNumbersFault">
+                <soap:fault name="addNumbersFault" use="literal"/>
+            </fault>
+        </operation>
+    </binding>
+    <service name="AddNumbersService">
+        <port name="AddNumbersPort" binding="tns:AddNumbersBinding">
+            <soap:address location="http://localhost:9000/handlers/AddNumbersService/AddNumbersPort"/>
+        </port>
+    </service>
+</definitions>
diff --git a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/README.txt b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/README.txt
new file mode 100644
index 0000000..1ec8d31
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/README.txt
@@ -0,0 +1,72 @@
+JAX-WS GraalVM native-image Demo
+===================
+
+This demo shows how JAX-WS services and clients could use GraalVM's native-image 
+capabilities and be packaged as native executables. This example demonstrates advanced
+techniques to deal with dynamic class generation. 
+
+Pre-requisites
+---------------------------------------
+
+GraalVM 20.3.0 or later distribution should be installed and pre-configured as 
+default JVM runtime (using JAVA_HOME), see please instructions at [1].
+
+The GraalVM's native-image tool should be installed, see please 
+instructions at [2].
+
+Building and running the demo using Maven
+---------------------------------------
+
+From the base directory of this sample (i.e., where this README file is
+located), the pom.xml file is used to build and run the demo. 
+
+Using either UNIX or Windows:
+
+Than build server:  
+  
+  mvn clean package -f server -Pserver
+  
+This goal will produce 'server/target/jaxws-demo-server' executable (platform-dependent) 
+which could be run right away: 
+
+  On Windows: server\target\jaxws-demo-server.exe
+  On Linux: ./server/target/jaxws-demo-server
+
+Than build the client in capturing mode (please note that the server has to be up and running):
+  
+  mvn -f client -Pcapture  (from a second command line window)
+
+Than build the client:
+  
+  mvn -f client -Pclient (from a second command line window)
+
+This goal will produce 'client/target/jaxws-demo-client' executable (platform-dependent) 
+which could be run right away: 
+
+  On Windows: client\target\jaxws-demo-client.exe client\	src\main\resources\addNumbers.wsdl
+  On Linux: ./client/target/jaxws-demo-client client/src/main/resources/addNumbers.wsdl
+
+The command should produce the following output (assuming the server is up and running):
+
+  org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean buildServiceFromWSDL
+
+  INFO: Creating Service {http://apache.org/handlers}AddNumbersService from WSDL: client/src/main/resources/addNumbers.wsdl
+  Invoking addNumbers(10, 20)
+  The result of adding 10 and 20 is 30.
+
+  Invoking addNumbers(3, 5)
+  The result of adding 3 and 5 is 8.
+
+  Invoking addNumbers(-10, 5)
+  Caught AddNumbersFault: Negative number cant be added!
+
+To remove the code generated from the WSDL file and the .class
+files, run :
+  
+  mvn clean -f server
+  mvn clean -f client
+
+References
+---------------------------------------
+[1] https://www.graalvm.org/downloads/
+[2] https://www.graalvm.org/reference-manual/native-image/ 
diff --git a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/pom.xml b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/pom.xml
new file mode 100644
index 0000000..fb2d599
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/pom.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements. See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership. The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License. You may obtain a copy of the License at
+ 
+  http://www.apache.org/licenses/LICENSE-2.0
+ 
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied. See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<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/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>jaxws_graalvm_dynamic_client</artifactId>
+    <name>JAX-WS GraalVM Demo (capture generated classes)</name>
+    <description>JAX-WS GraalVM Demo (capture generated classes)</description>
+    <parent>
+        <groupId>org.apache.cxf.samples</groupId>
+        <artifactId>cxf-samples</artifactId>
+        <version>3.5.0-SNAPSHOT</version>
+    </parent>
+    <properties>
+        <cxf.version>${project.version}</cxf.version>
+        <wsdl.file>${basedir}/src/main/resources/addNumbers.wsdl</wsdl.file>
+        <graalvm.version>20.3.0</graalvm.version>
+    </properties>
+
+    <profiles>
+        <profile>
+            <id>client</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.graalvm.nativeimage</groupId>
+                        <artifactId>native-image-maven-plugin</artifactId>
+                        <version>${graalvm.version}</version>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>native-image</goal>
+                                </goals>
+                                <phase>package</phase>
+                            </execution>
+                        </executions>
+                        <configuration>
+                            <mainClass>demo.jaxws.client.Client</mainClass>
+                            <imageName>jaxws-demo-client</imageName>
+                            <buildArgs>--no-fallback</buildArgs>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        <profile>
+            <id>capture</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>exec-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <phase>test</phase>
+                                <goals>
+                                    <goal>java</goal>
+                                </goals>
+                                <configuration>
+                                    <mainClass>demo.jaxws.client.ClientCapture</mainClass>
+                                    <arguments>
+                                        <argument>${wsdl.file}</argument>
+                                        <argument>${basedir}/src/main/resources</argument>
+                                    </arguments>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-frontend-jaxws</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-transports-http</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-transports-http-netty-client</artifactId>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/demo/jaxws/client/Client.java b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/demo/jaxws/client/Client.java
new file mode 100644
index 0000000..909e728
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/demo/jaxws/client/Client.java
@@ -0,0 +1,101 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package demo.jaxws.client;
+
+import java.io.File;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.bus.extension.ExtensionManagerBus;
+import org.apache.cxf.common.spi.GeneratedNamespaceClassLoader;
+import org.apache.cxf.common.spi.NamespaceClassCreator;
+import org.apache.cxf.endpoint.dynamic.ExceptionClassCreator;
+import org.apache.cxf.endpoint.dynamic.ExceptionClassLoader;
+import org.apache.cxf.jaxb.FactoryClassCreator;
+import org.apache.cxf.jaxb.FactoryClassLoader;
+import org.apache.cxf.jaxb.WrapperHelperClassLoader;
+import org.apache.cxf.jaxb.WrapperHelperCreator;
+import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
+import org.apache.cxf.jaxws.spi.WrapperClassCreator;
+import org.apache.cxf.jaxws.spi.WrapperClassLoader;
+import org.apache.cxf.wsdl.ExtensionClassCreator;
+import org.apache.cxf.wsdl.ExtensionClassLoader;
+import org.apache.handlers.AddNumbers;
+import org.apache.handlers.AddNumbersFault;
+
+public final class Client {
+    private Client() {
+    }
+
+    public static void main(String[] args) throws Exception {
+
+        if (args.length == 0) {
+            System.err.println("please provide wsdl");
+            System.exit(0);
+        }
+
+        final Bus bus = new ExtensionManagerBus();
+        BusFactory.setDefaultBus(bus);
+
+        bus.setExtension(new WrapperHelperClassLoader(bus), WrapperHelperCreator.class);
+        bus.setExtension(new ExtensionClassLoader(bus), ExtensionClassCreator.class);
+        bus.setExtension(new ExceptionClassLoader(bus), ExceptionClassCreator.class);
+        bus.setExtension(new WrapperClassLoader(bus), WrapperClassCreator.class);
+        bus.setExtension(new FactoryClassLoader(bus), FactoryClassCreator.class);
+        bus.setExtension(new GeneratedNamespaceClassLoader(bus), NamespaceClassCreator.class);
+
+        run(args, bus);
+
+        System.exit(0);
+    }
+
+    public static void run(String[] args, final Bus bus) {
+        File wsdl = new File(args[0]);
+
+        final JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
+        factory.setServiceClass(AddNumbers.class);
+        factory.setWsdlURL(wsdl.toURI().toString());
+        final AddNumbers client = (AddNumbers)factory.create();
+
+        try {
+            int number1 = 10;
+            int number2 = 20;
+
+            System.out.printf("Invoking addNumbers(%d, %d)\n", number1, number2);
+            int result = client.addNumbers(number1, number2);
+            System.out.printf("The result of adding %d and %d is %d.\n\n", number1, number2, result);
+
+            number1 = 3;
+            number2 = 5;
+
+            System.out.printf("Invoking addNumbers(%d, %d)\n", number1, number2);
+            result = client.addNumbers(number1, number2);
+            System.out.printf("The result of adding %d and %d is %d.\n\n", number1, number2, result);
+
+            number1 = -10;
+            System.out.printf("Invoking addNumbers(%d, %d)\n", number1, number2);
+            result = client.addNumbers(number1, number2);
+            System.out.printf("The result of adding %d and %d is %d.\n", number1, number2, result);
+
+        } catch (AddNumbersFault ex) {
+            System.out.printf("Caught AddNumbersFault: %s\n", ex.getFaultInfo().getMessage());
+        }
+    }
+}
diff --git a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/demo/jaxws/client/ClientCapture.java b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/demo/jaxws/client/ClientCapture.java
new file mode 100644
index 0000000..71b5d89
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/demo/jaxws/client/ClientCapture.java
@@ -0,0 +1,51 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package demo.jaxws.client;
+
+import java.io.File;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.bus.extension.ExtensionManagerBus;
+import org.apache.cxf.common.spi.GeneratedClassClassLoaderCapture;
+
+public final class ClientCapture {
+    private ClientCapture() {
+    }
+
+    public static void main(String[] args) throws Exception {
+
+        if (args.length < 2) {
+            System.err.println("please provide wsdl and classes dump location");
+            System.exit(0);
+        }
+
+        final Bus bus = new ExtensionManagerBus();
+        BusFactory.setDefaultBus(bus);
+        
+        final DumpingClassLoaderCapturer capturer = new DumpingClassLoaderCapturer();
+        bus.setExtension(capturer, GeneratedClassClassLoaderCapture.class);
+        
+        Client.run(args, bus);
+
+        capturer.dumpTo(new File(args[1]));
+        System.exit(0);
+    }
+}
diff --git a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/demo/jaxws/client/DumpingClassLoaderCapturer.java b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/demo/jaxws/client/DumpingClassLoaderCapturer.java
new file mode 100644
index 0000000..c713de9
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/demo/jaxws/client/DumpingClassLoaderCapturer.java
@@ -0,0 +1,60 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package demo.jaxws.client;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardOpenOption;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.cxf.common.spi.GeneratedClassClassLoaderCapture;
+import org.apache.cxf.common.util.StringUtils;
+
+public class DumpingClassLoaderCapturer implements GeneratedClassClassLoaderCapture {
+    private final Map<String, byte[]> classes = new ConcurrentHashMap<>();
+    
+    public void dumpTo(File file) throws IOException {
+        if (!file.exists()) 
+            Files.createDirectories(file.toPath());{
+        }
+        
+        if (!file.isDirectory()) {
+            throw new IllegalArgumentException("The dump location does not exist or is not a directory: " + file);
+        }
+        
+        for (Map.Entry<String, byte[]> entry: classes.entrySet()) {
+            final Path path = file.toPath().resolve(StringUtils.periodToSlashes(entry.getKey()) + ".class");
+            Files.createDirectories(path.getParent());
+            
+            try (OutputStream out = Files.newOutputStream(path, StandardOpenOption.CREATE)) {
+                out.write(entry.getValue());
+            }
+        }
+    }
+
+    @Override
+    public void capture(String className, byte[] bytes) {
+        classes.putIfAbsent(className, bytes);
+    }
+}
diff --git a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/org/apache/handlers/AddNumbers.java b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/org/apache/handlers/AddNumbers.java
new file mode 100644
index 0000000..e512589
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/org/apache/handlers/AddNumbers.java
@@ -0,0 +1,43 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.handlers;
+
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebResult;
+import javax.jws.WebService;
+import javax.xml.ws.RequestWrapper;
+import javax.xml.ws.ResponseWrapper;
+
+@WebService(targetNamespace = "http://apache.org/handlers", name = "AddNumbers")
+public interface AddNumbers {
+
+    @WebMethod
+    @RequestWrapper(localName = "addNumbers", targetNamespace = "http://apache.org/handlers/types", className = "org.apache.handlers.types.AddNumbers")
+    @ResponseWrapper(localName = "addNumbersResponse", targetNamespace = "http://apache.org/handlers/types", className = "org.apache.handlers.types.AddNumbersResponse")
+    @WebResult(name = "return", targetNamespace = "http://apache.org/handlers/types")
+    public int addNumbers(
+
+        @WebParam(name = "arg0", targetNamespace = "http://apache.org/handlers/types")
+        int arg0,
+        @WebParam(name = "arg1", targetNamespace = "http://apache.org/handlers/types")
+        int arg1
+    ) throws AddNumbersFault;
+}
diff --git a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/org/apache/handlers/AddNumbersFault.java b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/org/apache/handlers/AddNumbersFault.java
new file mode 100644
index 0000000..7ee4f10
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/org/apache/handlers/AddNumbersFault.java
@@ -0,0 +1,55 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.handlers;
+
+import javax.xml.ws.WebFault;
+
+@WebFault(name = "FaultDetail", targetNamespace = "http://apache.org/handlers/types")
+public class AddNumbersFault extends Exception {
+    private static final long serialVersionUID = 6949117900244694759L;
+    
+    private org.apache.handlers.types.FaultDetail faultInfo;
+
+    public AddNumbersFault() {
+        super();
+    }
+
+    public AddNumbersFault(String message) {
+        super(message);
+    }
+
+    public AddNumbersFault(String message, java.lang.Throwable cause) {
+        super(message, cause);
+    }
+
+    public AddNumbersFault(String message, org.apache.handlers.types.FaultDetail faultDetail) {
+        super(message);
+        this.faultInfo = faultDetail;
+    }
+
+    public AddNumbersFault(String message, org.apache.handlers.types.FaultDetail faultDetail, java.lang.Throwable cause) {
+        super(message, cause);
+        this.faultInfo = faultDetail;
+    }
+
+    public org.apache.handlers.types.FaultDetail getFaultInfo() {
+        return this.faultInfo;
+    }
+}
diff --git a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/org/apache/handlers/types/FaultDetail.java b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/org/apache/handlers/types/FaultDetail.java
new file mode 100644
index 0000000..67054d0
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/org/apache/handlers/types/FaultDetail.java
@@ -0,0 +1,84 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.handlers.types;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "FaultDetail", propOrder = { "faultInfo", "message" })
+public class FaultDetail {
+
+    @XmlElement(required = true)
+    protected String faultInfo;
+    @XmlElement(required = true)
+    protected String message;
+
+    /**
+     * Gets the value of the faultInfo property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getFaultInfo() {
+        return faultInfo;
+    }
+
+    /**
+     * Sets the value of the faultInfo property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setFaultInfo(String value) {
+        this.faultInfo = value;
+    }
+
+    /**
+     * Gets the value of the message property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getMessage() {
+        return message;
+    }
+
+    /**
+     * Sets the value of the message property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setMessage(String value) {
+        this.message = value;
+    }
+
+}
diff --git a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/org/apache/handlers/types/package-info.java b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/org/apache/handlers/types/package-info.java
new file mode 100644
index 0000000..3b31aa8
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/org/apache/handlers/types/package-info.java
@@ -0,0 +1,21 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+@javax.xml.bind.annotation.XmlSchema(namespace = "http://apache.org/handlers/types", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
+package org.apache.handlers.types;
diff --git a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_client/jni-config.json b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_client/jni-config.json
new file mode 100644
index 0000000..0218ccb
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_client/jni-config.json
@@ -0,0 +1,22 @@
+[
+{
+  "name":"java.lang.ClassLoader",
+  "methods":[{"name":"getPlatformClassLoader","parameterTypes":[] }]
+},
+{
+  "name":"java.lang.NoSuchMethodError"
+},
+{
+  "name":"sun.management.VMManagementImpl",
+  "fields":[
+    {"name":"compTimeMonitoringSupport"}, 
+    {"name":"currentThreadCpuTimeSupport"}, 
+    {"name":"objectMonitorUsageSupport"}, 
+    {"name":"otherThreadCpuTimeSupport"}, 
+    {"name":"remoteDiagnosticCommandsSupport"}, 
+    {"name":"synchronizerUsageSupport"}, 
+    {"name":"threadAllocatedMemorySupport"}, 
+    {"name":"threadContentionMonitoringSupport"}
+  ]
+}
+]
diff --git a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_client/native-image.properties b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_client/native-image.properties
new file mode 100644
index 0000000..b2069af
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_client/native-image.properties
@@ -0,0 +1 @@
+Args = --initialize-at-build-time=org.slf4j.impl.JDK14LoggerAdapter,org.slf4j.impl.StaticLoggerBinder,org.slf4j.LoggerFactory --allow-incomplete-classpath -H:JNIConfigurationResources=${.}/jni-config.json -H:ResourceConfigurationResources=${.}/resource-config.json -H:DynamicProxyConfigurationResources=${.}/proxy-config.json -H:ReflectionConfigurationResources=${.}/reflect-config.json --report-unsupported-elements-at-runtime --enable-url-protocols=http
\ No newline at end of file
diff --git a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_client/proxy-config.json b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_client/proxy-config.json
new file mode 100644
index 0000000..f32f043
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_client/proxy-config.json
@@ -0,0 +1,10 @@
+[
+  ["com.sun.xml.bind.marshaller.CharacterEscapeHandler"],
+  ["javax.xml.bind.annotation.XmlAccessorType","com.sun.xml.bind.v2.model.annotation.Locatable"],
+  ["org.apache.cxf.binding.soap.wsdl.extensions.SoapAddress"],
+  ["org.apache.cxf.binding.soap.wsdl.extensions.SoapBinding"],
+  ["org.apache.cxf.binding.soap.wsdl.extensions.SoapBody"],
+  ["org.apache.cxf.binding.soap.wsdl.extensions.SoapOperation"],
+  ["org.apache.cxf.common.jaxb.JAXBContextProxy"],
+  ["org.apache.handlers.AddNumbers","javax.xml.ws.BindingProvider","java.io.Closeable","org.apache.cxf.endpoint.Client"]
+]
diff --git a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_client/reflect-config.json b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_client/reflect-config.json
new file mode 100644
index 0000000..cc6e27b
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_client/reflect-config.json
@@ -0,0 +1,625 @@
+[
+{
+  "name":"char[]"
+},
+{
+  "name":"com.ibm.wsdl.extensions.schema.SchemaImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.extensions.soap.SOAPAddressImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.extensions.soap.SOAPBindingImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.extensions.soap.SOAPBodyImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.extensions.soap.SOAPFaultImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.extensions.soap.SOAPHeaderImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.extensions.soap.SOAPOperationImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.factory.WSDLFactoryImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.sun.xml.bind.marshaller.CharacterEscapeHandler",
+  "allPublicMethods":true
+},
+{
+  "name":"com.sun.xml.bind.marshaller.MinimumEscapeHandler",
+  "fields":[{"name":"theInstance"}]
+},
+{
+  "name":"com.sun.xml.bind.marshaller.NoEscapeHandler",
+  "fields":[{"name":"theInstance"}]
+},
+{
+  "name":"com.sun.xml.bind.v2.model.nav.ReflectionNavigator",
+  "methods":[{"name":"getInstance","parameterTypes":[] }]
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.JAXBContextImpl",
+  "methods":[{"name":"hasSwaRef","parameterTypes":[] }]
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.ArrayElementLeafProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.ArrayElementNodeProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.ArrayReferenceNodeProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.SingleElementLeafProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.SingleMapNodeProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.SingleReferenceNodeProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.unmarshaller.StAXExConnector",
+  "methods":[{"name":"<init>","parameterTypes":["org.jvnet.staxex.XMLStreamReaderEx","com.sun.xml.bind.v2.runtime.unmarshaller.XmlVisitor"] }]
+},
+{
+  "name":"com.sun.xml.messaging.saaj.soap.SOAPDocumentImpl",
+  "allPublicMethods":true
+},
+{
+  "name":"int",
+  "allDeclaredConstructors":true
+},
+{
+  "name":"io.netty.channel.socket.nio.NioSocketChannel",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueColdProducerFields",
+  "fields":[{"name":"producerLimit", "allowUnsafeAccess":true}]
+},
+{
+  "name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueConsumerFields",
+  "fields":[{"name":"consumerIndex", "allowUnsafeAccess":true}]
+},
+{
+  "name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueProducerFields",
+  "fields":[{"name":"producerIndex", "allowUnsafeAccess":true}]
+},
+{
+  "name":"java.io.Closeable",
+  "allPublicMethods":true
+},
+{
+  "name":"java.io.Writer"
+},
+{
+  "name":"java.lang.Class"
+},
+{
+  "name":"java.lang.Object",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true
+},
+{
+  "name":"java.lang.Object[]"
+},
+{
+  "name":"java.lang.String"
+},
+{
+  "name":"java.lang.invoke.MethodHandles",
+  "methods":[{"name":"lookup","parameterTypes":[] }]
+},
+{
+  "name":"java.lang.invoke.MethodHandles$Lookup",
+  "methods":[{"name":"findClass","parameterTypes":["java.lang.String"] }]
+},
+{
+  "name":"java.lang.management.ManagementFactory",
+  "methods":[{"name":"getRuntimeMXBean","parameterTypes":[] }]
+},
+{
+  "name":"java.lang.management.RuntimeMXBean",
+  "methods":[{"name":"getInputArguments","parameterTypes":[] }]
+},
+{
+  "name":"java.net.Authenticator",
+  "methods":[{"name":"getDefault","parameterTypes":[] }]
+},
+{
+  "name":"java.nio.Bits",
+  "fields":[{"name":"UNALIGNED"}]
+},
+{
+  "name":"java.nio.Buffer",
+  "fields":[{"name":"address", "allowUnsafeAccess":true}]
+},
+{
+  "name":"java.nio.DirectByteBuffer",
+  "methods":[{"name":"<init>","parameterTypes":["long","int"] }]
+},
+{
+  "name":"java.security.MessageDigestSpi"
+},
+{
+  "name":"java.security.SecureRandomParameters"
+},
+{
+  "name":"java.util.List"
+},
+{
+  "name":"java.util.Map"
+},
+{
+  "name":"java.util.concurrent.Executor"
+},
+{
+  "name":"javax.security.auth.login.Configuration"
+},
+{
+  "name":"javax.xml.bind.annotation.XmlAccessorType"
+},
+{
+  "name":"javax.xml.bind.annotation.XmlElement",
+  "methods":[{"name":"type","parameterTypes":[] }]
+},
+{
+  "name":"javax.xml.bind.annotation.XmlType",
+  "methods":[{"name":"factoryClass","parameterTypes":[] }]
+},
+{
+  "name":"javax.xml.namespace.QName"
+},
+{
+  "name":"javax.xml.ws.Binding"
+},
+{
+  "name":"javax.xml.ws.BindingProvider",
+  "allPublicMethods":true
+},
+{
+  "name":"javax.xml.ws.EndpointReference"
+},
+{
+  "name":"jdk.internal.misc.Unsafe",
+  "methods":[{"name":"getUnsafe","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.Bus"
+},
+{
+  "name":"org.apache.cxf.binding.AbstractBindingFactory",
+  "fields":[{"name":"bus"}]
+},
+{
+  "name":"org.apache.cxf.binding.soap.SoapBindingFactory",
+  "fields":[{"name":"DEFAULT_NAMESPACES"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.binding.soap.SoapTransportFactory",
+  "fields":[{"name":"DEFAULT_NAMESPACES"}],
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.binding.xml.XMLBindingFactory",
+  "fields":[{"name":"DEFAULT_NAMESPACES"}]
+},
+{
+  "name":"org.apache.cxf.binding.xml.wsdl11.XMLWSDLExtensionLoader",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.bindings.xformat.ObjectFactory",
+  "allDeclaredMethods":true
+},
+{
+  "name":"org.apache.cxf.bindings.xformat.XMLBindingMessageFormatExtensibility"
+},
+{
+  "name":"org.apache.cxf.bindings.xformat.XMLFormatBindingExtensibility"
+},
+{
+  "name":"org.apache.cxf.bus.managers.CXFBusLifeCycleManager",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.bus.managers.ClientLifeCycleManagerImpl",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.bus.managers.EndpointResolverRegistryImpl"
+},
+{
+  "name":"org.apache.cxf.bus.managers.HeaderManagerImpl"
+},
+{
+  "name":"org.apache.cxf.bus.managers.PhaseManagerImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.bus.managers.ServerLifeCycleManagerImpl"
+},
+{
+  "name":"org.apache.cxf.bus.managers.ServerRegistryImpl"
+},
+{
+  "name":"org.apache.cxf.bus.managers.WorkQueueManagerImpl"
+},
+{
+  "name":"org.apache.cxf.bus.resource.ResourceManagerImpl"
+},
+{
+  "name":"org.apache.cxf.buslifecycle.BusLifeCycleManager"
+},
+{
+  "name":"org.apache.cxf.catalog.OASISCatalogManager",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.common.spi.ClassLoaderProxyService"
+},
+{
+  "name":"org.apache.cxf.common.util.ASMHelperImpl"
+},
+{
+  "name":"org.apache.cxf.endpoint.Client",
+  "allPublicMethods":true
+},
+{
+  "name":"org.apache.cxf.endpoint.Client$Contexts"
+},
+{
+  "name":"org.apache.cxf.endpoint.ClientCallback"
+},
+{
+  "name":"org.apache.cxf.endpoint.ClientLifeCycleManager"
+},
+{
+  "name":"org.apache.cxf.endpoint.ConduitSelector"
+},
+{
+  "name":"org.apache.cxf.endpoint.Endpoint"
+},
+{
+  "name":"org.apache.cxf.endpoint.dynamic.ExceptionClassCreatorProxyService"
+},
+{
+  "name":"org.apache.cxf.ext.logging.LoggingBusLifecycleListener"
+},
+{
+  "name":"org.apache.cxf.ext.logging.LoggingFactoryBeanListener",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.ext.logging.OldLoggingFactoryBeanListener",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.jaxb.FactoryClassProxyService"
+},
+{
+  "name":"org.apache.cxf.jaxb.JAXBDataBinding",
+  "methods":[{"name":"<init>","parameterTypes":["boolean","java.util.Map"] }]
+},
+{
+  "name":"org.apache.cxf.jaxb.WrapperHelperProxyService"
+},
+{
+  "name":"org.apache.cxf.jaxws.context.WebServiceContextResourceResolver",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.jaxws.spi.WrapperClassCreatorProxyService"
+},
+{
+  "name":"org.apache.cxf.message.Exchange"
+},
+{
+  "name":"org.apache.cxf.message.Message"
+},
+{
+  "name":"org.apache.cxf.phase.PhaseManager"
+},
+{
+  "name":"org.apache.cxf.policy.PolicyDataEngine"
+},
+{
+  "name":"org.apache.cxf.service.factory.FactoryBeanListenerManager",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.service.model.BindingOperationInfo"
+},
+{
+  "name":"org.apache.cxf.transport.Conduit"
+},
+{
+  "name":"org.apache.cxf.transport.http.HTTPTransportFactory",
+  "fields":[{"name":"DEFAULT_NAMESPACES"}],
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.transport.http.HTTPWSDLExtensionLoader",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.transport.http.ReferencingAuthenticator",
+  "methods":[{"name":"<init>","parameterTypes":["java.net.Authenticator","java.net.Authenticator"] }]
+},
+{
+  "name":"org.apache.cxf.transport.http.netty.client.NettyHttpConduitFactory",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.transport.http.netty.client.NettyHttpTransportFactory"
+},
+{
+  "name":"org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder"
+},
+{
+  "name":"org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder"
+},
+{
+  "name":"org.apache.cxf.transport.http.policy.NoOpPolicyInterceptorProvider"
+},
+{
+  "name":"org.apache.cxf.transports.http.configuration.HTTPClientPolicyExtensibility"
+},
+{
+  "name":"org.apache.cxf.transports.http.configuration.HTTPServerPolicyExtensibility"
+},
+{
+  "name":"org.apache.cxf.transports.http.configuration.ObjectFactory",
+  "allDeclaredMethods":true
+},
+{
+  "name":"org.apache.cxf.ws.addressing.impl.AddressingFeatureApplier"
+},
+{
+  "name":"org.apache.cxf.ws.addressing.impl.AddressingWSDLExtensionLoader",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.addressing.impl.MAPAggregatorImplLoader"
+},
+{
+  "name":"org.apache.cxf.ws.addressing.policy.AddressingAssertionBuilder"
+},
+{
+  "name":"org.apache.cxf.ws.addressing.policy.AddressingPolicyInterceptorProvider"
+},
+{
+  "name":"org.apache.cxf.ws.addressing.policy.UsingAddressingAssertionBuilder"
+},
+{
+  "name":"org.apache.cxf.ws.addressing.wsdl.ObjectFactory",
+  "allDeclaredMethods":true
+},
+{
+  "name":"org.apache.cxf.ws.addressing.wsdl.UsingAddressingExtensibility"
+},
+{
+  "name":"org.apache.cxf.ws.policy.AssertionBuilderRegistry"
+},
+{
+  "name":"org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyAnnotationListener",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyBuilder"
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyBuilderImpl",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyDataEngineImpl",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyEngine"
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyEngineImpl",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyInterceptorProviderRegistry"
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyInterceptorProviderRegistryImpl",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.attachment.ServiceModelPolicyProvider",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.attachment.external.DomainExpressionBuilderRegistry"
+},
+{
+  "name":"org.apache.cxf.ws.policy.attachment.external.EndpointReferenceDomainExpressionBuilder"
+},
+{
+  "name":"org.apache.cxf.ws.policy.attachment.external.URIDomainExpressionBuilder"
+},
+{
+  "name":"org.apache.cxf.ws.policy.attachment.wsdl11.Wsdl11AttachmentPolicyProvider",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.mtom.MTOMAssertionBuilder"
+},
+{
+  "name":"org.apache.cxf.ws.policy.mtom.MTOMPolicyInterceptorProvider"
+},
+{
+  "name":"org.apache.cxf.wsdl.ExtensionClassCreatorProxyService"
+},
+{
+  "name":"org.apache.cxf.wsdl.WSDLManager"
+},
+{
+  "name":"org.apache.cxf.wsdl.http.AddressTypeExtensibility"
+},
+{
+  "name":"org.apache.cxf.wsdl.http.ObjectFactory",
+  "allDeclaredMethods":true
+},
+{
+  "name":"org.apache.cxf.wsdl11.WSDLManagerImpl",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.handlers.AddNumbers",
+  "allPublicMethods":true
+},
+{
+  "name":"org.apache.handlers.AddNumbersFault",
+  "allPublicConstructors":true,
+  "methods":[{"name":"getFaultInfo","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.handlers.jaxws_asm.AddNumbers",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.handlers.jaxws_asm.AddNumbersResponse",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.handlers.jaxws_asm.AddNumbersResponse_WrapperTypeHelper1"
+},
+{
+  "name":"org.apache.handlers.jaxws_asm.AddNumbers_WrapperTypeHelper1"
+},
+{
+  "name":"org.apache.handlers.types.FaultDetail",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "methods":[
+    {"name":"<init>","parameterTypes":[] }, 
+    {"name":"getMessage","parameterTypes":[] }
+  ]
+},
+{
+  "name":"org.apache.xml.resolver.CatalogManager"
+},
+{
+  "name":"org.jvnet.staxex.XMLStreamReaderEx"
+},
+{
+  "name":"org.slf4j.LoggerFactory",
+  "methods":[{"name":"getILoggerFactory","parameterTypes":[] }]
+},
+{
+  "name":"org.slf4j.impl.StaticLoggerBinder"
+},
+{
+  "name":"org.w3c.dom.Node",
+  "methods":[
+    {"name":"getUserData","parameterTypes":["java.lang.String"] }, 
+    {"name":"setUserData","parameterTypes":["java.lang.String","java.lang.Object","org.w3c.dom.UserDataHandler"] }
+  ]
+},
+{
+  "name":"org.w3c.dom.UserDataHandler"
+},
+{
+  "name":"sun.misc.Unsafe",
+  "fields":[{"name":"theUnsafe"}],
+  "methods":[
+    {"name":"copyMemory","parameterTypes":["java.lang.Object","long","java.lang.Object","long","long"] }, 
+    {"name":"getAndAddLong","parameterTypes":["java.lang.Object","long","long"] }, 
+    {"name":"getAndSetObject","parameterTypes":["java.lang.Object","long","java.lang.Object"] }, 
+    {"name":"invokeCleaner","parameterTypes":["java.nio.ByteBuffer"] }
+  ]
+},
+{
+  "name":"sun.nio.ch.SelectorImpl",
+  "fields":[
+    {"name":"publicSelectedKeys", "allowUnsafeAccess":true}, 
+    {"name":"selectedKeys", "allowUnsafeAccess":true}
+  ]
+},
+{
+  "name":"sun.security.provider.DRBG",
+  "methods":[{"name":"<init>","parameterTypes":["java.security.SecureRandomParameters"] }]
+},
+{
+  "name":"sun.security.provider.SHA",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"sun.security.provider.SHA2$SHA256",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+}
+]
diff --git a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_client/resource-config.json b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_client/resource-config.json
new file mode 100644
index 0000000..6d323d6
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_client/resource-config.json
@@ -0,0 +1,56 @@
+{
+  "resources":{
+  "includes":[
+    {"pattern":"\\QMETA-INF/cxf/bus-extensions.txt\\E"}, 
+    {"pattern":"\\QMETA-INF/io.netty.versions.properties\\E"}, 
+    {"pattern":"\\QMETA-INF/mailcap.default\\E"}, 
+    {"pattern":"\\QMETA-INF/services/javax.xml.bind.JAXBContextFactory\\E"}, 
+    {"pattern":"\\QMETA-INF/services/javax.xml.stream.XMLEventFactory\\E"}, 
+    {"pattern":"\\QMETA-INF/services/javax.xml.stream.XMLInputFactory\\E"}, 
+    {"pattern":"\\QMETA-INF/services/javax.xml.stream.XMLOutputFactory\\E"}, 
+    {"pattern":"\\Qorg/apache/cxf/transport/http/ReferencingAuthenticator.class\\E"}, 
+    {"pattern":"\\Qorg/apache/cxf/version/version.properties\\E"}, 
+    {"pattern":"\\Qorg/apache/xml/resolver/etc/catalog.dtd\\E"}, 
+    {"pattern":"\\Qorg/apache/xml/resolver/etc/catalog.rng\\E"}, 
+    {"pattern":"\\Qorg/apache/xml/resolver/etc/catalog.xsd\\E"}, 
+    {"pattern":"\\Qorg/apache/xml/resolver/etc/xcatalog.dtd\\E"}, 
+    {"pattern":"\\Qorg/slf4j/impl/StaticLoggerBinder.class\\E"}, 
+    {"pattern":"\\Qschemas/wsdl/ws-addr-wsdl.xsd\\E"}, 
+    {"pattern":"\\Qschemas/wsdl/ws-addr.xsd\\E"}, 
+    {"pattern":"\\Qschemas/wsdl/wsrm.xsd\\E"}
+  ]},
+  "bundles":[
+    {"name":"org.apache.cxf.Messages"}, 
+    {"name":"org.apache.cxf.binding.soap.interceptor.Messages"}, 
+    {"name":"org.apache.cxf.binding.soap.saaj.Messages"}, 
+    {"name":"org.apache.cxf.bus.extension.Messages"}, 
+    {"name":"org.apache.cxf.bus.managers.Messages"}, 
+    {"name":"org.apache.cxf.common.annotation.Messages"}, 
+    {"name":"org.apache.cxf.common.injection.Messages"}, 
+    {"name":"org.apache.cxf.common.jaxb.Messages"}, 
+    {"name":"org.apache.cxf.common.util.Messages"}, 
+    {"name":"org.apache.cxf.endpoint.Messages"}, 
+    {"name":"org.apache.cxf.frontend.Messages"}, 
+    {"name":"org.apache.cxf.interceptor.Messages"}, 
+    {"name":"org.apache.cxf.jaxb.Messages"}, 
+    {"name":"org.apache.cxf.jaxb.attachment.Messages"}, 
+    {"name":"org.apache.cxf.jaxws.Messages"}, 
+    {"name":"org.apache.cxf.jaxws.binding.soap.Messages"}, 
+    {"name":"org.apache.cxf.jaxws.handler.Messages"}, 
+    {"name":"org.apache.cxf.jaxws.interceptors.Messages"}, 
+    {"name":"org.apache.cxf.jaxws.support.Messages"}, 
+    {"name":"org.apache.cxf.resource.Messages"}, 
+    {"name":"org.apache.cxf.service.factory.Messages"}, 
+    {"name":"org.apache.cxf.service.model.Messages"}, 
+    {"name":"org.apache.cxf.staxutils.Messages"}, 
+    {"name":"org.apache.cxf.transport.http.Messages"}, 
+    {"name":"org.apache.cxf.transport.https.Messages"}, 
+    {"name":"org.apache.cxf.ws.policy.APIMessages"}, 
+    {"name":"org.apache.cxf.ws.policy.Messages"}, 
+    {"name":"org.apache.cxf.ws.policy.attachment.Messages"}, 
+    {"name":"org.apache.cxf.wsdl.Messages"}, 
+    {"name":"org.apache.cxf.wsdl.interceptors.Messages"}, 
+    {"name":"org.apache.cxf.wsdl.service.factory.Messages"}, 
+    {"name":"org.apache.cxf.wsdl11.Messages"}
+  ]
+}
diff --git a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/resources/addNumbers.wsdl b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/resources/addNumbers.wsdl
new file mode 100644
index 0000000..415c688
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/resources/addNumbers.wsdl
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements. See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership. The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License. You may obtain a copy of the License at
+
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied. See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<definitions xmlns:tns="http://apache.org/handlers" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:x1="http://apache.org/handlers/types" name="AddNumbers" targetNamespace="http://apache.org/handlers">
+    <types>
+        <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://apache.org/handlers/types" elementFormDefault="qualified">
+            <complexType name="addNumbersResponse">
+                <sequence>
+                    <element name="return" type="xsd:int"/>
+                </sequence>
+            </complexType>
+            <element name="addNumbersResponse" type="x1:addNumbersResponse"/>
+            <complexType name="addNumbers">
+                <sequence>
+                    <element name="arg0" type="xsd:int"/>
+                    <element name="arg1" type="xsd:int"/>
+                </sequence>
+            </complexType>
+            <element name="addNumbers" type="x1:addNumbers"/>
+            <element name="FaultDetail" type="x1:FaultDetail"/>
+            <complexType name="FaultDetail">
+                <sequence>
+                    <element name="faultInfo" type="xsd:string"/>
+                    <element name="message" type="xsd:string"/>
+                </sequence>
+            </complexType>
+        </xsd:schema>
+    </types>
+    <message name="addNumbers">
+        <part name="parameters" element="x1:addNumbers"/>
+    </message>
+    <message name="addNumbersResponse">
+        <part name="result" element="x1:addNumbersResponse"/>
+    </message>
+    <message name="addNumbersFault">
+        <part name="AddNumbersFault" element="x1:FaultDetail"/>
+    </message>
+    <portType name="AddNumbers">
+        <operation name="addNumbers">
+            <input message="tns:addNumbers"/>
+            <output message="tns:addNumbersResponse"/>
+            <fault name="addNumbersFault" message="tns:addNumbersFault"/>
+        </operation>
+    </portType>
+    <binding name="AddNumbersBinding" type="tns:AddNumbers">
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+        <operation name="addNumbers">
+            <soap:operation soapAction=""/>
+            <input>
+                <soap:body use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+            <fault name="addNumbersFault">
+                <soap:fault name="addNumbersFault" use="literal"/>
+            </fault>
+        </operation>
+    </binding>
+    <service name="AddNumbersService">
+        <port name="AddNumbersPort" binding="tns:AddNumbersBinding">
+            <soap:address location="http://localhost:9000/handlers/AddNumbersService/AddNumbersPort"/>
+        </port>
+    </service>
+</definitions>
diff --git a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/pom.xml b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/pom.xml
new file mode 100644
index 0000000..423bfce
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/pom.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements. See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership. The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License. You may obtain a copy of the License at
+ 
+  http://www.apache.org/licenses/LICENSE-2.0
+ 
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied. See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<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/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>jaxws_graalvm_dynamic_server</artifactId>
+    <name>JAX-WS GraalVM Demo (capture generated classes)</name>
+    <description>JAX-WS GraalVM Demo (capture generated classes)</description>
+    <parent>
+        <groupId>org.apache.cxf.samples</groupId>
+        <artifactId>cxf-samples</artifactId>
+        <version>3.5.0-SNAPSHOT</version>
+    </parent>
+    <properties>
+        <cxf.version>${project.version}</cxf.version>
+        <wsdl.file>${basedir}/src/main/resources/addNumbers.wsdl</wsdl.file>
+        <graalvm.version>20.3.0</graalvm.version>
+    </properties>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.cxf</groupId>
+                <artifactId>cxf-codegen-plugin</artifactId>
+                <version>${project.version}</version>
+                <executions>
+                    <execution>
+                        <id>generate-SOAPService1</id>
+                        <phase>generate-sources</phase>
+                        <configuration>
+                            <wsdlOptions>
+                                <wsdlOption>
+                                    <wsdl>${wsdl.file}</wsdl>
+                                </wsdlOption>
+                            </wsdlOptions>
+                        </configuration>
+                        <goals>
+                            <goal>wsdl2java</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+    
+    
+    <profiles>
+        <profile>
+            <id>server</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.graalvm.nativeimage</groupId>
+                        <artifactId>native-image-maven-plugin</artifactId>
+                        <version>${graalvm.version}</version>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>native-image</goal>
+                                </goals>
+                                <phase>package</phase>
+                            </execution>
+                        </executions>
+                        <configuration>
+                            <mainClass>demo.jaxws.server.Server</mainClass>
+                            <imageName>jaxws-demo-server</imageName>
+                            <buildArgs>--no-fallback</buildArgs>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-frontend-jaxws</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-transports-http</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-transports-http-netty-server</artifactId>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/java/demo/jaxws/server/AddNumbersImpl.java b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/java/demo/jaxws/server/AddNumbersImpl.java
new file mode 100644
index 0000000..5704498
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/java/demo/jaxws/server/AddNumbersImpl.java
@@ -0,0 +1,56 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package demo.jaxws.server;
+
+import javax.jws.WebService;
+import org.apache.handlers.AddNumbers;
+import org.apache.handlers.AddNumbersFault;
+import org.apache.handlers.types.FaultDetail;
+
+
+@WebService(name = "AddNumbers",
+            targetNamespace = "http://apache.org/handlers",
+            portName = "AddNumbersPort",
+            endpointInterface = "org.apache.handlers.AddNumbers",
+            serviceName = "AddNumbersService")
+public class AddNumbersImpl implements AddNumbers {
+
+
+    /**
+     * @param number1
+     * @param number2
+     * @return The sum
+     * @throws AddNumbersException
+     *             if any of the numbers to be added is negative.
+     */
+    public int addNumbers(int number1, int number2) throws AddNumbersFault {
+        System.out.println("addNumbers called....." + number1 + ":" + number2);
+        if (number1 < 0 || number2 < 0) {
+            String message = "Negative number cant be added!";
+            String detail = "Numbers: " + number1 + ", " + number2;
+            FaultDetail fault = new FaultDetail();
+            fault.setMessage(message);
+            fault.setFaultInfo(detail);
+            throw new AddNumbersFault(message, fault);
+        }
+        return number1 + number2;
+    }
+
+}
diff --git a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/java/demo/jaxws/server/Server.java b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/java/demo/jaxws/server/Server.java
new file mode 100644
index 0000000..f94ff35
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/java/demo/jaxws/server/Server.java
@@ -0,0 +1,50 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package demo.jaxws.server;
+
+
+import javax.xml.ws.Endpoint;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.bus.extension.ExtensionManagerBus;
+
+public class Server {
+    protected Server() throws Exception {
+        System.out.println("Starting AddNumbers Server");
+        
+        final Bus bus = new ExtensionManagerBus(); 
+        BusFactory.setDefaultBus(bus);
+        
+        Object implementor = new AddNumbersImpl();
+        String address = "http://localhost:9000/handlers/AddNumbersService/AddNumbersPort";
+        
+        Endpoint.publish(address, implementor);
+    }
+
+    public static void main(String[] args) throws Exception {
+        new Server();
+        System.out.println("Server ready...");
+
+        Thread.sleep(5 * 60 * 1000);
+        System.out.println("Server exiting");
+        System.exit(0);
+    }
+}
diff --git a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_server/jni-config.json b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_server/jni-config.json
new file mode 100644
index 0000000..0218ccb
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_server/jni-config.json
@@ -0,0 +1,22 @@
+[
+{
+  "name":"java.lang.ClassLoader",
+  "methods":[{"name":"getPlatformClassLoader","parameterTypes":[] }]
+},
+{
+  "name":"java.lang.NoSuchMethodError"
+},
+{
+  "name":"sun.management.VMManagementImpl",
+  "fields":[
+    {"name":"compTimeMonitoringSupport"}, 
+    {"name":"currentThreadCpuTimeSupport"}, 
+    {"name":"objectMonitorUsageSupport"}, 
+    {"name":"otherThreadCpuTimeSupport"}, 
+    {"name":"remoteDiagnosticCommandsSupport"}, 
+    {"name":"synchronizerUsageSupport"}, 
+    {"name":"threadAllocatedMemorySupport"}, 
+    {"name":"threadContentionMonitoringSupport"}
+  ]
+}
+]
diff --git a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_server/native-image.properties b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_server/native-image.properties
new file mode 100644
index 0000000..b2069af
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_server/native-image.properties
@@ -0,0 +1 @@
+Args = --initialize-at-build-time=org.slf4j.impl.JDK14LoggerAdapter,org.slf4j.impl.StaticLoggerBinder,org.slf4j.LoggerFactory --allow-incomplete-classpath -H:JNIConfigurationResources=${.}/jni-config.json -H:ResourceConfigurationResources=${.}/resource-config.json -H:DynamicProxyConfigurationResources=${.}/proxy-config.json -H:ReflectionConfigurationResources=${.}/reflect-config.json --report-unsupported-elements-at-runtime --enable-url-protocols=http
\ No newline at end of file
diff --git a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_server/proxy-config.json b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_server/proxy-config.json
new file mode 100644
index 0000000..9e5ed4d
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_server/proxy-config.json
@@ -0,0 +1,22 @@
+[
+  ["com.sun.xml.bind.marshaller.CharacterEscapeHandler"],
+  ["com.sun.xml.bind.v2.schemagen.xmlschema.ComplexType"],
+  ["com.sun.xml.bind.v2.schemagen.xmlschema.ContentModelContainer"],
+  ["com.sun.xml.bind.v2.schemagen.xmlschema.LocalElement"],
+  ["com.sun.xml.bind.v2.schemagen.xmlschema.Particle"],
+  ["com.sun.xml.bind.v2.schemagen.xmlschema.Schema"],
+  ["com.sun.xml.bind.v2.schemagen.xmlschema.TopLevelElement"],
+  ["javax.xml.bind.annotation.XmlAccessorType","com.sun.xml.bind.v2.model.annotation.Locatable"],
+  ["javax.xml.bind.annotation.XmlRegistry","com.sun.xml.bind.v2.model.annotation.Locatable"],
+  ["org.apache.cxf.binding.soap.wsdl.extensions.SoapAddress"],
+  ["org.apache.cxf.binding.soap.wsdl.extensions.SoapBinding"],
+  ["org.apache.cxf.binding.soap.wsdl.extensions.SoapBody"],
+  ["org.apache.cxf.binding.soap.wsdl.extensions.SoapFault"],
+  ["org.apache.cxf.binding.soap.wsdl.extensions.SoapOperation"],
+  ["org.apache.cxf.common.jaxb.JAXBBeanInfo"],
+  ["org.apache.cxf.common.jaxb.JAXBContextProxy"],
+  ["org.apache.cxf.common.util.ASMHelper$AnnotationVisitor"],
+  ["org.apache.cxf.common.util.ASMHelper$ClassWriter"],
+  ["org.apache.cxf.common.util.ASMHelper$FieldVisitor"],
+  ["org.apache.cxf.common.util.ASMHelper$MethodVisitor"]
+]
diff --git a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_server/reflect-config.json b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_server/reflect-config.json
new file mode 100644
index 0000000..e4a5a9e
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_server/reflect-config.json
@@ -0,0 +1,909 @@
+[
+{
+  "name":"char[]"
+},
+{
+  "name":"com.ibm.wsdl.extensions.soap.SOAPAddressImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.extensions.soap.SOAPBindingImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.extensions.soap.SOAPBodyImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.extensions.soap.SOAPFaultImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.extensions.soap.SOAPHeaderImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.extensions.soap.SOAPOperationImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.ibm.wsdl.factory.WSDLFactoryImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"com.sun.xml.bind.marshaller.CharacterEscapeHandler",
+  "allPublicMethods":true
+},
+{
+  "name":"com.sun.xml.bind.marshaller.MinimumEscapeHandler",
+  "fields":[{"name":"theInstance"}]
+},
+{
+  "name":"com.sun.xml.bind.marshaller.NoEscapeHandler",
+  "fields":[{"name":"theInstance"}]
+},
+{
+  "name":"com.sun.xml.bind.v2.model.nav.ReflectionNavigator",
+  "methods":[{"name":"getInstance","parameterTypes":[] }]
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.JAXBContextImpl",
+  "methods":[
+    {"name":"getBeanInfo","parameterTypes":["java.lang.Class"] }, 
+    {"name":"hasSwaRef","parameterTypes":[] }
+  ]
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.JaxBeanInfo",
+  "methods":[
+    {"name":"getTypeNames","parameterTypes":[] }, 
+    {"name":"isElement","parameterTypes":[] }
+  ]
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.LeafBeanInfoImpl"
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.output.StAXExStreamWriterOutput",
+  "methods":[{"name":"<init>","parameterTypes":["org.jvnet.staxex.XMLStreamWriterEx"] }]
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.ArrayElementLeafProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.ArrayElementNodeProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.ArrayReferenceNodeProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.SingleElementLeafProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.SingleMapNodeProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.property.SingleReferenceNodeProperty",
+  "allPublicConstructors":true
+},
+{
+  "name":"com.sun.xml.bind.v2.runtime.unmarshaller.StAXExConnector",
+  "methods":[{"name":"<init>","parameterTypes":["org.jvnet.staxex.XMLStreamReaderEx","com.sun.xml.bind.v2.runtime.unmarshaller.XmlVisitor"] }]
+},
+{
+  "name":"com.sun.xml.messaging.saaj.soap.SOAPDocumentImpl",
+  "allPublicMethods":true
+},
+{
+  "name":"demo.jaxws.server.AddNumbersImpl",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true
+},
+{
+  "name":"int",
+  "allDeclaredConstructors":true
+},
+{
+  "name":"io.netty.bootstrap.ServerBootstrap$1"
+},
+{
+  "name":"io.netty.bootstrap.ServerBootstrap$ServerBootstrapAcceptor",
+  "methods":[
+    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
+    {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }
+  ]
+},
+{
+  "name":"io.netty.buffer.AbstractByteBufAllocator",
+  "allDeclaredMethods":true
+},
+{
+  "name":"io.netty.buffer.AbstractReferenceCountedByteBuf",
+  "fields":[{"name":"refCnt", "allowUnsafeAccess":true}]
+},
+{
+  "name":"io.netty.channel.ChannelDuplexHandler",
+  "methods":[
+    {"name":"bind","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, 
+    {"name":"close","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
+    {"name":"connect","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, 
+    {"name":"deregister","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
+    {"name":"disconnect","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
+    {"name":"flush","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"read","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }
+  ]
+},
+{
+  "name":"io.netty.channel.ChannelHandlerAdapter",
+  "methods":[{"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }]
+},
+{
+  "name":"io.netty.channel.ChannelInboundHandlerAdapter",
+  "methods":[
+    {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
+    {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelUnregistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelWritabilityChanged","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }, 
+    {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }
+  ]
+},
+{
+  "name":"io.netty.channel.ChannelInitializer",
+  "methods":[
+    {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }
+  ]
+},
+{
+  "name":"io.netty.channel.ChannelOutboundHandlerAdapter",
+  "methods":[
+    {"name":"bind","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, 
+    {"name":"close","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
+    {"name":"connect","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, 
+    {"name":"deregister","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
+    {"name":"disconnect","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
+    {"name":"flush","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"read","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }
+  ]
+},
+{
+  "name":"io.netty.channel.DefaultChannelPipeline$HeadContext",
+  "methods":[
+    {"name":"bind","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, 
+    {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
+    {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelUnregistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelWritabilityChanged","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"close","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
+    {"name":"connect","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, 
+    {"name":"deregister","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
+    {"name":"disconnect","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, 
+    {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }, 
+    {"name":"flush","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"read","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
+    {"name":"write","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object","io.netty.channel.ChannelPromise"] }
+  ]
+},
+{
+  "name":"io.netty.channel.DefaultChannelPipeline$TailContext",
+  "methods":[
+    {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
+    {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelUnregistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelWritabilityChanged","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }, 
+    {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }
+  ]
+},
+{
+  "name":"io.netty.channel.socket.nio.NioServerSocketChannel",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"io.netty.handler.codec.ByteToMessageDecoder",
+  "methods":[
+    {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
+    {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }
+  ]
+},
+{
+  "name":"io.netty.handler.codec.MessageAggregator",
+  "methods":[
+    {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }
+  ]
+},
+{
+  "name":"io.netty.handler.codec.MessageToMessageCodec",
+  "methods":[
+    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
+    {"name":"write","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object","io.netty.channel.ChannelPromise"] }
+  ]
+},
+{
+  "name":"io.netty.handler.codec.MessageToMessageDecoder",
+  "methods":[{"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }]
+},
+{
+  "name":"io.netty.handler.codec.MessageToMessageEncoder",
+  "methods":[{"name":"write","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object","io.netty.channel.ChannelPromise"] }]
+},
+{
+  "name":"io.netty.handler.codec.http.HttpContentCompressor"
+},
+{
+  "name":"io.netty.handler.codec.http.HttpContentEncoder",
+  "methods":[{"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }]
+},
+{
+  "name":"io.netty.handler.codec.http.HttpObjectAggregator"
+},
+{
+  "name":"io.netty.handler.codec.http.HttpObjectDecoder",
+  "methods":[{"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }]
+},
+{
+  "name":"io.netty.handler.codec.http.HttpRequestDecoder"
+},
+{
+  "name":"io.netty.handler.codec.http.HttpResponseEncoder"
+},
+{
+  "name":"io.netty.handler.timeout.IdleStateHandler",
+  "methods":[
+    {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
+    {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"write","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object","io.netty.channel.ChannelPromise"] }
+  ]
+},
+{
+  "name":"io.netty.util.ReferenceCountUtil",
+  "allDeclaredMethods":true
+},
+{
+  "name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueColdProducerFields",
+  "fields":[{"name":"producerLimit", "allowUnsafeAccess":true}]
+},
+{
+  "name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueConsumerFields",
+  "fields":[{"name":"consumerIndex", "allowUnsafeAccess":true}]
+},
+{
+  "name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueProducerFields",
+  "fields":[{"name":"producerIndex", "allowUnsafeAccess":true}]
+},
+{
+  "name":"io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueConsumerIndexField",
+  "fields":[{"name":"consumerIndex", "allowUnsafeAccess":true}]
+},
+{
+  "name":"io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerIndexField",
+  "fields":[{"name":"producerIndex", "allowUnsafeAccess":true}]
+},
+{
+  "name":"io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerLimitField",
+  "fields":[{"name":"producerLimit", "allowUnsafeAccess":true}]
+},
+{
+  "name":"java.io.Writer"
+},
+{
+  "name":"java.lang.Object",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true
+},
+{
+  "name":"java.lang.management.ManagementFactory",
+  "methods":[{"name":"getRuntimeMXBean","parameterTypes":[] }]
+},
+{
+  "name":"java.lang.management.RuntimeMXBean",
+  "methods":[
+    {"name":"getInputArguments","parameterTypes":[] }, 
+    {"name":"getName","parameterTypes":[] }
+  ]
+},
+{
+  "name":"java.nio.Bits",
+  "fields":[{"name":"UNALIGNED"}]
+},
+{
+  "name":"java.nio.Buffer",
+  "fields":[{"name":"address", "allowUnsafeAccess":true}]
+},
+{
+  "name":"java.nio.DirectByteBuffer",
+  "methods":[{"name":"<init>","parameterTypes":["long","int"] }]
+},
+{
+  "name":"java.security.MessageDigestSpi"
+},
+{
+  "name":"java.security.SecureRandomParameters"
+},
+{
+  "name":"javax.security.auth.login.Configuration"
+},
+{
+  "name":"javax.xml.bind.annotation.XmlAccessorType"
+},
+{
+  "name":"javax.xml.bind.annotation.XmlElement",
+  "methods":[{"name":"type","parameterTypes":[] }]
+},
+{
+  "name":"javax.xml.bind.annotation.XmlElementDecl",
+  "methods":[{"name":"scope","parameterTypes":[] }]
+},
+{
+  "name":"javax.xml.bind.annotation.XmlRegistry"
+},
+{
+  "name":"javax.xml.bind.annotation.XmlType",
+  "methods":[{"name":"factoryClass","parameterTypes":[] }]
+},
+{
+  "name":"javax.xml.ws.RequestWrapper",
+  "methods":[{"name":"partName","parameterTypes":[] }]
+},
+{
+  "name":"javax.xml.ws.ResponseWrapper",
+  "methods":[{"name":"partName","parameterTypes":[] }]
+},
+{
+  "name":"javax.xml.ws.WebFault",
+  "methods":[{"name":"messageName","parameterTypes":[] }]
+},
+{
+  "name":"jdk.internal.misc.Unsafe",
+  "methods":[{"name":"getUnsafe","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.binding.AbstractBindingFactory",
+  "fields":[{"name":"bus"}]
+},
+{
+  "name":"org.apache.cxf.binding.soap.SoapBindingFactory",
+  "fields":[{"name":"DEFAULT_NAMESPACES"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.binding.soap.SoapTransportFactory",
+  "fields":[{"name":"DEFAULT_NAMESPACES"}],
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.binding.xml.XMLBindingFactory",
+  "fields":[{"name":"DEFAULT_NAMESPACES"}]
+},
+{
+  "name":"org.apache.cxf.binding.xml.wsdl11.XMLWSDLExtensionLoader",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.bindings.xformat.ObjectFactory",
+  "allDeclaredMethods":true
+},
+{
+  "name":"org.apache.cxf.bindings.xformat.XMLBindingMessageFormat",
+  "methods":[{"name":"getOtherAttributes","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.bindings.xformat.XMLFormatBinding",
+  "methods":[{"name":"getOtherAttributes","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.bus.managers.CXFBusLifeCycleManager",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.bus.managers.ClientLifeCycleManagerImpl"
+},
+{
+  "name":"org.apache.cxf.bus.managers.EndpointResolverRegistryImpl"
+},
+{
+  "name":"org.apache.cxf.bus.managers.HeaderManagerImpl"
+},
+{
+  "name":"org.apache.cxf.bus.managers.PhaseManagerImpl",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.bus.managers.ServerLifeCycleManagerImpl",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.bus.managers.ServerRegistryImpl",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.bus.managers.WorkQueueManagerImpl"
+},
+{
+  "name":"org.apache.cxf.bus.resource.ResourceManagerImpl"
+},
+{
+  "name":"org.apache.cxf.buslifecycle.BusLifeCycleManager"
+},
+{
+  "name":"org.apache.cxf.catalog.OASISCatalogManager"
+},
+{
+  "name":"org.apache.cxf.common.spi.ClassLoaderProxyService"
+},
+{
+  "name":"org.apache.cxf.common.util.ASMHelper"
+},
+{
+  "name":"org.apache.cxf.common.util.ASMHelperImpl",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.common.util.ASMHelperImpl$2",
+  "methods":[
+    {"name":"getValue","parameterTypes":[] }, 
+    {"name":"realType","parameterTypes":[] }
+  ]
+},
+{
+  "name":"org.apache.cxf.common.util.OpcodesProxy",
+  "allDeclaredFields":true
+},
+{
+  "name":"org.apache.cxf.endpoint.ServerLifeCycleManager"
+},
+{
+  "name":"org.apache.cxf.endpoint.ServerRegistry"
+},
+{
+  "name":"org.apache.cxf.endpoint.dynamic.ExceptionClassCreatorProxyService"
+},
+{
+  "name":"org.apache.cxf.ext.logging.LoggingBusLifecycleListener"
+},
+{
+  "name":"org.apache.cxf.ext.logging.LoggingFactoryBeanListener",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.ext.logging.OldLoggingFactoryBeanListener",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.jaxb.FactoryClassProxyService"
+},
+{
+  "name":"org.apache.cxf.jaxb.JAXBDataBinding",
+  "methods":[{"name":"<init>","parameterTypes":["boolean","java.util.Map"] }]
+},
+{
+  "name":"org.apache.cxf.jaxb.WrapperHelperCreator"
+},
+{
+  "name":"org.apache.cxf.jaxb.WrapperHelperProxyService",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.jaxws.context.WebServiceContextResourceResolver",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.jaxws.spi.WrapperClassCreator"
+},
+{
+  "name":"org.apache.cxf.jaxws.spi.WrapperClassCreatorProxyService",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.phase.PhaseManager"
+},
+{
+  "name":"org.apache.cxf.policy.PolicyDataEngine"
+},
+{
+  "name":"org.apache.cxf.service.factory.FactoryBeanListenerManager",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.transport.http.HTTPTransportFactory",
+  "fields":[{"name":"DEFAULT_NAMESPACES"}],
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.transport.http.HTTPWSDLExtensionLoader",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.transport.http.netty.server.NettyHttpDestinationFactory",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.transport.http.netty.server.NettyHttpServerEngineFactory",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.transport.http.netty.server.NettyHttpServletHandler",
+  "methods":[
+    {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, 
+    {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, 
+    {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }, 
+    {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }
+  ]
+},
+{
+  "name":"org.apache.cxf.transport.http.netty.server.NettyHttpServletPipelineFactory"
+},
+{
+  "name":"org.apache.cxf.transport.http.netty.server.NettyHttpTransportFactory"
+},
+{
+  "name":"org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder"
+},
+{
+  "name":"org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder"
+},
+{
+  "name":"org.apache.cxf.transport.http.policy.NoOpPolicyInterceptorProvider"
+},
+{
+  "name":"org.apache.cxf.transports.http.configuration.HTTPClientPolicy",
+  "methods":[{"name":"getOtherAttributes","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.transports.http.configuration.HTTPServerPolicy",
+  "methods":[{"name":"getOtherAttributes","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.transports.http.configuration.ObjectFactory",
+  "allDeclaredMethods":true
+},
+{
+  "name":"org.apache.cxf.ws.addressing.impl.AddressingFeatureApplier"
+},
+{
+  "name":"org.apache.cxf.ws.addressing.impl.AddressingWSDLExtensionLoader",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.addressing.impl.MAPAggregatorImplLoader"
+},
+{
+  "name":"org.apache.cxf.ws.addressing.policy.AddressingAssertionBuilder"
+},
+{
+  "name":"org.apache.cxf.ws.addressing.policy.AddressingPolicyInterceptorProvider"
+},
+{
+  "name":"org.apache.cxf.ws.addressing.policy.UsingAddressingAssertionBuilder"
+},
+{
+  "name":"org.apache.cxf.ws.addressing.wsdl.ObjectFactory",
+  "allDeclaredMethods":true
+},
+{
+  "name":"org.apache.cxf.ws.addressing.wsdl.UsingAddressing",
+  "methods":[{"name":"getOtherAttributes","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.AssertionBuilderRegistry"
+},
+{
+  "name":"org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyAnnotationListener",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyBuilder"
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyBuilderImpl",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyDataEngineImpl",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyEngine"
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyEngineImpl",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyInterceptorProviderRegistry"
+},
+{
+  "name":"org.apache.cxf.ws.policy.PolicyInterceptorProviderRegistryImpl",
+  "fields":[{"name":"bus"}],
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.attachment.ServiceModelPolicyProvider",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.attachment.external.DomainExpressionBuilderRegistry"
+},
+{
+  "name":"org.apache.cxf.ws.policy.attachment.external.EndpointReferenceDomainExpressionBuilder"
+},
+{
+  "name":"org.apache.cxf.ws.policy.attachment.external.URIDomainExpressionBuilder"
+},
+{
+  "name":"org.apache.cxf.ws.policy.attachment.wsdl11.Wsdl11AttachmentPolicyProvider",
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.ws.policy.mtom.MTOMAssertionBuilder"
+},
+{
+  "name":"org.apache.cxf.ws.policy.mtom.MTOMPolicyInterceptorProvider"
+},
+{
+  "name":"org.apache.cxf.wsdl.ExtensionClassCreator"
+},
+{
+  "name":"org.apache.cxf.wsdl.ExtensionClassCreatorProxyService",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":["org.apache.cxf.Bus"] }]
+},
+{
+  "name":"org.apache.cxf.wsdl.WSDLManager"
+},
+{
+  "name":"org.apache.cxf.wsdl.http.AddressType",
+  "methods":[{"name":"getOtherAttributes","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.cxf.wsdl.http.ObjectFactory",
+  "allDeclaredMethods":true
+},
+{
+  "name":"org.apache.cxf.wsdl11.WSDLManagerImpl",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.handlers.AddNumbers",
+  "allPublicMethods":true
+},
+{
+  "name":"org.apache.handlers.AddNumbersFault",
+  "methods":[{"name":"getFaultInfo","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.handlers.types.AddNumbers",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.handlers.types.AddNumbersResponse",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.handlers.types.FaultDetail",
+  "allDeclaredFields":true,
+  "allDeclaredMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.apache.handlers.types.ObjectFactory",
+  "allDeclaredMethods":true,
+  "allPublicMethods":true,
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.jvnet.staxex.XMLStreamReaderEx"
+},
+{
+  "name":"org.jvnet.staxex.XMLStreamWriterEx"
+},
+{
+  "name":"org.objectweb.asm.AnnotationWriter",
+  "methods":[{"name":"visitEnd","parameterTypes":[] }]
+},
+{
+  "name":"org.objectweb.asm.ClassWriter",
+  "fields":[
+    {"name":"COMPUTE_FRAMES"}, 
+    {"name":"COMPUTE_MAXS"}
+  ],
+  "methods":[
+    {"name":"<init>","parameterTypes":["int"] }, 
+    {"name":"toByteArray","parameterTypes":[] }, 
+    {"name":"visit","parameterTypes":["int","int","java.lang.String","java.lang.String","java.lang.String","java.lang.String[]"] }, 
+    {"name":"visitEnd","parameterTypes":[] }, 
+    {"name":"visitField","parameterTypes":["int","java.lang.String","java.lang.String","java.lang.String","java.lang.Object"] }, 
+    {"name":"visitMethod","parameterTypes":["int","java.lang.String","java.lang.String","java.lang.String","java.lang.String[]"] }, 
+    {"name":"visitSource","parameterTypes":["java.lang.String","java.lang.String"] }
+  ]
+},
+{
+  "name":"org.objectweb.asm.FieldWriter",
+  "methods":[{"name":"visitEnd","parameterTypes":[] }]
+},
+{
+  "name":"org.objectweb.asm.Label",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"org.objectweb.asm.MethodVisitor",
+  "methods":[{"name":"visitFrame","parameterTypes":["int","int","java.lang.Object[]","int","java.lang.Object[]"] }]
+},
+{
+  "name":"org.objectweb.asm.MethodWriter",
+  "allPublicMethods":true
+},
+{
+  "name":"org.objectweb.asm.Opcodes",
+  "fields":[
+    {"name":"AALOAD"}, 
+    {"name":"ACC_ABSTRACT"}, 
+    {"name":"ACC_FINAL"}, 
+    {"name":"ACC_INTERFACE"}, 
+    {"name":"ACC_PRIVATE"}, 
+    {"name":"ACC_PUBLIC"}, 
+    {"name":"ACC_STATIC"}, 
+    {"name":"ACC_SUPER"}, 
+    {"name":"ACC_SYNTHETIC"}, 
+    {"name":"ACONST_NULL"}, 
+    {"name":"ALOAD"}, 
+    {"name":"ANEWARRAY"}, 
+    {"name":"ARETURN"}, 
+    {"name":"ARRAYLENGTH"}, 
+    {"name":"ASTORE"}, 
+    {"name":"ATHROW"}, 
+    {"name":"CHECKCAST"}, 
+    {"name":"DCONST_0"}, 
+    {"name":"DUP"}, 
+    {"name":"FCONST_0"}, 
+    {"name":"F_APPEND"}, 
+    {"name":"F_SAME"}, 
+    {"name":"F_SAME1"}, 
+    {"name":"GETFIELD"}, 
+    {"name":"GETSTATIC"}, 
+    {"name":"GOTO"}, 
+    {"name":"ICONST_0"}, 
+    {"name":"ICONST_1"}, 
+    {"name":"IFNONNULL"}, 
+    {"name":"IFNULL"}, 
+    {"name":"IF_ICMPLT"}, 
+    {"name":"ILOAD"}, 
+    {"name":"INTEGER"}, 
+    {"name":"INVOKEINTERFACE"}, 
+    {"name":"INVOKESPECIAL"}, 
+    {"name":"INVOKESTATIC"}, 
+    {"name":"INVOKEVIRTUAL"}, 
+    {"name":"IRETURN"}, 
+    {"name":"ISTORE"}, 
+    {"name":"LCONST_0"}, 
+    {"name":"NEW"}, 
+    {"name":"POP"}, 
+    {"name":"PUTFIELD"}, 
+    {"name":"PUTSTATIC"}, 
+    {"name":"RETURN"}, 
+    {"name":"SIPUSH"}, 
+    {"name":"V1_5"}, 
+    {"name":"V1_6"}, 
+    {"name":"V1_7"}
+  ]
+},
+{
+  "name":"org.slf4j.LoggerFactory",
+  "methods":[{"name":"getILoggerFactory","parameterTypes":[] }]
+},
+{
+  "name":"org.slf4j.impl.StaticLoggerBinder"
+},
+{
+  "name":"org.w3c.dom.Node",
+  "methods":[
+    {"name":"getUserData","parameterTypes":["java.lang.String"] }, 
+    {"name":"setUserData","parameterTypes":["java.lang.String","java.lang.Object","org.w3c.dom.UserDataHandler"] }
+  ]
+},
+{
+  "name":"org.w3c.dom.UserDataHandler"
+},
+{
+  "name":"sun.misc.Unsafe",
+  "fields":[{"name":"theUnsafe"}],
+  "methods":[
+    {"name":"copyMemory","parameterTypes":["java.lang.Object","long","java.lang.Object","long","long"] }, 
+    {"name":"getAndAddLong","parameterTypes":["java.lang.Object","long","long"] }, 
+    {"name":"getAndSetObject","parameterTypes":["java.lang.Object","long","java.lang.Object"] }, 
+    {"name":"invokeCleaner","parameterTypes":["java.nio.ByteBuffer"] }
+  ]
+},
+{
+  "name":"sun.nio.ch.SelectorImpl",
+  "fields":[
+    {"name":"publicSelectedKeys", "allowUnsafeAccess":true}, 
+    {"name":"selectedKeys", "allowUnsafeAccess":true}
+  ]
+},
+{
+  "name":"sun.security.provider.DRBG",
+  "methods":[{"name":"<init>","parameterTypes":["java.security.SecureRandomParameters"] }]
+},
+{
+  "name":"sun.security.provider.SHA",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+},
+{
+  "name":"sun.security.provider.SHA2$SHA256",
+  "methods":[{"name":"<init>","parameterTypes":[] }]
+}
+]
diff --git a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_server/resource-config.json b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_server/resource-config.json
new file mode 100644
index 0000000..4de452a
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm_dynamic_server/resource-config.json
@@ -0,0 +1,56 @@
+{
+  "resources":{
+  "includes":[
+    {"pattern":"\\QMETA-INF/cxf/bus-extensions.txt\\E"}, 
+    {"pattern":"\\QMETA-INF/io.netty.versions.properties\\E"}, 
+    {"pattern":"\\QMETA-INF/mailcap.default\\E"}, 
+    {"pattern":"\\QMETA-INF/services/javax.xml.bind.JAXBContextFactory\\E"}, 
+    {"pattern":"\\QMETA-INF/services/javax.xml.stream.XMLEventFactory\\E"}, 
+    {"pattern":"\\QMETA-INF/services/javax.xml.stream.XMLInputFactory\\E"}, 
+    {"pattern":"\\QMETA-INF/services/javax.xml.stream.XMLOutputFactory\\E"}, 
+    {"pattern":"\\QMETA-INF/services/javax.xml.ws.spi.Provider\\E"}, 
+    {"pattern":"\\Qorg/apache/cxf/version/version.properties\\E"}, 
+    {"pattern":"\\Qorg/slf4j/impl/StaticLoggerBinder.class\\E"}, 
+    {"pattern":"\\Qschemas/wsdl/ws-addr-wsdl.xsd\\E"}, 
+    {"pattern":"\\Qschemas/wsdl/ws-addr.xsd\\E"}, 
+    {"pattern":"\\Qschemas/wsdl/wsrm.xsd\\E"}
+  ]},
+  "bundles":[
+    {"name":"javax.servlet.LocalStrings"}, 
+    {"name":"org.apache.cxf.Messages"}, 
+    {"name":"org.apache.cxf.binding.soap.interceptor.Messages"}, 
+    {"name":"org.apache.cxf.binding.soap.saaj.Messages"}, 
+    {"name":"org.apache.cxf.bus.extension.Messages"}, 
+    {"name":"org.apache.cxf.bus.managers.Messages"}, 
+    {"name":"org.apache.cxf.common.annotation.Messages"}, 
+    {"name":"org.apache.cxf.common.injection.Messages"}, 
+    {"name":"org.apache.cxf.common.jaxb.Messages"}, 
+    {"name":"org.apache.cxf.common.util.Messages"}, 
+    {"name":"org.apache.cxf.endpoint.Messages"}, 
+    {"name":"org.apache.cxf.frontend.Messages"}, 
+    {"name":"org.apache.cxf.interceptor.Messages"}, 
+    {"name":"org.apache.cxf.jaxb.Messages"}, 
+    {"name":"org.apache.cxf.jaxb.attachment.Messages"}, 
+    {"name":"org.apache.cxf.jaxws.Messages"}, 
+    {"name":"org.apache.cxf.jaxws.binding.soap.Messages"}, 
+    {"name":"org.apache.cxf.jaxws.context.Messages"}, 
+    {"name":"org.apache.cxf.jaxws.handler.Messages"}, 
+    {"name":"org.apache.cxf.jaxws.interceptors.Messages"}, 
+    {"name":"org.apache.cxf.jaxws.spi.Messages"}, 
+    {"name":"org.apache.cxf.jaxws.support.Messages"}, 
+    {"name":"org.apache.cxf.resource.Messages"}, 
+    {"name":"org.apache.cxf.service.factory.Messages"}, 
+    {"name":"org.apache.cxf.service.invoker.Messages"}, 
+    {"name":"org.apache.cxf.service.model.Messages"}, 
+    {"name":"org.apache.cxf.staxutils.Messages"}, 
+    {"name":"org.apache.cxf.transport.http.Messages"}, 
+    {"name":"org.apache.cxf.transport.http.netty.server.Messages"}, 
+    {"name":"org.apache.cxf.transport.https.Messages"}, 
+    {"name":"org.apache.cxf.ws.addressing.Messages"}, 
+    {"name":"org.apache.cxf.ws.policy.Messages"}, 
+    {"name":"org.apache.cxf.ws.policy.attachment.Messages"}, 
+    {"name":"org.apache.cxf.wsdl.Messages"}, 
+    {"name":"org.apache.cxf.wsdl.interceptors.Messages"}, 
+    {"name":"org.apache.cxf.wsdl.service.factory.Messages"}
+  ]
+}
diff --git a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/resources/addNumbers.wsdl b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/resources/addNumbers.wsdl
new file mode 100644
index 0000000..415c688
--- /dev/null
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/resources/addNumbers.wsdl
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements. See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership. The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License. You may obtain a copy of the License at
+
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied. See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<definitions xmlns:tns="http://apache.org/handlers" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:x1="http://apache.org/handlers/types" name="AddNumbers" targetNamespace="http://apache.org/handlers">
+    <types>
+        <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://apache.org/handlers/types" elementFormDefault="qualified">
+            <complexType name="addNumbersResponse">
+                <sequence>
+                    <element name="return" type="xsd:int"/>
+                </sequence>
+            </complexType>
+            <element name="addNumbersResponse" type="x1:addNumbersResponse"/>
+            <complexType name="addNumbers">
+                <sequence>
+                    <element name="arg0" type="xsd:int"/>
+                    <element name="arg1" type="xsd:int"/>
+                </sequence>
+            </complexType>
+            <element name="addNumbers" type="x1:addNumbers"/>
+            <element name="FaultDetail" type="x1:FaultDetail"/>
+            <complexType name="FaultDetail">
+                <sequence>
+                    <element name="faultInfo" type="xsd:string"/>
+                    <element name="message" type="xsd:string"/>
+                </sequence>
+            </complexType>
+        </xsd:schema>
+    </types>
+    <message name="addNumbers">
+        <part name="parameters" element="x1:addNumbers"/>
+    </message>
+    <message name="addNumbersResponse">
+        <part name="result" element="x1:addNumbersResponse"/>
+    </message>
+    <message name="addNumbersFault">
+        <part name="AddNumbersFault" element="x1:FaultDetail"/>
+    </message>
+    <portType name="AddNumbers">
+        <operation name="addNumbers">
+            <input message="tns:addNumbers"/>
+            <output message="tns:addNumbersResponse"/>
+            <fault name="addNumbersFault" message="tns:addNumbersFault"/>
+        </operation>
+    </portType>
+    <binding name="AddNumbersBinding" type="tns:AddNumbers">
+        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+        <operation name="addNumbers">
+            <soap:operation soapAction=""/>
+            <input>
+                <soap:body use="literal"/>
+            </input>
+            <output>
+                <soap:body use="literal"/>
+            </output>
+            <fault name="addNumbersFault">
+                <soap:fault name="addNumbersFault" use="literal"/>
+            </fault>
+        </operation>
+    </binding>
+    <service name="AddNumbersService">
+        <port name="AddNumbersPort" binding="tns:AddNumbersBinding">
+            <soap:address location="http://localhost:9000/handlers/AddNumbersService/AddNumbersPort"/>
+        </port>
+    </service>
+</definitions>
diff --git a/distribution/src/main/release/samples/pom.xml b/distribution/src/main/release/samples/pom.xml
index 356e4a8..a83b143 100644
--- a/distribution/src/main/release/samples/pom.xml
+++ b/distribution/src/main/release/samples/pom.xml
@@ -145,6 +145,9 @@
         <module>wsdl_first_soap12</module>
         <module>wsdl_first_xml_wrapped</module>
         <module>jax_rs/description_openapi_microprofile_spring</module>
+        <module>jaxws_graalvm</module>
+        <module>jaxws_graalvm_dynamic/client</module>
+        <module>jaxws_graalvm_dynamic/server</module>
     </modules>
     <dependencyManagement>
         <dependencies>