Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Comparison between Sun Metro and Apache CXF for webservices development?

What are the relative strengths and weaknesses between Sun Metro and Apache CXF for webservice development in Java. Is there another framework that I should be looking at as well?

like image 393
alfredozn Avatar asked Oct 22 '09 18:10

alfredozn


2 Answers

Both Metro and CXF are JAX-WS compliant web service stacks, and from a runtime perspective, there's very little pick between them.

However, CXF has vastly better documentation, and much more flexibility and additional functionality if you're willing to go beyond the JAX-WS specification. On the basis of documentation alone, I'd pick CXF over Metroevery time.

However, I would pick Spring WebServices over either Metro or CXF. It's not JAX-WS-compliant, but I don't consider that to be an issue. It's also both considerably simpler, and considerably more flexible than either of them. Highly recommended.

like image 95
skaffman Avatar answered Oct 04 '22 23:10

skaffman


I was in your position a few months back, and ended up looking closer at Metro.

The killer feature for me was the fact that Metro uses standard annotations to expose a given method as a web service and that all the glue code could be generated automatically at runtime. I.e. no extra steps to make when building and deploying and works in a standard servlet container (2.5 I believe) under Java 5 which is our current deployment platform.

This has worked very well for us.

The reason that I went for the standard annotations is the very simple that our applications tend to live literaly for decades after which some maintainance must be done. By coding to an interface instead of an implementation we may swap out the whole scaffolding underneath the code without changing the code implementing the web service. In ten years time (or more) any specific implementaiton may have withered and died, but other implementaitons may have risen since and be immediately pluggable.

Just see how many choices you have today for a servlet container... Thats the power of a good API!


Edit: Apparently the Java 6 runtime includes the Metro stack plus a minimal web server. In other words, the JRE alone may be the scaffolding replacement mentioned above :D

like image 43
Thorbjørn Ravn Andersen Avatar answered Oct 04 '22 23:10

Thorbjørn Ravn Andersen