# Sending JMS messages from a WebService

## Overview

This example deploys a WebServices that sends messages to a queue. The same client will then read the message from the queue, validating if the WebService could complete the message send.
This example relies on having access to a running JBoss default instance. However, the example will automatically deploy its own queue, unless a queue with the same name is already deployed.
This example will also generate client classes using wsdltools from JBoss Web Services.

## Running the example

1. Set up the JBOSS_HOME environment variable to point to the JBoss instance you deployed JBoss Messaging into. For example, if you deployed JBoss Messaging in C:\jboss-5.0.0.GA\server\default\deploy, then your JBOSS_HOME value should be C:\jboss-5.0.0.GA
2. Go to the example's home directory
cd ...\examples\web-services
3. Run the example:
ant
The output of a successful run should be similar to:

example@example:/workspace/jboss-messaging-1.3.0.GA/examples/web-services$ ant Buildfile: build.xml identify: [echo] ########################################################################### [echo] # Running the WebServices example # [echo] ########################################################################### [echo] The queue: testQueue [echo] The client jar: ../..//jboss-messaging-client.jar sanity-check: init: compile: war: [jar] Building jar: /workspace/jboss-messaging-1.3.0.GA/examples/web-services/output/lib/jms-web-service.war deploy: [copy] Copying 1 file to /jboss-4.2.0.GA/server/messaging/deploy sleep: [echo] Sleeping for 5 seconds ... run-wsdl-client: [get] Getting: http://127.0.0.1:8080/jms-web-service/JMSWebServiceExample?wsdl [get] To: /workspace/jboss-messaging-1.3.0.GA/examples/web-services/output/service.wsdl [wstools] log4j:WARN No appenders could be found for logger (org.jboss.ws.tools.wsdl.WSDLDefinitionsFactory). [wstools] log4j:WARN Please initialize the log4j system properly. compile-client: [mkdir] Created dir: /workspace/jboss-messaging-1.2.0.SP2/examples/web-services/output/client-classes [javac] Compiling 5 source files to /workspace/jboss-messaging-1.2.0.SP2/examples/web-services/output/client-classes run: send-and-receive: [java] log4j:WARN No appenders could be found for logger (org.jboss.ws.metadata.builder.jaxrpc.JAXRPCClientMetaDataBuilder). [java] log4j:WARN Please initialize the log4j system properly. [java] Message was received ok! [java] [java] ##################### [java] ### SUCCESS! ### [java] ##################### undeploy: [delete] Deleting: /jboss-4.2.0.GA/server/messaging/deploy/jms-web-service.war BUILD SUCCESSFUL Total time: 12 seconds

## Troublesooting

### 1. I get "javax.jms.JMSSecurityException: User null is NOT authenticated"

You probably didn't install JBoss Messaging correctly. A fresh JBoss Messaging installation requires changes in the security configuration of a default JBoss instance, specifically a properly configured "messaging" security domain. Follow the instructions from the "Installation" paragraph of the release documentation.

### 2. wstools doesn't work

You could aways using "ant -debug" to verify what Exceptions wstools is generating. A common error is a NullPointerException due to a xerces update required by JBoss Web Services. You could have more information at this page:
http://wiki.jboss.org/wiki/Wiki.jsp?page=JBWSFAQXercesNPE