我根据Java EE指南使用JAX-WS注释构建了一个SOAP Web服务。
@WebService( name = "PersonDataExposureService" )
public class PersonDataExposureWebServiceBean {
...
@WebMethod
public PersonList retrieveAllPeople() { ...
// get the data and return it ...
}
... more methods ...
}
使用NetBeans向导将Web服务部署到NetBeans中构建的Java EE应用程序中的GlassFish。应用程序部署并在与Web服务相同的WAR中呈现并运行UI。
我正在尝试使用Java EE文档中的一些示例来验证SOAP Web服务的可用性...
http://localhost:8080/DemoApplication-war/PersonDataExposureService?wsdl
或
http://localhost:8080/DemoApplication-war/PersonDataExposureService?retrieveAllPeople
其中DemoApplication-war是NetBeans Java EE向导生成的WAR。
我收到错误:
HTTP Status 404 - Not Found
type Status report
message Not Found
description The requested resource is not available.
如何直接通过URL访问Web服务,直接在浏览器中呈现WSDL和Web服务方法?
我做错了什么?
答案 0 :(得分:0)
在NetBeans IDE中为WAR的导航树的“Web Services”部分的PersonDataExposureService节点调用“Test Web Service”会产生:
http://localhost:8080/DemoApplication-war/PersonDataExposureWebServiceBeanService?Tester
这允许从浏览器直接测试Web服务接口。
随后可以使用以下方式访问WSDL:
http://localhost:8080/DemoApplication-war/PersonDataExposureWebServiceBeanService?wsdl
重定向的命名有点令人困惑,但它确实有效。为什么在Web服务名称后附加额外的“服务”并不是很清楚。如果有人可以对生成的名称提供额外的说明,这将有所帮助。