Javax.jws和 javax.xml.ws 有什么区别

2022-09-03 14:18:06

我是Java的新手,并试图跳入WebServices。我在某处找到了两个例子,我对可用的选项感到困惑。

首先,使用注释似乎工作正常,但是 上有大量的材料。它似乎是较新的,并且没有关于它的材料太多。javax.jws.WebServicejavax.xml.wsjavax.jws

这两种方法有什么区别?


答案 1

Web 服务元数据注释 (JSR 181)

使用来自 JSR 181 规范 (java.jws.xxx),您可以对 Web 服务实现类或 Web 服务接口进行批注。

例如,从 Deploy JAX-WS Web Services On Tomcat

package com.mkyong.ws;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

//Service Endpoint Interface
@WebService
@SOAPBinding(style = Style.RPC)
public interface HelloWorld{

    @WebMethod String getHelloWorldAsString();

}

JAX-WS 2.0 注释 (JSR 224)

JSR 224 规范定义了 JAX-WS 2.0 (javax.xml.ws 的注释。xxx)。

例如,从在Java中使用SOAP错误和异常 JAX-WS

@WebFault(name="CheckVerifyFault",
    targetNamespace="http://www.example.com")
public class CheckVerifyFault extends Exception {

    /**
     * Java type that goes as soapenv:Fault detail element.
     */
    private CheckFaultBean faultInfo;

    public CheckVerifyFault(String message, CheckFaultBean faultInfo) {
        super(message);
        this.faultInfo = faultInfo;
    }

    public CheckVerifyFault(String message, CheckFaultBean faultInfo, 
                               Throwable cause) {
        super(message, cause);
        this.faultInfo = faultInfo;
    }

    public CheckFaultBean getFaultInfo() {
        return faultInfo;
    }
}

佩尔·雷恩德斯 说:

我的猜测是,BEA希望现在能把一些东西放到Weblogic中,以便与.NET中的等效功能竞争。(请参阅,在 WebLogic 中开发 Web 服务“同样简单”)。此外,JAX-WS 2.0 (JSR-224) 中指定的注释似乎为您提供了更多的控制。但是,JSR-224 确实显式支持/包含 JSR-181(JSR-224:7.10 由 JSR-181 定义的注释)。

有关更完整的讨论,请参阅 JSR 181:Java 简化请求

另请参阅:


答案 2

这两个包命名空间定义不同的方法。

  • 如果要基于 Web 创建服务,则有两个选项:SOAP 服务(又名 Web 服务)或 REST 服务(又名 RESTful 服务)。
  • 如果在 Java 中实现 SOAP 服务,那么要走的路是使用 JAX-WS 框架。该框架提供了一些工具,如wsimport和wsgen,当然还有一个API。
  • JAX-WS API 包括用于实现 SOAP 服务本身的代码和服务使用者(客户端)代码的注释、类和接口。
  • JAX-WS API 的这些元素总共同时使用和包命名空间。javax.xml.wsjavax.jws
  • 只需按照教程或示例使用 JAX-WS 创建服务即可。不要担心 API 元素来自哪些包。
  • 但请记住避免供应商特定的API元素。在使用 WSDL 和 SOAP 之外的 WS-* 标准(例如 WS-Security)时,您更有可能遇到这些特定于供应商的元素。

推荐