The JBossWS 4.3.0 release comes with few new features, Apache CXF and WSS4J component upgrades and multiple bug fixes (see release notes).
Some of the changes in the release are meant for improving stability, preventing concurrency issues and ensuring thread safety whenever required. To achieve that some classes in the JBossWS SPI have been refactored in non-backward compatible way. Most of the users will simply not notice that, as the affected classes are mainly meant for composing the integration interface between the webservice stack and the application server container, not for final user usage.
Final users should only expect migration changes required in their code if they are programmatically using the org.jboss.wsf.spi.metadata.config.CommonConfig and org.jboss.wsf.spi.management.ServerConfig interfaces or their implementors.
Normal usage of Client and Endpoint predefined configs, as covered in the documentation, is not affected by the changes, because that relies on the JBossWS API classes and annotations.
Below is a quick summary of the changes that might possibly impact users programmatically relying on the JBossWS SPI modified classes:
Relevant changes in org.jboss.wsf.spi.metadata.config.CommonConfig interface
The CommonConfig is now immutable. As a consequence the following methods have been removed:
- public void setPostHandlerChains(List<UnifiedHandlerChainMetaData> postHandlerChain);
- public void setPreHandlerChains(List<UnifiedHandlerChainMetaData> preHandlerChains);
- public void setConfigName(String configName);
- public void setFeature(Feature feature, boolean enabled);
- public void setProperty(String name, String value);
Relevant changes in org.jboss.wsf.spi.management.ServerConfig interface
The ServerConfig has a new mechanism for registering and unregistering CommonConfig instances (during the container boot), while preventing unsafe modifications at runtime.
The user should basically be aware that the following methods
- public List<ClientConfig> getClientConfigs();
- public List<EndpointConfig> getEndpointConfigs();
have been replaced by
- public ClientConfig getClientConfig(String name);
- public EndpointConfig getEndpointConfig(String name);
XTS integration and WildFly 8
Due to the aforementioned JBossWS SPI changes, the XTS integration with the webservices subsystem is broken by upgrading the JBossWS stack on WildFly 8 using the JBossWS 4.3 build. If you're using distributed webservice transactions (XTS) on WildFly 8 (e.g. by booting with the standalone-xts.xml configuration), you should not override the existing stack upgrading to JBossWS 4.3. Instead, you should wait for the next WildFly version (most likely 9) already including JBossWS 4.3 or greater, as that will be properly integrated, with the XTS subsystem relying on the new JBossWS SPI.
The above mentioned upgrade issue with XTS does not affect JBoss AS 7.2.0 container.
Other changes not affecting common users
Among the changes in the JBossWS SPI (for the reasons mentioned above) that are not going to affect common users, here is a list of the most noteworthy:
- The constructors for org.jboss.wsf.spi.metadata.webservices.WebservicesMetaData, org.jboss.wsf.spi.metadata.webservices.WebserviceDescriptionMetaData and org.jboss.wsf.spi.metadata.webservices.PortComponentMetaData have changed as instances of those classes are now immutable; this is relevant when using the org.jboss.wsf.spi.publish.EndpointPublisher which is (optionally) passed WebservicesMetaData instances.