Metro vs Java's JAX-WS?
Asked Answered
H

2

30

What is/are the difference/s of Java's JAX-WS and Metro? Are they the same of are they two different JAX-WS implementations?

According to my research, JAX-WS is already a part of JDK 6. However, JAX-WS does not come with the standard bundle of JDK so I looked for a Java EE jar. However, it seems that Oracle does not host a compiled Java EE jar but instead provides Glassfish which is a Java EE server.

I was able to run my web service on Glassfish. What JAX-WS implementation does Glassfish use? Since it's hosted on Oracle, I'm assuming that it is using Java's implementation of JAX-WS which is supposedly a part of JDK 1.6? Am I correct with my assumption? Also, to run a JAX-WS based web service, I need to download JAX-WS jars. I found Metro. But on it's page, I see the link of metro to be a sublink of Glassfish. So I'm now confused. Is Glassfish using Metro? Or is Glassfish using Java's JAX-WS?

Are Metro and Java's JAX-WS the same?

Hippo answered 1/10, 2012 at 9:1 Comment(1)
This question is viewed more than 400 times and it isn't up-voted even once ! A big FAT +1 !!Mikkimiko
K
32

JAX-WS is an API while Metro is the reference implementation for the JAX-WS API; both are from Sun/Oracle, thus are standard. You can see them as an interface (JAX-WS) and a class implementing the interface (Metro), only at a higher level. Glassfish also uses Metro as implementation for JAX-WS.

To be noted that Metro contains implementation for JAXB and other APIs.

Also, SOAP Web Services are somehow obsolete; the new trend is to use REST Web Services; JAX-RS (with various implementations from the standard Jersey to Restlet or CXF).

Kandacekandahar answered 1/10, 2012 at 9:3 Comment(10)
Thanks for your answer! Then what is the one included on JDK 1.6? Is it just an API or a JAX-WS implementation?Hippo
@Hippo It includes Metro also. See here an elaborate answer - #9116508 .Kandacekandahar
Uhm.. But I thought JDK 1.6 contains an implementation of JAX-WS? Or is it just an API when they said JDK 1.6 is bundled with JAX-WS? When you say API, does it mean that it's just an interface and not an implementation?Hippo
@Hippo JDK includes both the JAX-WS API and the Metro implementation for the JAX-WS API.Kandacekandahar
Oh... Thanks! Got it now. I know this is not a really a part of my question but when you say JDK, it doesn't mean that it contains the implementation of the included classes right? Because I'm running my Tomcat on Eclipse under JDK 1.6 but I still need to include the JAX-WS jars on Tomcat to be able to run a JAX-WS based web service. If both the JAX-WS API and Metro implementation are already included in JDK 1.6, then why do I still need to add the JAX-WS jars? I'm getting an error if I don't add the jars from Metro on Tmocat.Hippo
@Hippo That is because Tomcat does not have the implementation for JAX-WS (like Glassfish); you need to include those libraries in Tomcat library folder so that Tomcat could use them directly.Kandacekandahar
Yes, I know that Tomcat does not have the implementation for JAX-WS like Glassfish. What I'm confused is that I've set my Tomcat to use JDK 1.6 on Eclipse as it's JRE. But I think I know the answer already. Even though I point Tomcat to a JDK library, it still uses only the JRE part of JDK and not the whole JDK. Since JRE does not contain the J2EE implementation, the JAX-WS jars must be included on Tomcat. Thanks, m3th0dman! :) (Note: Please tell me if I'm wrong with my assumption. If I'm correct, a confirmation will do.)Hippo
@Arci, at this point, have you resolved the confusion if jax-ws jars (API and Implementation, i.e. Metro) are in the JDK or not ?Mikkimiko
@MuhammadGelbana: Thanks for the concern! Yes. JAX-WS is in JDK but not in JRE. Tomcat uses JRE, not JDK. As such, the required jars must be bundled together with the project (in the lib folder) to run JAX-WS on Tomcat. :) Did I get it right?Hippo
@m3th0dman your comment on SOAP vs. REST is subjective. Lots of enterprises still use SOAP. The use of SOAP vs. REST vs. REST/JSON depends largely on what environment you are in. There is no good vs. bad here.Unsettled
P
2

Accourding to Metro's home page, "Metro consists of JAX-WS Reference Implementation project and Web Services Interoperability Technology project."

Web Services Interoperability Technologies (WSIT) (previously known as Project Tango) includes implementations of:

  • SOAP over TCP
  • WS-AtomicTransactions/Coordination
  • WS-MetadataExchange
  • WS-Policy (https://github.com/javaee/metro-policy)
  • WS-ReliableMessaging
  • WS-SecureConversation
  • WS-Security
  • WS-SecurityPolicy
  • WS-Trust

Look at this answer for futher information.

Presidentelect answered 2/8, 2017 at 15:43 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.