Today I "played" with the UDDI browser and I think to have found out the answer by myself.
Aparently there's not trace of my ESB, I hoped that during deployment the new jbr gateway was automatically registered on JUDDI.
Supposing I have to manually pubblish the service. how can I find the wsdl?
We do not publish wsdl information through the registry, it is only used (at present) to store the EPRs associated with the service.
You can retrieve the WSDL from the contract application, check out the http://localhost:8080/contract/ link.
I get a 404 error.
Should this web application installed on all release?
Can you tell me the file name to look for into the deploy folder.
Thanks for your help.
Should be installed if the ESB is installed. As the URL might suggest, the name of the app is "contract.war" and it should be located in the "server/default/deploy" folder.
You should have a contract.war in the deploy folder. It's in the 4.4, 4.3 and 4.2.1 community releases. (Maybe further back but those are the ones I have on hand.)
I installed the ESB on JBoss 4.2 AS using an Ant script which was into the ESB release, unfortunatly for some how this web application was not copied (maybe a bug, because no errors appeared).
In anycase, I kept the the ESB package where I finally found it.
The application is simple so I've just moved into the deploy folder without any trouble.
I had a look on it and found a box with this:
Receive WS request
* Endpoint: jms://127.0.0.1:1099/queue/eu.virtualLab.esb.jms.ESBinternalQueue
* Contract: Unavailable
* Endpoint: http://localhost:8088
* Contract: Unavailable
Where should I find the wsdl path?
<providers> <jbr-provider host="localhost" name="localhost" protocol="http"> <jbr-bus busid="eu.virtualLab.esb" port="8088"/> </jbr-provider> <jms-provider connection-factory="ConnectionFactory" name="esbInternalChannel"> <jms-bus busid="JBossMQ"> <jms-message-filter dest-name="queue/eu.virtualLab.esb.jms.ESBinternalQueue" dest-type="QUEUE"/> </jms-bus> </jms-provider> </providers> <services> <service category="Security" description="Receive WS request" name="SoapClientListener"> <listeners> <!-- Attach a listener for client request --> <jms-listener busidref="JBossMQ" maxThreads="1" name="JMS-ESBListener"/> <jbr-listener busidref="eu.virtualLab.esb" is-gateway="true" maxThreads="1" name="WS-Gateway"/> </listeners> <actions mep="RequestResponse"> <action class="org.jboss.soa.esb.actions.soap.SOAPClient" name="RokebyIdentityManagerWS"> <property name="wsdl" value="https://xxxxxxxxxxxxxxxxxxxx?wsdl"/> <property name="operation" value="CreateUser"/> <property name="SOAPAction" value="urn:#CreateUserSoap"/> <property name="http-client-property"> <http-client-property name="keystore" value="/opt/jboss-4.2.2.GA/server/default/conf/localhost.keystore" /> <http-client-property name="keystore-passw" value="xxxxxxx" /> </property> </action> </actions> </service> </services>
Again, I think to have found the answer by myself: WebserviceContractPublisher
Unfortunatly the documentation doesn't help me much
Has anyone managed to achieve what we are trying to do? If yes, can we have an help showing how to proceed?
The SOAPProcessor action allows you to expose a co-located JBossWS webservice through the ESB and it is this that will expose the WSDL through the console application.
We do not yet have a mechanism to handle this for remote services, but it is something that is on our list.
There are examples of this action in the quickstarts, look for it within the webservice* quickstarts.
BTW This is something that you can change yourself if you need to. All you would need to publish a contract is to create an action using the @Publish annotation and have this refer to a publisher.
You can take a look at WebserviceContractPublisher for an example of this.