include::../shared-doc/attributes.adoc[]

= jaxws-retail: A Retail JAX-WS Web Service
:author: R Searls
:level: Beginner
:technologies: JAX-WS

[abstract]
The `jaxws-retail` quickstart is a working example of a simple web service endpoint.

:standalone-server-type: default
:archiveType: war
// Override the archive directory
:archiveDir: {artifactId}/service/target
// Override the archive name
:archiveName: {artifactId}-service

== What is it?

The `jaxws-retail` quickstart demonstrates the use of _JAX-WS_ in {productNameFull} as a simple profile management application. It also demonstrates usage of wsconsume to generate classes from WSDL file.

// System Requirements
include::../shared-doc/system-requirements.adoc[leveloffset=+1]
// Use of {jbossHomeName}
include::../shared-doc/use-of-jboss-home-name.adoc[leveloffset=+1]
// Start the {productName} Standalone Server
include::../shared-doc/start-the-standalone-server.adoc[leveloffset=+1]
// Install the Quickstart Parent Artifact in Maven
include::../shared-doc/install-quickstart-parent-artifact.adoc[leveloffset=+1]
// Build and Deploy the Quickstart
include::../shared-doc/build-and-deploy-the-quickstart.adoc[leveloffset=+1]

== Server Log: Expected Warnings and Errors

You will see the following errors and warnings in the server log. These messages come from the `jaxws-tools-maven-plugin` plugin that generates source files based on the WSDL. You can ignore these warnings.

[source,options="nowrap"]
----
[INFO] Could not find log4j.xml configuration, logging to console.
[INFO]
[INFO] TODO! Cheek SOAP 1.2 extension
[ERROR] log4j:WARN No appenders could be found for logger (org.apache.cxf.common.logging.LogUtils).
[ERROR] log4j:WARN Please initialize the log4j system properly.
[ERROR] log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
----

You might also see the following errors if your Linux environment defines a BASH_FUNC_scl() function. You can ignore these errors.

[source,options="nowrap"]
----
[ERROR] /bin/sh: scl: line 1: syntax error: unexpected end of file
[ERROR] /bin/sh: error importing function definition for `BASH_FUNC_scl`
----

== Access the Application

You can check that the Web Service is running and deployed correctly by accessing the following URL: http://localhost:8080/{artifactId}/ProfileMgmtService/ProfileMgmt?wsdl. This URL will display the deployed WSDL endpoint for the Web Service.

== Run the Client

. Make sure you xref:install_the_quickstart_parent_artifact_in_maven[Install the Quickstart Parent Artifact in Maven].

. Verify that the service is deployed properly.

. Open a terminal and navigate into the client directory of this quickstart.
+
[source,options="nowrap"]
----
$ cd client/
----

. Type this command to run the client.
+
[source,options="nowrap"]
----
$ mvn exec:java
----

. You should see the following output in the client console.
+
[source,options="nowrap"]
----
Jay Boss's discount is 10.00
----

// Undeploy the Quickstart
include::../shared-doc/undeploy-the-quickstart.adoc[leveloffset=+1]
// Run the Quickstart in Red Hat JBoss Developer Studio or Eclipse
include::../shared-doc/run-the-quickstart-in-jboss-developer-studio.adoc[leveloffset=+1]

// Additional JBoss Developer Studio instructions
This quickstart is dependent on a WSDL file that is included in the `{artifactId}-service` project, so it deploys and runs differently in JBoss Developer Studio than the other quickstarts.

When you import this project into JBoss Developer Studio, you see 17 errors. These `Java Problems` are because these classes are not included in this project. Instead, they are defined in and generated from the `{artifactId}-service/src/main/webapp/WEB-INF/wsdl/ProfileMgmtService.wsdl` WSDL file. You can ignore these errors.

This quickstart requires that you build the parent project, deploy the service, and then run the client.

. To build the parent project, right-click on the *{artifactId}* project and choose *Run As* –> *Maven install*.
. To deploy the service:
** Right-click on the *{artifactId}-service* project and choose *Run As* –> *Maven install*.
** In the *{artifactId}-service* project, select the *target/generated-sources/wsconsume* folder and choose *Build Path* –> *Use as Source Folder*.
** Right-click on the *jaxws-retail-service* project and choose *Run As* –> *Run on Server*.
** Select the JBoss EAP server and click *Finish*.
** You should see the following message in the *Console* tab:
+
[source,subs="+quotes,attributes+",options="nowrap"]
----
WFLYSRV0010: Deployed &quot;{artifactId}-service.war&quot;
----
** You also see the "404 - Not Found" error in the application window. This is because there is no user interface for this quickstart. You can ignore this error.

. To run the application:

** To access the application, right-click on the *{artifactId}-client* project and choose *Run As* –> *Java Application*.
** Choose the *Client* class and click *OK*.
** Review the output in the console window. You should see the following message:
+
[source,options="nowrap"]
----
Jay Boss's discount is 10.00
----
. To undeploy the project, right-click on the *{artifactId}-service* project and choose *Run As* –> *Maven build*. Enter `wildfly:undeploy` for the *Goals* and click *Run*.

// Debug the Application
include::../shared-doc/debug-the-application.adoc[leveloffset=+1]

// Additional debug info
[NOTE]
====
You will see the following informational messages. This is because the source files for this JAR are not available in the Maven repository.

[source,options="nowrap"]
----
[INFO] The following files have NOT been resolved:
[INFO]    org.apache.ant:ant-launcher:jar:sources:1.7.0:provided
[INFO]    com.sun:tools:jar:sources:1.6:system
[INFO]    asm:asm:jar:sources:3.3.1:provided
----
====
