如何使用JAX-WS生成WSDL 2.0

问题描述:

这个问题可能很愚蠢,但我还没有找到获取由JAX-WS RI Web服务生成的WSDL 2.0的方法。如何使用JAX-WS生成WSDL 2.0

我一直在使用最新的jax-ws版本,如果我创建了一个非常简单的WS(例如下面的例子),那么生成的WSDL将会是1.1版本。

@WebService 
    public interface RandomNumberGenerator { 

     Integer getRandomNumber(); 

    } 

    @WebService(endpointInterface="RandomNumberGenerator") 
    public class RandomNumberGeneratorImpl { 

     public Integer getRandomNumber() { 
      return (int) (Math.random() * 1000); 
     }  
    } 

有谁知道我是如何明确告诉JAX-WS生成WSDL 2.0的?考虑到2.0是W3C自2007年以来的建议,我非常有信心JAX-WS提供了一种生成它的方法。

谢谢。

我非常有信心JAX-WS确实提供了生成它的方法。

恐怕它没有。从the JAX-WS 2.0 specification引用,第2页,节目标:

WSDL 2.0:W3C的预计此JSR的寿命期间进展WSDL 2.0 [11]〜建议 。 JAX-WS 2.0将增加对WSDL 2.0的支持,同时需要继续支持WSDL 1.1。注意:JSR专家组针对此版本的此目标做出了决定。我们将在 规范的未来版本中增加支持。

这意味着在JAX-WS 2.0中不会有WSDL 2.0支持,这就是为什么参考实现不提供它。阿法克,目前在这方面没有太多进展。

如果您希望沿着JAX-WS使用WSDL 2.0,则必须使用另一个堆栈,例如Axis2

+1

现在有这种变化吗?现在可能吗?如何在glassfish 4的情况下? – bastiat

+2

没有更新JAX-WS(也没有计划用于Java 9,afaik),所以这没有改变。我也没有意识到glassfish 4中的WSDL相关更新。说实话,如果WSDL 2.0能够得到支持,我会非常惊讶。 – joergl