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, build server:
  
  mvn clean 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: bin\jaxws-demo-server.exe
  On Linux: ./bin/jaxws-demo-server

Than build client:
  
  mvn clean 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: bin\jaxws-demo-client.exe src\main\resources\addNumbers.wsdl
  On Linux: ./bin/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/ 
