Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Swordfish Documentation: Generating Dynamic WSDL
Generating Dynamic WSDL
This section contains instructions on implementing the dynamic WSDL generation feature.
Prerequisites
Eclipse Galileo M7 build or later. The examples described here are based on Eclipse Galileo M7.
About Dynamic WSDL Generation
This feature allows users to access dynamically generated WSDLs for JAX-WS endpoints deployed within the Swordfish.
Consider this example:
The jaxws endpoint is deployed with the descriptor:
<jaxws:endpoint id="bookingService" implementor="org.eclipse.swordfish.samples.cxf.BookingServiceImpl" address="nmr:BookingService"/>
The http endpoint is used to access the jax-ws service externally:
<http:endpoint endpoint="httpConsumerEndpoint" service="httpConsumerEndpoint" targetService="swordfishCxf:BookingServiceImpl" soap="true" role="consumer" locationURI="http://0.0.0.0:8192/cxfsample/" defaultMep="http://www.w3.org/2004/08/wsdl/in-out" />
The HTTP endpoint points to swordfishCxf:BookingServiceImpl service and it is managed and deployed by the JBI ServiceMix HTTP binding component.
The problem is that there is no default mechanism to access the dynamically generated booking service WSDL document via the HTTP Endpoint facilities. The org.eclipse.swordfish.plugins.ws.wsdlgenerator project was created to solve
these partictular problems.
The project:
- Tracks all deployed HTTP endpoints
- Searches for the targeted JAX-WS services.
NOTE: The HTTP endpoint's deployment descriptor should contain targetService or targetEndpoint or targetInterface attributes, otherwise the WSDL generator will not be able the find the corresponding JAX-WS service - Generates the WSDL for the service and injects it in the HTTP endpoint.
To leverage the use of the Swordfish Dynamic WSDL Generation feature, the org.eclipse.swordfish.plugins.ws.wsdlgenerator project should be added to the target platform. To access the generated WSDL document for the HTTP endpoint just add the "?wsdl" to the locationURI. For example, httpConsumerEndpoint publishes its wsdl document to the address http://localhost:8192/cxfsample/?wsdl