有人告诉我Java 7应该包含JAX-WS,因此我不需要像Apache CXF这样的库。 但是,官方文档说:
此版本包含用于XML处理的Java API(JAXP)1.4.5, 支持XML绑定的Java体系结构(JAXB)2.2.3,并支持XML Web服务的Java API(JAX-WS)2.2.4。
此外,Eclipse关于JAX-WS的页面提到要使用如Apache CXF、Sun Metro或Apache Axis等实现。我能找到的所有JAX-WS示例/教程都使用了类似CXF或Metro的库集。
我在Eclipse中有一个项目,对带有javax.jws.WebService注释的类调用"Endpoint.publish(...)"。下面引用的WSDL文件位于Eclipse之外。此项目与包括Apache CXF库的情况下正常运行(作为"Java应用程序")。一旦我删除它们(和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的东西提供了实现。请指出哪种情况是正确的,并附上相关链接。