Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAX-WS使用@SchemaValidation验证WebLogic中的模式_Java_Web Services_Weblogic_Jax Ws - Fatal编程技术网

Java JAX-WS使用@SchemaValidation验证WebLogic中的模式

Java JAX-WS使用@SchemaValidation验证WebLogic中的模式,java,web-services,weblogic,jax-ws,Java,Web Services,Weblogic,Jax Ws,我没能找到解决方案,我发现更多的人陷入了同样的问题,所以我将在这里发布 默认情况下,至少用于WebLogic的JAX-WS服务器不会验证接收到的消息及其关联的模式 这可能会导致很多问题,因为任何无效值错误的xsd:dateTime格式、数字字段上的字母等都会导致Java对象(包括必填字段)中出现空值 我需要做的是由服务器提供一个简单的验证 import com.sun.xml.internal.ws.developer.SchemaValidation; @Stateless @WebServ

我没能找到解决方案,我发现更多的人陷入了同样的问题,所以我将在这里发布

默认情况下,至少用于WebLogic的JAX-WS服务器不会验证接收到的消息及其关联的模式

这可能会导致很多问题,因为任何无效值错误的xsd:dateTime格式、数字字段上的字母等都会导致Java对象(包括必填字段)中出现空值

我需要做的是由服务器提供一个简单的验证

import com.sun.xml.internal.ws.developer.SchemaValidation;

@Stateless
@WebService(portName="ValidatedService")
@SchemaValidation
public class ValidatedService {

    public void operation(@WebParam(name="request") ValidatedRequest request) {

        /* do stuff */
    }
}
出于某种原因,当我尝试使用提供的架构验证时,我遇到了以下异常:

Caused By: javax.xml.ws.WebServiceException: Annotation @com.sun.xml.internal.ws.developer.SchemaValidation(handler=class com.sun.xml.internal.ws.server.DraconianValidationErrorHandler) is not recognizable, atleast one constructor of class com.sun.xml.internal.ws.developer.SchemaValidationFeature should be marked with @FeatureConstructor

我不希望实现任何自定义验证器。服务器应该以简单明了的配置提供这种类型的服务。

问题是:我对@SchemaValidation使用了错误的包

对我来说,正确的类是com.sun.xml.ws.developer.SchemaValidation,它使用WLS 10.3.6在文件mw_home\modules\glassfish.jaxws.rt_1.3.0.0_2-1-5.jar中提供

在前面的代码段中,我引用了错误的包:com.sun.xml.internal。。。但是,使用WebLogic提供的一个可以立即起作用

如果您使用Maven并使用绑定的JAR作为依赖项,那么类路径中可能没有这个库,这就导致了这个问题。您只需要通过依赖项提供的作用域将其添加到类路径中,并在JAX-WSWebService类中引用该类名的正确包—抽象类无法做到这一点

更多信息请参见页面


目前,这种模式验证对我来说已经足够了,因为我不需要任何自定义行为。

问题是:我对@SchemaValidation使用了错误的包

对我来说,正确的类是com.sun.xml.ws.developer.SchemaValidation,它使用WLS 10.3.6在文件mw_home\modules\glassfish.jaxws.rt_1.3.0.0_2-1-5.jar中提供

在前面的代码段中,我引用了错误的包:com.sun.xml.internal。。。但是,使用WebLogic提供的一个可以立即起作用

如果您使用Maven并使用绑定的JAR作为依赖项,那么类路径中可能没有这个库,这就导致了这个问题。您只需要通过依赖项提供的作用域将其添加到类路径中,并在JAX-WSWebService类中引用该类名的正确包—抽象类无法做到这一点

更多信息请参见页面


目前,这种模式验证对我来说已经足够了,因为我不需要任何自定义行为。

在我的例子中:包含许多模块的Maven项目。我在尝试将应用程序部署到tomcat时遇到了下一个错误:

无法分析运行时描述符:javax.xml.ws.webserviceeexception:Annotation@com.sun.xml.ws.developer.SchemaValidationhandler=class com.sun.xml.ws.server.DraconianValidationErrorHandler不可识别,类com.sun.xml.ws.developer.SchemaValidationFeature的至少一个构造函数应标记为@FeatureConstructor

我通过在WEB-INF/lib中不包含jaxws-rt.jar解决了这个问题。 这个库似乎已经存在于tomcat/lib文件夹中

刚刚调整了pom.xml,设置了这个依赖项的作用域。
现在一切正常。

在我的例子中:包含许多模块的Maven项目。我在尝试将应用程序部署到tomcat时遇到了下一个错误:

无法分析运行时描述符:javax.xml.ws.webserviceeexception:Annotation@com.sun.xml.ws.developer.SchemaValidationhandler=class com.sun.xml.ws.server.DraconianValidationErrorHandler不可识别,类com.sun.xml.ws.developer.SchemaValidationFeature的至少一个构造函数应标记为@FeatureConstructor

我通过在WEB-INF/lib中不包含jaxws-rt.jar解决了这个问题。 这个库似乎已经存在于tomcat/lib文件夹中

刚刚调整了pom.xml,设置了这个依赖项的作用域。
现在一切正常。

我也使用Maven。我们打包了JAR并发布到Nexus服务器,并将其用作提供的依赖项。我们将JAR打包并发布到Nexus服务器,并将其用作提供的依赖项。