【问题标题】:How to override JAX-WS web service endpoint defined with @WebService and @Staless?如何覆盖使用@WebService 和@Staless 定义的JAX-WS Web 服务端点?
【发布时间】:2016-06-08 06:39:36
【问题描述】:

我已经用@WebService 和@Stateless 注释了类,如下面的sn-p 所示。

@Stateless
@WebService
public class BookManagerService implements BookManager{
// Body
}

我想知道默认情况下定义此 Web 服务将部署在哪个端点上的规范是什么。是否有任何 JAX-WS 提供者独立机制来覆盖此默认端点?

编辑:例如,WebLogic 上的默认模式如下:

http(s)://<server.hostname>:<server.port>/<className>/<className>Service

我希望能够覆盖之后的所有内容:

http(s)://<server.hostname>:<server.port>/

我还想知道这个端点格式是标准的(以及它的定义位置)还是特定于 JAX-WS 提供者。

【问题讨论】:

    标签: jakarta-ee ejb jax-ws


    【解决方案1】:

    可在此处下载 Java API for XML Web Services (JAX-WS) 规范:

    http://www.oracle.com/technetwork/java/javaee/tech/webservices-139501.html

    同样相关的是 JSR 181,Java 平台的 Web 服务元数据,可以从同一页面下载。它包括 WebService 注释的完整规范。

    @WebService 注释属性可以覆盖默认值,它们在此处记录:

    http://docs.oracle.com/javaee/6/api/javax/jws/WebService.html

    例子:

    http://tomee.apache.org/examples-trunk/simple-webservice/README.html

    【讨论】:

    • 我认为这对我的具体情况没有帮助:)。我知道我可以用注释覆盖东西,但问题是覆盖端点!我不关心 WSDL 位置部分 :)。
    • @Abbadon 您可以编辑您的问题并显示您的实际端点和所需端点值的示例吗?
    【解决方案2】:

    我不明白这个问题。端点是这样的 URL:

    http://server:port/appContext/ws-servlet-url/ws-name

    • 服务器和端口由您部署的应用服务器定义。

    • appContext 和 webservice servlet url 模式在 web.xml 中定义。您也可以在部署时更改 appContext。

    • Web 服务名称是类的名称或您使用 serviceName 注释选择的值。

    您要覆盖哪些值?

    【讨论】:

    • 这对于不是无状态会话 bean 的 Web 服务可能是正确的,但对于使用 @WebService 和 @Stateless 注释的 Web 服务,至少在 WebLogic 上,默认模式如下:http(s): //://Service
    猜你喜欢
    • 2015-07-21
    • 1970-01-01
    • 2023-03-17
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    相关资源
    最近更新 更多