我是Java的新手,并尝试跳转到WebServices。我在某个地方找到了两个例子,我对可用的选项感到困惑。
首先,带注释的javax.jws.WebService
似乎工作正常,但javax.xml.ws
上有大量材料。似乎javax.jws
更新,并且没有太多关于它的材料。
这两种方法有什么区别?
答案 0 :(得分:11)
使用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();
}
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;
}
}
我的猜测是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)
这两个包命名空间不定义不同的方法。
javax.xml.ws
和javax.jws
包名称空间。