Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: WS Stack Comparison

...

  • Scope: SOAP API only, but consider how the library choice affects the REST API.
  • Contract-first vs Code-first? Jiri's preference is contract-first. This is compatible with our desire to keep the work relegated to the SOAP side, and wire-compatible with previous versions of Fedora

WS Stack Comparison

I've picked following web service stacks as candidates:

All the frameworks support JAX-WS specification so that it is easier to migrate from one to another. There exist two frameworks which are not mentioned in the following text, as they do not support JAX-WS standard and the community behind those product is not as big as behind the four frameworks mentioned above. The two frameworks:

Comparison

Criteria

1. customization of generating the server-side code from WSDL
2. modularity of jar files
3. presence in Maven Central
4. Spring integration
5. wsdl2java (server-side skeletons JAX-WS annotations)
6. performance (the higher, the better)
7. MTOM
8. JAXB
9. JAX-WS
10. JAX-RS

 

1

2

3

4

5

6

7

8

9

10

Axis2

0

-

1

0.5

1

1

1

1

1

1

CXF

1

1

1

1

1

2

1

1

1

1

Metro

1

0

1

0.5

1

2

1

1

1

1

JBoss WS

0

-

0

0

0*

-

1

1

1

0

Spring WS

-

1

0

1

0

-

0

0

0

0

*only java2wsdl

Community Support

It is hard to measure this aspect, so I put here links to the issue trackers or, where it is present, the mailing lists with commits. I forgot to mention that CXF and Axis2 are both supported by Apache Foundations and Metro by Oracle. If fcrepo is going to migrate to Java EE 6 (with Context Dependency Injection, JAX-RS, etc.) in the future, Metro or JBoss WS stacks are better prepared to this migration, in my opinion.

Proposed WS Stack

I propose to use the CXF and as a binding technology the JAXB. When building the project from WSDLs (Fedora-API-A.wsdl and Fedora-API-M.wsdl) and from fedora-types.xsd, the server-side skeletons annotated with JAX-WS annotations and the datatype POJOs will be generated by wsimport tool, i.e. contract-first approach. Let's discuss this proposal. All the frameworks which support JAX-WS provide almost the same code, the main difference is in the infrastructure in behind, for instance deployment of WS, integration with Maven, etc. I am open to any other proposal.

References

Work Plan

May 23 - 31: Analysis and framework recommendation

...