Thursday, July 28, 2011

Publishing WS endpoints through AS7 services

JBoss AS 7.0.0 Final has been released and is available to the community, so we're currently working on the 7.1.0 version of the application server, which is coming with many webservices functionalities additions. While most of them will be aim at covering JCP specification requirements (mainly JSR-109 and JSR-101), some management and general use new features are also coming soon.

Recently it's been the turn of JBoss XTS for being integrated in JBoss AS 7.
XTS provides transaction support for web services, implementing WS-AtomicTransaction and WS-BusinessActivity specifications. In order for providing such functionalities, XTS needs to start a given number of WS endpoints to take part into the transactions management. According to the JBoss AS 7 design, this is to be achieved using JBoss AS 7 services.

Publishing a WS endpoints on JBoss AS7 was previously directly bound to the processing of a given deployment unit having webservices endpoint implementation classes in it. So the required steps for achieving our goal were:

  1. abstracting the endpoint publish process away from the deployment processing; that was possible thanks to the already existing convenient split of JBossWS endpoint publish logic into deployment aspect blocks, completely hidden behind the JBossWS SPI (iow the JBossWS internals do not directly rely on JBoss AS classes)

  2. defining a simple API for publishing POJO endpoints given the endpoint class names, classloader and publish address

  3. providing a JBoss AS7 implementation for such an API

  4. serving that through an AS7 service


We ended up with a solution that might appear pretty much equivalent to the JAX-WS Endpoint.publish(..) API at first sight, except it
  • allows for publishing an endpoint to the HTTP server of the currently running JBoss AS 7 instance

  • is embedded into a JBoss AS 7 service, allowing efficient, concurrent and perhaps even lazy/on-demand start/stop of endpoints as part of AS7 operations (for instance, the boot)



The XTS integration easily leveraged the new JBossWS feature, installing and setting up dependencies on multiple WS endpoint publisher services.

You can have a look at this by checking out the latest JBoss AS 7 master from github and starting the standalone-xts.xml profile. During the boot, XTS subsystem and its 14 required WS endpoints are concurrently started in something like 2.5s on a my mid-level laptop ;-)
If you're writing your own AS7 component and need publishing a WS POJO endpoints as part of that, consider giving this new feature a try.

Thursday, July 7, 2011

JBoss AS 7 webservices features

JBoss Application Server 7 is highly configurable and allows for running different profiles, including one or more subsystems. The optional webservices subsystem is based on JBossWS-CXF 4.x.

JBoss AS7 users can turn on full webservices capabilities by enabling the org.jboss.as.webservices module extension and the webservices subsystem in their standalone.xml / domain.xml descriptors:


<server name="foo" xmlns="urn:jboss:domain:1.0">
    <extensions>
        [...]
        <extension module="org.jboss.as.webservices"/>
        [...]
    </extensions>
    [...]
    <profile>
        [...]
        <subsystem xmlns="urn:jboss:domain:webservices:1.0" xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns:jaxwsconfig="urn:jboss:jbossws-jaxws-config:4.0">
            <wsdl-host>localhost</wsdl-host>
            <modify-wsdl-address>true</modify-wsdl-address>
        </subsystem>
        [...]
    </profile>
    [...]
</server>

On JBoss AS 7 Final, the webservices extension / subsystem is already enabled and available in a separate domain configuration, domain-preview.xml / standalone-preview.xml. Users can run a given server configuration as follows:

./bin/standalone.sh -server-config standalone-preview.xml


Once the webservices capabilities are enabled, basic JAXWS features as well as advanced WS-* functionalities are available.
The JBossWS 4.x documentation covers all the details, including full JAXWS user guide , JAXWS tooling and quick start sections.

Moreover, examples are also provided on advanced topics:

Wednesday, May 11, 2011

JBossWS @ JBUG München

The JBossWS project is being presented through a talk at JBUG Munich next week (Monday, May 16th).
The presentation is going to be focussed on the recent JBossWS - Apache CXF integration efforts as well as on the future of the project.
More details on the JBUG Munich website.

JBossWS 4.0.0.Beta1 is out!

After months of active development, the first Beta release of JBossWS 4 is finally out!
The main target of JBossWS 4 is in supporting the upcoming JBoss Application Server 7 and contributing to the innovation that's coming with it.
For instance, AS7 comes with a new modular classloading and requires proper isolation between user classes and JBoss implementation details. As a consequence we've gone through a complete review of ws integration classloading details, re-defined the JBossWS public API and really cleaned up a bunch of things all over the WS components. Full documentation is coming with the next beta releases, however a FAQ for WS AS7 usage is already available.

The JBossWS-CXF stack was also moved to including the recent Apache CXF 2.4 release. The integration has been completely reviewed as CXF 2.4 is less bound to Spring, hence allowing JBossWS to avoid most of the tricks that were in place before to support some "non-Spring" scenarios.

Apache CXF 2.4 also includes many new features and improvements in the WS-Security area. Adding this to some additional integration work on @EndpointConfig annotation, we're finally able to support a completely "Spring-free" WS-SecurityPolicy scenario, with signature / encryption / username token based authentication (sources, resources).

Finally, mainly because of the AS 7 improvements, in terms of performance handling ws invocations, the current JBoss AS 7 + JBossWS 4 integration is up to 35% faster then JBoss AS 6 Final + JBossWS 3.4.1.GA

The Beta1 artifacts are available on the JBoss Maven repository, sources can be retrieved from SVN repository as usual.

While JBoss AS 7 is meant to be the primary (and probably only, once we reach final stage) target of JBossWS 4.x, at the moment JBoss AS 6 Final is also supported as target container.
Please note that given the AS7 is currently in very active development phase, JBossWS 4.0.0.Beta1 is fully tested against its current (today, May 11) version only. As soon as JBoss AS 7 will reach CR level, we'll add that release to the released supported target containers list of JBossWS 4.

Please have a look at the first Beta of JBossWS 4, feedback is always welcome!

Friday, January 7, 2011

Stressing WS features of JBoss AS 6 Final

JBoss AS 6.0.0.Final has been released few days ago. It passes the JavaEE 6 Web Profile certification testsuite and that's probably one the most notable achievements of this release. You should really read Dimitris blog on this topic, which gives a wide view of what's new with AS 6, especially if compared to the previous final version, JBoss AS 5.1.

An interesting discussion is currently on on JBoss forum regarding JavaEE 6 Web Profile vs Full Profile... while it's important for users/customer to provide feedback, please note that in terms of web services features, JBossWS-CXF 3.4.1.GA included in JBoss AS 6 Final is already passing the relevant tck modules of the full profile certification.
Moreover, you most probably already know that Apache CXF 2.3.1, which is consumed by JBossWS-CXF 3.4.1, is JAX-WS 2.2 compliant.

So, despite having the EE6 Web Profile stamp only on it, JBoss AS 6 really has all you need for safely leveraging the latest revisions of webservices technologies (JSR-224, JSR-109, etc.).
Moreover, in addition to the standard compliance above, the switch from the Native stack to the Apache CXF based one brings improved WS-* support (try out the WS-Policy support with security, addressing, reliable messaging, etc.) and better performances.

... just the WS contribution to JBoss AS 6 Final actually being more than a certified Java EE6 Web Profile implementation ...

Friday, December 17, 2010

Ready for JBoss AS 6... and then?

Community members watching recent JBossWS subversion repository activity might have noticed that we've been having two open 3.4.x branches for quite some time. What's the meaning of that?

From one of the branches, JBossWS 3.4.0 was released just last week and had many new features, available for already released AS containers (including AS 6 CR1 and AS 5.1.0.GA). That came with JAXWS 2.2, JSR 109 v1.3, etc. - you can read all the details on my previous blog post.

On the other side, the efforts above on webservices technologies are of course meant for eventually satisfying the general JBoss Application Server EE6 certification needs. Because of that, a lot of work is being done on JBoss AS 6 trunk. In particular we had to review part of the internal webservice integration layer with the AS, to accommodate other components requirements and changes. This all happened on the branches for JBossWS 3.4.1, which has finally been released on yesterday and is ready for being the final ws stack of JBoss Application Server 6.
So 3.4.1 basically introduces just few minor additions over 3.4.0 for the end users (see the release notes [1][2]), but includes some internal changes that are really relevant for AS 6. Besides that, we verified the testsuite with IPv6 addresses ;-)
The only supported target container for 3.4.1 is the current JBoss AS 6.0.0-SNAPSHOT, which (hopefully) will soon turn into AS 6 final.


The future: JBossWS 4 and JBoss AS 7

So, what are we going to work on once we're back from X-mas time? ;-)
You might have heard on the November 17th JBoss Community Asylum that AS 7 development is really on... well, it's time for the WS team to focus on it.
Major new features and changes are coming with JBossWS 4... take a look at JIRA, the dev forum and feel free to comment/participate :-)

Thursday, December 9, 2010

JBossWS 3.4.0 has landed!

It's been almost two months after 3.4.0.CR1 has been released... but finally JBossWS 3.4.0 is out! I'm happy to announce that both JBossWS-CXF and JBossWS-Native final versions have been released and are available for download. The supported target containers are JBoss AS 5.0.1, 5.1.0 and 6.0.0.CR1.

This release is the result of the hard work since the beginning of 2010 on supporting the JAXWS 2.2 and JSR 109 v.1.3 changes required for JavaEE 6. Part of the work actually came through collaboration with the Apache CXF community; as a matter of fact the Apache CXF 2.3 series (included in JBossWS-CXF 3.4.0) features JAXWS 2.2 compliant functionalities.

JBossWS-CXF 3.4.0 is meant for being the stack providing webservices functionalities to JBoss AS 6, which in turns aims at JavaEE 6 compliance. We're going to cut another minor release for dealing with last minute integration issues just before AS goes final, but from a feature point of view 3.4.0 already has all you need for JavaEE 6 webservices development.

Besides that, JBossWS-CXF 3.4.0 comes with all the new features and many bug fixes of Apache CXF 2.3.0 and 2.3.1, part of which were directly contributed by our team members.
Take a look at the release notes for the full list of improvements.
Of course, the Maven artifacts for all the released components are also available on the JBoss public repository; please give 3.4.0 a try!

JBossWS 5.4.0.FInal is released !

I am pleased to annouce JBossWS 5.4.0 Final is out. In this release we upgraded many components as usual and brings Elytron client configur...