Java 7是包含JAX-WS实现还是仅包含API?

时间:2012-02-02 16:30:44

标签: java jax-ws cxf

我被告知Java 7应该包含JAX-WS,这样我就不需要像Apache CXF那样的库。但是,official docs说:

  

此版本包含用于XML处理的Java API(JAXP)1.4.5,   支持Java Architecture for XML Binding(JAXB)2.2.3,并支持   用于XML Web服务的Java API(JAX-WS)2.2.4。

此外,Eclipse page on JAX-WS谈到使用Apache CXF,Sun Metro或Apache Axis等实现。我可以在JAX-WS上找到的每个示例/教程都使用像CXF或Metro这样的库集。

我在Eclipse中有一个项目,它在一个带有javax.jws.WebService注释的类上调用“Endpoint.publish(...)”。下面引用的WSDL文件驻留在Eclipse之外。这个项目运行(作为“Java应用程序”)与Apache CXF库包括。一旦我删除它们(以及Eclipse对Apache CXF的引用),它就会崩溃并出现以下异常:

com.sun.xml.internal.ws.server.ServerRtException: [failed to localize] cannot.load.wsdl(http://localhost:8081/wsdl/csw.wsdl)
    at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.getPrimaryWsdl(EndpointImpl.java:313)

所以要么我做错了,要么Apache正在提供JDK本身只有API的东西的实现。请指出哪种情况,以及相关内容的通常链接。

1 个答案:

答案 0 :(得分:10)

Jdk 7(如6)包括基于地铁的实施。

从异常中可以看出,内部实现正在运行“com.sun.xml.internal.ws.transport.http.server.EndpointImpl”。问题似乎是它不喜欢你的WsdlLocation(我相信jaxws期待一个本地资源,但你给它一个http资源)。