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