Friday, July 6, 2007

Web Services: AXIS, XFire, CXF, JAX-WS

wiki

Monitoring SOAP messages
Axis SOAPMonitor User's Guide
Apache TCPMon (Tutorial)
java.net tcpmon)

Axis1
official and wiki
JIRA and mail
sources

Release notes and what in this realise
User Guide
Commands - Axis Reference Guide

  • SOAP 1.1/1.2 compliant engine
  • Flexible configuration / deployment system
  • Support for "drop-in" deployment of SOAP services (JWS)
  • Support for all basic types, and a type mapping system for defining new serializers/deserializers
  • Automatic serialization/deserialization of Java Beans, including customizable mapping of fields to XML elements/attributes
  • Automatic two-way conversions between Java Collections and SOAP Arrays
  • Providers for RPC and message based SOAP services
  • Automatic WSDL generation from deployed services
  • WSDL2Java tool for building Java proxies and skeletons from WSDL documents
  • Java2WSDL tool for building WSDL from Java classes.
  • Preliminary security extensions, which can integrate with Servlet 2.2 security/roles
  • Support for session-oriented services, via HTTP cookies or transport-independent SOAP headers
  • Preliminary support for the SOAP with Attachments specification
  • An EJB provider for accessing EJB's as Web Services
  • HTTP servlet-based transport
  • JMS based transport
  • Standalone version of the server (with HTTP support)
  • Examples, including a client and server for the SoapBuilders community interoperability tests and experimental TCP, JMS, and file-based transports.
  • This version has passed the JAX-RPC 1.1 and SAAJ 1.2 TCKs.

Axis uses it's own internal databinding system (referred to as de/serialization) that's based on SAX. It is not a pluggable option. (Perhaps you've seen messages such as "no deserialized found for [qname]). Axis provides built-in de/serializers for beans and arrays, and you can provide custom de/serializers for other types. You specify the de/serializers to use, and the mapping between qnames and types in the WSDD using the beanMapping and typeMapping options.

If you want to use a third-party databinding system, then you must use the low-level message provider (provider="MSG"), which deserializes the message into DOM, which you can then bind to your object model.


Axis2
official and wiki
JIRA and mail
sources

Release notes
Commands - Code Generator Tool Guide for Command Line and Ant Task
Reference (WSDL2Java and Java2WSDL)
Constants
Code Generator Wizard Guide for Eclipse Plug-in
Service Archive Generator Wizard Guide for Eclipse Plug-in


Programming Model:
  • Improved XML-centric client API with full WSDL and policy support
  • Support for POJO and Spring services and clients
  • Support for any message exchange pattern (MEP)
  • Synchronous and asynchronous programming model
  • Archived service deployment model supporting full service encapsulation with versioning support
  • Archived module deployment model supporting controlled extensibility with versioning support
  • Hot deployment
  • WS-Policy driven code generation extensions
  • Flexible service life cycle model
  • Automatic support for POX (REST) style invocation of services
  • Support for querying service's WSDL (with ?wsdl), schema (with ?xsd) and policies (with ?policy)
  • WSDL 2.0POJO annotation (JSR 181)
  • JAX-WS intregration
  • Custom Deployers
  • Binary serialization (Fast Infoset)
  • JSON support
  • EJB Provider support
  • Supported Specifications:
  • SOAP 1.1 and 1.2
  • Message Transmission Optimization Mechanism (MTOM)
  • XML Optimized Packaging (XOP)
  • SOAP with Attachments
  • WSDL 1.1, including both SOAP and HTTP bindings
  • WS-Addressing submission and 1.0
  • WS-Policy
  • SAAJ 1.1
Transports:
  • HTTP, SMTP, JMS, TCP
  • Supported Data Bindings:
  • Axis Data Binding (ADB), XMLBeans, JibX, JaxMe (Experimental), JaxBRI (Experimental)
Tools:
  • WSDL2Java, Java2WSDL, Eclipse Plugins, Maven2 Plugins, ...
XFire
official and wiki
JIRA
and mail

  • Support for important Web Service standards - SOAP, WSDL, WS-I Basic Profile, WS-Addressing, WS-Security, etc.
  • High performance SOAP Stack
  • Pluggable bindings POJOs, XMLBeans, JAXB 1.1, JAXB 2.0, and Castor support
  • JSR 181 API to configure services via Java 5 and 1.4 (Commons attributes JSR 181 syntax)
  • Support for many different transports - HTTP, JMS, XMPP, In-JVM, etc.
  • Embeddable and Intuitive API
  • Spring, Pico, Plexus, and Loom support.
  • JBI Support
  • Client and server stub generation
  • JAX-WS early access support

Howto use wsgen and wsdlgen
Client and Server Stub Generation from WSDL
Web Services on XFire – Fast Forward to 2007
Eclipse Plugin
Axis vs XFire
Stack Comparison

CXF
official and wiki
JIRA and mail

  • JAX-WS frontend
  • Java2WSDL and WSDL2Java tools and Maven plugin
  • SOAP 1.1 & 1.2, XML and RESTful HTTP bindings
  • JAXB 2.0 Databinding support
  • JSON support with Jettison
  • WSDL 1.1 support
  • WS-Addressing, WS-ReliableMessaging, and WS-Policy support
  • MTOM attachment support
  • HTTP, Servlet, JMS and Local Transports
  • Simple POJO service frontend
  • Javascript frontend
  • JBI Service Engine. CXF services can be deployed into any JBI compliant container (ServiceMix or OpenESB)
  • JCA 1.0 support, J2EE application can integrate with legacy application through JCA 1.0 support in CXF
  • Spring Support

Reease notes
wsdl-to-java

JAX-WS
official and wiki

  • JAX-WS 2.0/2.1 (JSR 224)
  • WS-I Basic Profile 1.1
  • WS-I Attachments Profile 1.0
  • WS-I Simple SOAP Binding Profile 1.0
  • WS-Addressing 1.0 - Core, SOAP Binding, WSDL Binding

Other resources

WSDL Version 1.1
WSDL Version 2.0
Web Services Addressing 1.0 - WSDL Binding
SOAP Version 1.2
ESB
BPEL
JAX-WS

Maven and Continuum

Maven 2
official and wiki


Dowload page
Download direct link (tar.gz ver. 2.0.7)

REPOSITORY:
http://mirrors.ibiblio.org/pub/mirrors/maven2/

mvn clean install
-Dmaven.test.skip=true
-Dxfire.java5=true

Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.

We faced problem with antrun plugin

[INFO] [antrun:run {execution: 0}]
[INFO] Executing tasks
[mkdir] Created dir:
D:\exo\projects\projects
\portlet-container\branches\2.0\component\plugins\wsrp1\target\generate
d
[java] java.lang.NoClassDefFoundError: org/apache/axis/wsdl/WSDL2Java
[java] Exception in thread "main"
[java] Java Result: 1



Thats problem solved with change
<latest>1.0</latest>
<release>1.0</release>
within
maven2\repository\org\apache
\maven\plugins\maven-antrun-plugin\maven-metadata-central.xml


Or, much better to point version for maven plugin within pom.xml
For example:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.0</version>

And, sometimes ploblem in that maven doesn't see plugins at all.
Need to point plugin repository
For example:
<pluginRepositories>
<pluginRepository>
<id>snapshot</id>
<name>Snapshot repository</name>
<url>http://snapshots.maven.codehaus.org/maven2/</url>
</pluginRepository>
</pluginRepositories>



Links:
Maven
Documentation
Configuring Maven
Introduction to the POM
POM Reference
SETTINGS Reference

Introduction to the lifecycle
Build Lifecycle Phases

Frequently Asked Technical Questions
The APT format
Download Maven (latest version 2.0.5)
THE BEST MAVEN ARTICLE POST EVER!


Continuum
wiki


Continuum is a continous integration server for building Java based projects.
Continuum is a great partner to Apache Maven which will run builds on a configurable schedule. Continuum will email developers when the build is broken requesting that the culprit fix the problem. You may add a project to Continuum simply by pointing to the pom.xml in the source control system and it will magically do the rest (check out from source control, run a clean build, deploy to the integration server and run unit tests).

Links:
Welcome to Continuum
Documentation
About Continuum
Download Continuum (latest version 1.0.3)