Hi all ,
I wrote the initial code for publishing esb service as web service and committed into
my
branch(https://svn.labs.jboss.org/labs/jbossesb/workspace/jimma/) for your review.
There is also a sample named helloworld_pub_service in quickstarts directory for it .
When execute "ant deploy" under quickstarts/helloworld_pub_service , jboss
will spit up these deployment message :
17:43:33,000 INFO [JBoss4ESBDeployer] create esb service,
Quickstart_helloworld_pub_service.esb
|
| 17:43:33,035 INFO [QueueService] Queue[/queue/quickstart_helloworld_Request_esb]
started, fullSize=200000, pageSize=2000, downCacheSize=2000
|
| 17:43:33,041 INFO [QueueService] Queue[/queue/quickstart_helloworld_Request_gw]
started, fullSize=200000, pageSize=2000, downCacheSize=2000
|
| 17:43:33,362 INFO [JDBCDataStore] Generated token
'authToken:DB3B49D0-379A-11DD-BD9B-D7235840313A' for user: 'jbossesb/JBoss ESB
User'
|
| 17:43:33,383 INFO [JDBCDataStore] Generated token
'authToken:DB3E5710-379A-11DD-BD9B-9B9F5C506F1D' for user: 'jbossesb/JBoss ESB
User'
|
| 17:43:33,477 INFO [QuartzScheduler] Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED
started.
|
| 17:43:38,606 INFO [DefaultEndpointRegistry] register:
jboss.ws:context=firstserviceesb-simplelistener,endpoint=SimpleListener
|
| 17:43:38,625 INFO [TomcatDeployer] deploy, ctxPath=/firstserviceesb-simplelistener,
warUrl=.../tmp/deploy/tmp33655firstserviceesb-simplelistener-exp.war/
|
| 17:43:39,206 INFO [WSDLFilePublisher] WSDL published to:
file:/project/jbossesb/workspace/jimma/product/build/jbossesb-server-4.3.GA/server/default/data/wsdl/firstserviceesb-simplelistener.war/firstserviceesb_simplelistener.wsdl
|
when run "ant runtest" , the SOAP message will be passed into ESB service and be
printed by SystemPrintln action :
17:46:39,815 INFO [STDOUT]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
|
| 17:46:39,815 INFO [STDOUT] Body:
org.jboss.ws.core.soap.SOAPBodyImpl@1b50891[[soapenv:Body: null]]
|
| 17:46:39,815 INFO [STDOUT]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
|
| context: [ ]
|
| body: [ objects:
{org.jboss.soa.esb.message.defaultEntry=org.jboss.ws.core.soap.SOAPBodyImpl@1b50891[[soapenv:Body:
null]]} ]
|
| fault: [ ]
|
| attachments: [ Named:{}, Unnamed:[] ]
|
| properties: [ {org.jboss.soa.esb.message.time.dod=Wed Jun 11 17:46:39 CST 2008,
org.jboss.soa.esb.message.time.dob=Deferred serialized value: 1b6847a,
org.jboss.soa.esb.message.source=Deferred serialized value: 1b36a91,
org.jboss.soa.esb.message.transport.type=Deferred serialized value: 196d07,
javax.jms.message.redelivered=false} ] ]
When this sample is deployed , the ESB server will firstly generate wsdl , jaxws dispatch
provider class and web.xml used to deploy it as a web service , then packaged the
generated artifacts into a war file and deploy it as a web service in ESB server .
This is the generated jaxws dispatch provider class :
package org.jboss.soa;
|
@javax.xml.ws.WebServiceProvider(wsdlLocation="/WEB-INF/wsdl/firstserviceesb_simplelistener.wsdl",
serviceName="SimpleListener Service", portName="SimpleListener Port",
targetNamespace="http://soa.jboss.org/FirstServiceESB")
| @javax.xml.ws.ServiceMode(value = javax.xml.ws.Service.Mode.MESSAGE)
| public class SimpleListener implements javax.xml.ws.Provider {
| public Object invoke(Object obj) {
| javax.xml.soap.SOAPMessage request = (javax.xml.soap.SOAPMessage)obj;
| try {
| org.jboss.soa.esb.client.ServiceInvoker serviceInvoker = new
org.jboss.soa.esb.client.ServiceInvoker("FirstServiceESB",
"SimpleListener");
| org.jboss.soa.esb.message.Message msg =
org.jboss.soa.esb.message.format.MessageFactory.getInstance().getMessage();
| msg.getBody().add(request.getSOAPBody().toString());
| org.jboss.soa.esb.message.Message resMsg = serviceInvoker.deliverSync(msg,
(long)20000);
| } catch (Exception e) {
| e.printStackTrace();
| }
| return request;
| }
| }
So far the dispatch provider simply pass the soap message into the esb service using
ServiceInvoker and return this soap request as response. I will polish it later . and
also make it support two way message and fault message . These are my initial codes and
thoughts for publishing esb service as web service. Your thoughts and comments for it
would be appreciated.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4157561#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...