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 Retroweaver can one day allow JAX-WS and JAXB 2.0 based code to work perfectly on Java 1.4 JVMs.
The wspojo module creates the POJOs and service interfaces for the common WS-* interfaces (WS-Notification, WS-RM, WS-Addressing, WS-Resource*). Here is the javadoc.
WS-Notification
The WS-Notification support is currently implemented as POJOs which can then either be called directly inside an application or can be wrapped up as a remote web service using a 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.wspojo.notification package. 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 and 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