1

我正在玩一个简单的 web 服务 JAX-WS 而不使用任何花哨的工具(不使用 CXF 或 Metro 等)

我正在使用 JDK 1.6.x 提供的内置支持来创建此 Web 服务(JDK 6 中的 JAX-WS RI 2.1.6)

我的问题 - 我想在我的网络服务中引入验证,所以我想我会使用“@SchemaValidation”

也尝试导入它 - 但代码无法编译

我的代码快照:

package com.mkyong.ws;
import javax.jws.WebService;
**import com.sun.xml.ws.developer.SchemaValidation;**


@WebService(endpointInterface = "com.mkyong.ws.HelloWorld")
**@SchemaValidation()**  
public class HelloWorldImpl implements HelloWorld{

编译时出现异常:

javac com\mkyong\ws\HelloWorldImpl.java
com\mkyong\ws\HelloWorldImpl.java:3: package com.sun.xml.ws.developer does not exist
import com.sun.xml.ws.developer.SchemaValidation;
                           ^
com\mkyong\ws\HelloWorldImpl.java:8: cannot find symbol
symbol: class SchemaValidation
@SchemaValidation()
^
2 errors

所以我的问题是:我们不能在 RI 的 JDK1.6 实现中使用这个注释吗?我需要在我的类路径中导入任何特殊的 jar 吗?谢谢,萨蒂什

4

3 回答 3

1

根据JarFinder:

http://www.jarfinder.com/index.php/java/info/com.sun.xml.ws.developer.SchemaValidation

  • jaxws-rt-2.1.4.jar
  • jaxws-rt-2.1.3.jar

编辑-我不知道该注释的确切用途,但是:

  1. 可以使用 JAXB(因此仅使用 JDK 1.6)使用Unmarshaller该类来验证 XML 有效负载。看看Unmarshaller.setSchema(),我也有一些例子,如果你需要的话,让我知道。
  2. 从注解的命名空间来看,它看起来更像是一些内部的东西(com.sun.xml...
于 2012-12-31T13:09:52.547 回答
0

尝试考虑使用 wsdl。在 wsdl 中,您可以添加所有类型的验证。wsdl 中的验证规则与您用于实现 Web 服务的语言无关

于 2012-12-31T12:26:29.333 回答
0

如果您希望使用JDK 附带的注解,请@SchemaValidation从服务实现 bean 的包中使用。com.sun.xml.internal.ws.developer.SchemaValidation不过我必须注意,我至少看到过两个例子,人们在使用这个包中的注释时遇到了问题。

您尝试使用的注释在com.sun.xml.ws.developer.SchemaValidation包中与 glassfish 的 JAX-WS RI 捆绑在一起,因此如果您想使用它,则需要将其包含在项目的类路径中

于 2013-01-01T17:44:49.280 回答