webservices - 验证输入

时间:2012-12-31 12:19:51

标签: java web-services jax-ws

我正在使用简单的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

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

3 个答案:

答案 0 :(得分: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...

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果您希望使用JDK附带的注释,请使用服务实现bean上的@SchemaValidation包中的com.sun.xml.internal.ws.developer.SchemaValidation。我必须注意到,我已经看过至少两个人在使用此包中的注释时遇到问题的情况。

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