14

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

首先,javax.jws.WebService使用注释似乎可以正常工作,但javax.xml.ws. 它似乎javax.jws较新,并且没有太多可用的材料。

这两种方法有什么区别?

4

2 回答 2

13

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

使用 JSR 181 规范 ( ) 中的注释,您可以注释 Web 服务实现类或 Web 服务接口。java.jws.xxx

例如来自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

例如来自Using SOAP Faults and Exceptions in Java 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;
    }
}

同行 Reynders说:

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

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

也可以看看:

于 2013-04-25T11:47:57.230 回答
5

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

  • 如果您基于 Web 创建服务,则有两个选项:SOAP 服务(AKA Web 服务)或 REST 服务(AKA 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)时,您更有可能遇到这些供应商特定的元素。
于 2014-09-10T13:32:08.367 回答