...
Refer to the servicemix-wsn2005 for updated informations
...
SOAP stacks and XML marshaling
We now use JAX-WS and JAXB 2.0 to create POJOs and interfaces for the common WS-* specifications like WS-Addressing, WS-Notification, WS-ReliableMessaging, WS-Resourceframework etc. The only downside of this approach is its Java 5 specific. We hope with a tool like If you want an XMLBeans based solution you can try our previous effort of using XMLBeans Retroweaver can one day allow JAX-WS and JAXB 2.0 based code to work perfectly on Java 1.4 JVMs.
Using JAXB / JAX-WS we create the POJOs and service interfaces for the common WS-* interfaces (WS-Notification, WS-Addressing, WS-Resource*). Here is the javadoc.
WS-Notification
The WS-Notification support is currently implemented as a POJO; POJOs which can then either be called directly inside an application or can be wrapped up as a remote web service using some web service stack such as ActiveSOAP. For more detail, try the javadocsa JAX-WS compliant SOAP stack. We are currently using the JAX WS RI which is licensed under CDDL.
We have interfaces for the WS-Notification services in the org. servicemix.wswspojo.notification package. These interfaces just depend on the XMLBeans generated from the WSDLs. e.g. here's the NotificationConsumer interface. These interfaces are generated by JAX-WS from the WSDLs and only depend on Java 5 and the JAX-WS and JAXB 2.0 annotations.
Then our implementation of these WS-Notification interfaces are here.
Using WS-Notification
To be able to publish or subscribe you need either a NotificationConsumer or NotificationBroker. The current implementation of both is the ActiveMQNotificationBroker - which will create a connection to an ActiveMQ broker (by default making an embedded broker inside the same JVM].
You can then publish WS-Notification messages as follows...
...
...
You can perform a subscription as follows
...
Runtime dependencies
Apart from the usual ActiveMQ dependencies (either client side only or full server side dependencies depending on if you're using an embedded broker) the WS-Notification provider has the following dependenciesand ServiceMix dependencies this implementation of WS-Notification depends on
- the JAX-WS and JAXB 2.0 APIs (annotations) which are included in Java 6, but on Java 5 you will need the jaxb-api.jar and jaxws-api.jar
- a JAX-WS implementation if you wish to support remote services over SOAP. We are currently using the JAX-WS RI
- xmlbeans-*.jar
- StAX API (stax-api-*.jar)
- a StAX implementation (either stax-ri-.jar or woodstox-.jar)
- activesoap-*.jar (only required for invoking remote WS services when dispatching notifications)