Web服务 - 验证输入(webservices - validating input)

2019-10-17 12:57发布

我在玩弄一个简单的Web服务JAX-WS,而无需使用任何花哨的工具(无CXF或地铁等使用)

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

我的问题 - 我想在我的web服务引入验证,所以我想我会用“@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的? 我是否需要导入任何特殊的罐子在我的类路径? 谢谢,萨蒂什

Answer 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单独)来验证使用所述XML有效负载Unmarshaller类。 看看到Unmarshaller.setSchema()我也有一些例子,让我知道如果你需要他们。
  2. 从注释的命名来看,它看起来更像是内部的东西( com.sun.xml...


Answer 2:

尽量考虑使用WSDL。 在WSDL您可以添加所有类型的验证的。 WSDL中的验证规则是语言的独立的使用来实现你的web服务



Answer 3:

使用@SchemaValidationcom.sun.xml.internal.ws.developer.SchemaValidation如果你想使用JDK附带注释的服务实现bean的包。 我必须指出,虽然,我已经看到至少两个实例,人们不得不使用这个包中的注释问题。

你试图使用注释在捆绑了GlassFish的JAX-WS RI com.sun.xml.ws.developer.SchemaValidation包,所以你需要把它列入你的项目的类路径中,如果你想利用这不是



文章来源: webservices - validating input