2012-12-31 100 views
1

我玩弄一个简单的Web服务JAX-WS,而无需使用任何花哨的工具Web服务 - 验证输入

我使用JDK 1.6.x上提供内置支持建立这个(没有CXF或地铁等使用) 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的? 我是否需要在我的类路径中导入任何特殊的jar? 谢谢, satish

回答

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

编辑 - 我不知道什么是ex actly该注释被用于但:

  1. 它可以使用JAXB(因此JDK 1.6单独)使用所述Unmarshaller类验证XML有效载荷。看看Unmarshaller.setSchema(),我也有一些例子,让我知道你是否需要它们。
  2. 从注释的命名来看,它看起来更像是从com.sun.xml.internal.ws.developer.SchemaValidation包装上的服务实现bean内部的东西(com.sun.xml...
+0

谢谢 - alessandro - 这是否意味着标准的JDK 1.6不支持模式验证?也可能听起来很愚蠢 - 但你提到的上述两个罐子 - 谁是这些罐子的提供者 - 我也是谷歌 - 但只是对提供者是谁而言 - 而且如果它是由Java人员提供的 - 为什么不是这样? JDK 1.6的一部分?那么这些JAR是否包含在某个更高版本的JDK中呢? –

+0

编辑答案以解决上述问题。 –

0

尝试考虑使用wsdl。在wsdl中 您可以添加所有类型的验证。 WSDL中的验证规则,你用它来实现你的web服务

+0

感谢的注解 - 将看看 –

0

使用@SchemaValidation如果你想使用JDK附带的注解。不过,我必须注意到,至少有两个人在使用此包中的注释时遇到问题。

你试图使用与GlassFish的JAX-WS RI在com.sun.xml.ws.developer.SchemaValidation包捆绑在一起,所以你需要把它列入你的项目的类路径中,如果你想使用,来代替