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

Rel*_*ing 9 java web-services jax-ws

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

首先,javax.jws.WebService注释似乎工作正常,但有大量的材料javax.xml.ws.它似乎javax.jws更新,并没有太多可用的材料.

这两种方法有什么区别?

Pau*_*gas 11

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

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

例如,在Tomcat上部署JAX-WS Web服务

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();

}
Run Code Online (Sandbox Code Playgroud)

JAX-WS 2.0注释(JSR 224)

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

例如,在Java JAX-WS中使用SOAP Faults和Exceptions

@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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Peer Reynders说:

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

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

也可以看看:


Pau*_*son 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)时,您更有可能遇到这些特定于供应商的元素.