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/21 04:01:06 UTC

[cxf] branch 3.3.x-fixes updated (ce5e911 -> 3963d2f)

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

reta pushed a change to branch 3.3.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git.


    from ce5e911  Recording .gitmergeinfo Changes
     new 8922e6f  CXF-8340: GraalVM native image fails to run. Added sample projects, minor changes
     new f99b4eb  CXF-8340: GraalVM native image fails to run. Fixed sample projects parent pom.xml
     new b08a4fa  CXF-8340: GraalVM native image fails to run. Minor fixes
     new 3963d2f  Recording .gitmergeinfo Changes

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .gitmergeinfo                                      |   6 +
 .../cxf/common/spi/ClassGeneratorClassLoader.java  |   3 +-
 .../cxf/common/spi/GeneratedClassClassLoader.java  |   4 +-
 .../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             |   0
 .../samples/jaxws_graalvm_dynamic/README.txt       |  72 ++
 .../samples/jaxws_graalvm_dynamic/client/pom.xml   | 105 +++
 .../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     |   0
 .../samples/jaxws_graalvm_dynamic/server/pom.xml   | 106 +++
 .../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     |   0
 distribution/src/main/release/samples/pom.xml      |   3 +
 45 files changed, 4848 insertions(+), 7 deletions(-)
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm/README.txt
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm/pom.xml
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/client/jni-config.json
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/client/proxy-config.json
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/client/reflect-config.json
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/client/resource-config.json
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/server/jni-config.json
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/server/proxy-config.json
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/server/reflect-config.json
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm/src/graalvm/server/resource-config.json
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm/src/main/java/demo/jaxws/client/Client.java
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm/src/main/java/demo/jaxws/server/AddNumbersImpl.java
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm/src/main/java/demo/jaxws/server/Server.java
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm/src/main/resources/META-INF/native-image/org.apache.cxf.samples/jaxws_graalvm/native-image.properties
 copy distribution/src/main/release/samples/{jaxws_handlers => jaxws_graalvm}/src/main/resources/addNumbers.wsdl (100%)
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm_dynamic/README.txt
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/pom.xml
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/demo/jaxws/client/Client.java
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/demo/jaxws/client/ClientCapture.java
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/demo/jaxws/client/DumpingClassLoaderCapturer.java
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/org/apache/handlers/AddNumbers.java
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/org/apache/handlers/AddNumbersFault.java
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/org/apache/handlers/types/FaultDetail.java
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/src/main/java/org/apache/handlers/types/package-info.java
 create mode 100644 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
 create mode 100644 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
 create mode 100644 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
 create mode 100644 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
 create mode 100644 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
 copy distribution/src/main/release/samples/{jaxws_handlers => jaxws_graalvm_dynamic/client}/src/main/resources/addNumbers.wsdl (100%)
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/pom.xml
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/java/demo/jaxws/server/AddNumbersImpl.java
 create mode 100644 distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/src/main/java/demo/jaxws/server/Server.java
 create mode 100644 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
 create mode 100644 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
 create mode 100644 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
 create mode 100644 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
 create mode 100644 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
 copy distribution/src/main/release/samples/{jaxws_handlers => jaxws_graalvm_dynamic/server}/src/main/resources/addNumbers.wsdl (100%)


[cxf] 01/04: CXF-8340: GraalVM native image fails to run. Added sample projects, minor changes

Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

reta pushed a commit to branch 3.3.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git

commit 8922e6fa6ce0eb4bdf5be2bced945c8f2c489698
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
    
    (cherry picked from commit 17ae5b56dea7f1d460cf2ecd4db9dd89ab3a9acd)
    
    # Conflicts:
    #	core/src/main/java/org/apache/cxf/common/spi/GeneratedClassClassLoaderCapture.java
    #	distribution/src/main/release/samples/pom.xml
---
 .../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 b71d582..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 GeneratedWrapperClassLoader(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..3fa7cc0
--- /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.3.9-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..065706e
--- /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.3.9-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..2d6f058
--- /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.3.9-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 b54396a..1a447b6 100644
--- a/distribution/src/main/release/samples/pom.xml
+++ b/distribution/src/main/release/samples/pom.xml
@@ -144,6 +144,9 @@
         <module>wsdl_first_rpclit</module>
         <module>wsdl_first_soap12</module>
         <module>wsdl_first_xml_wrapped</module>
+        <module>jaxws_graalvm</module>
+        <module>jaxws_graalvm_dynamic/client</module>
+        <module>jaxws_graalvm_dynamic/server</module>
     </modules>
     <dependencyManagement>
         <dependencies>


[cxf] 03/04: CXF-8340: GraalVM native image fails to run. Minor fixes

Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

reta pushed a commit to branch 3.3.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git

commit b08a4fad28b97d8d636a214c178d47164cb363e5
Author: reta <dr...@gmail.com>
AuthorDate: Sun Dec 20 18:29:04 2020 -0500

    CXF-8340: GraalVM native image fails to run. Minor fixes
    
    (cherry picked from commit 15185954d24578b3a848afe5bf258d9774ff03b6)
---
 .../main/java/org/apache/cxf/common/spi/ClassGeneratorClassLoader.java | 3 ++-
 .../main/java/org/apache/cxf/common/spi/GeneratedClassClassLoader.java | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/core/src/main/java/org/apache/cxf/common/spi/ClassGeneratorClassLoader.java b/core/src/main/java/org/apache/cxf/common/spi/ClassGeneratorClassLoader.java
index f7cc719..442deb5 100644
--- a/core/src/main/java/org/apache/cxf/common/spi/ClassGeneratorClassLoader.java
+++ b/core/src/main/java/org/apache/cxf/common/spi/ClassGeneratorClassLoader.java
@@ -104,11 +104,12 @@ public class ClassGeneratorClassLoader {
     }
 
     public static class TypeHelperClassLoader extends ClassLoader {
-        ConcurrentHashMap<String, Class<?>> defined = new ConcurrentHashMap<>();
+        private final ConcurrentHashMap<String, Class<?>> defined = new ConcurrentHashMap<>();
 
         TypeHelperClassLoader(ClassLoader parent) {
             super(parent);
         }
+        
         public Class<?> lookupDefinedClass(String name) {
             return defined.get(StringUtils.slashesToPeriod(name));
         }
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 320ee52..7f3b2dd 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
@@ -69,7 +69,7 @@ public class GeneratedClassClassLoader {
     }
 
     public static class TypeHelperClassLoader extends ClassLoader {
-        ConcurrentHashMap<String, Class<?>> defined = new ConcurrentHashMap<>();
+        private final ConcurrentHashMap<String, Class<?>> defined = new ConcurrentHashMap<>();
 
         TypeHelperClassLoader(ClassLoader parent) {
             super(parent);


[cxf] 04/04: Recording .gitmergeinfo Changes

Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

reta pushed a commit to branch 3.3.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git

commit 3963d2f46d12be192363643ac18b562bacca92a1
Author: reta <dr...@gmail.com>
AuthorDate: Sun Dec 20 23:00:42 2020 -0500

    Recording .gitmergeinfo Changes
---
 .gitmergeinfo | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/.gitmergeinfo b/.gitmergeinfo
index d32340a..dd52d8c 100644
--- a/.gitmergeinfo
+++ b/.gitmergeinfo
@@ -487,6 +487,7 @@ M 160f50ed9bd9391b61417716b3a67653c9e81a98
 M 169be66c11851d723e4a8d93f752e0b3dff1fa60
 M 16d285838dc2209ca84af21723478f199403c2b7
 M 177afff3595c2a248e55457809118e842e1593f4
+M 17ae5b56dea7f1d460cf2ecd4db9dd89ab3a9acd
 M 180578d01f361d77ce7f42dd760fa8d5f245ce7e
 M 1820f1a94b08ba840c3868ac3e1f3b7751540a08
 M 1e3817e3f7d51d093bff81d2520fb7cef82f0df8
@@ -501,6 +502,7 @@ M 2a5629fc31676b9397233fa4819d7810bd2482ae
 M 2cde96f38fc835f7d0eb1e303037e572110c3399
 M 2e3258cfa57a93b92d5ab17ce85a66ce9bdd5ffe
 M 2e3631a3a7ddb4551c12ef67aef04ce90d635fe1
+M 2f844e251362ab62923cfc6b7061591375a1cb44
 M 325ed0436bc9cfa9150b3504a54b5911b47e3266
 M 330f0f9d83c5e689a8db3c107b3d27a294161bbb
 M 336d49d4e88641a6ffaf757185ff0ff93473322c
@@ -513,11 +515,13 @@ M 3c855f79bfe7114e496d2d4c67a1815b22eebe6f
 M 3cadca3cf0df538934806297bf2d904d01f90472
 M 3dfe11c866073ff93951dac2b94e0f8e8e464b27
 M 4162189dabdb22aec54dc3c5ae93cf42b0575d3d
+M 420f6f35915cbd50cc175a6a10359125516b0213
 M 464e41a12dea11a00c86a370b31d7a7f009cb8e9
 M 4699995c6ef392a98615382a5824dda0d1bbe9bf
 M 49b765b1424d097757a53e4dbfadcde285a7a884
 M 49c1ca37a066dbfe0f4f32313da7ee4cdce61a15
 M 4b43096d1d79d3ba8e169eff1f09b38ea3ec929e
+M 4c3c5196be3e9295c31b5bc592ebc8f911c93c6d
 M 4d95d191ad25559deca8d5f010d5021446c1beed
 M 528b35178ec31860cf5ad2095d6f3cc3c951d914
 M 55abc6f8416fd81f26627fa42a37f903f9ef7965
@@ -558,6 +562,7 @@ M 7da863a6c524aae01d18d6fab78f789e6ba85bf0
 M 7e1bc67acf02fe6049a4bfb7e13fe6933e618ae8
 M 7ef814556d727c147d6f625cbb1170edfd24a752
 M 7f733555945f1faed66b0b6163d24889d4cf60fc
+M 8100e4d9512b2fd9ce2fe30a4b7feeaab1d691a5
 M 83c9d2701fbf4ed54bd704ca7c4cf67f57e1048d
 M 84bc3830fb3d320f843b43d86e90d8a7e7e871d4
 M 8b11d6b26369650e5f4c6f3730dbb97d60927d9b
@@ -626,6 +631,7 @@ M e72ad770c9a8f4439b93e2c19e61c43562ac5877
 M edd100917a2f73e43d6e9e34efdc09a854f5c942
 M eded3ad6d5f716f08709f1cc57cfe339d9b61c33
 M ee2cfb039edbe35a6404350de877361ce62c821d
+M eef3b3514b2ea039d9026ec85d4289382277591f
 M f22022b1f094efdcc81b63d9f3f10b85894fcdb8
 M f355b9b3ec8b6f77198baefa051bd817807e5a94
 M f3e2a52faec1210b1a45eaa36e3812ca03a4969d


[cxf] 02/04: CXF-8340: GraalVM native image fails to run. Fixed sample projects parent pom.xml

Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

reta pushed a commit to branch 3.3.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git

commit f99b4eb0c725155eb4cf9b71c7a85df9b12fd24e
Author: reta <dr...@gmail.com>
AuthorDate: Sun Dec 20 17:57:54 2020 -0500

    CXF-8340: GraalVM native image fails to run. Fixed sample projects parent pom.xml
    
    (cherry picked from commit eef3b3514b2ea039d9026ec85d4289382277591f)
    
    # Conflicts:
    #	distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/pom.xml
    #	distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/pom.xml
---
 .../src/main/release/samples/jaxws_graalvm_dynamic/client/pom.xml        | 1 +
 .../src/main/release/samples/jaxws_graalvm_dynamic/server/pom.xml        | 1 +
 2 files changed, 2 insertions(+)

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
index 065706e..30b6855 100644
--- a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/pom.xml
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/client/pom.xml
@@ -26,6 +26,7 @@
         <groupId>org.apache.cxf.samples</groupId>
         <artifactId>cxf-samples</artifactId>
         <version>3.3.9-SNAPSHOT</version>
+        <relativePath>../..</relativePath>
     </parent>
     <properties>
         <cxf.version>${project.version}</cxf.version>
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
index 2d6f058..bf8379c 100644
--- a/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/pom.xml
+++ b/distribution/src/main/release/samples/jaxws_graalvm_dynamic/server/pom.xml
@@ -26,6 +26,7 @@
         <groupId>org.apache.cxf.samples</groupId>
         <artifactId>cxf-samples</artifactId>
         <version>3.3.9-SNAPSHOT</version>
+        <relativePath>../..</relativePath>
     </parent>
     <properties>
         <cxf.version>${project.version}</cxf.version>