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

时间:2013-04-25 10:23:08

标签: java web-services jax-ws

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

首先,带注释的javax.jws.WebService似乎工作正常,但javax.xml.ws上有大量材料。似乎javax.jws更新,并且没有太多关于它的材料。

这两种方法有什么区别?

2 个答案:

答案 0 :(得分:11)

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

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

e.g。来自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 )。

e.g。来自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;
    }
}

Peer Reynders说:

  

我的猜测是BEA想要在Weblogic中投入与.NET中的等效功能竞争。 (请参阅,在WebLogic中开发Web服务“非常简单”)。此外,JAX-WS 2.0(JSR-224)中指定的注释似乎可为您提供更多控制。但是,JSR-224明确支持/包含JSR-181(JSR-224定义的JSR-224:7.10注释)。

有关更完整的讨论,请参阅JSR 181: a Java Simplification Request

另见:

答案 1 :(得分: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)时,您更有可能遇到这些特定于供应商的元素。