Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
Jaxb spring ws-bean验证未经授权的@RequestPayload_Jaxb_Bean Validation_Spring Ws - Fatal编程技术网

Jaxb spring ws-bean验证未经授权的@RequestPayload

Jaxb spring ws-bean验证未经授权的@RequestPayload,jaxb,bean-validation,spring-ws,Jaxb,Bean Validation,Spring Ws,在SpringWS2中,是否可以使用jsr303获取未经授权的有效负载以进行验证。 其思想是对我创建的每个端点执行此操作,而无需在每个端点中显式创建验证代码。(例如,使用拦截器或某种侦听器) 我尝试扩展EndpointInterceptor,但这里没有解组对象。 我还尝试为jaxb解组器实现Unmarshaller.Listener。通过spring上下文注册,但这里有两个问题: 1.它仅在初始化jaxb封送器bean时设置解组器侦听器。 2.Jaxb解组器是在每个请求上创建的,并且在为该特定请

在SpringWS2中,是否可以使用jsr303获取未经授权的有效负载以进行验证。 其思想是对我创建的每个端点执行此操作,而无需在每个端点中显式创建验证代码。(例如,使用拦截器或某种侦听器)

我尝试扩展EndpointInterceptor,但这里没有解组对象。 我还尝试为jaxb解组器实现Unmarshaller.Listener。通过spring上下文注册,但这里有两个问题: 1.它仅在初始化jaxb封送器bean时设置解组器侦听器。 2.Jaxb解组器是在每个请求上创建的,并且在为该特定请求创建解组器的过程中不会设置侦听器。我不认为有办法在每一个请求上都注入这个

那么,有没有其他方法可以实现这一目标


提前感谢。

因为SpringWS端点是普通的SpringBean,所以您只需使用Spring的AOP功能并创建一个方面来验证传递的对象


如果您使用Spring3.1和HibernateValidator4.2作为Bean验证提供程序,那么还可以使用HibernateValidator的特性。Spring提供了一种方法,用于对所有带注释的bean执行方法验证。

因为Spring WS端点是普通的Spring bean,所以您可以使用Spring的AOP功能并创建一个方面来验证传递的对象


如果您使用Spring3.1和HibernateValidator4.2作为Bean验证提供程序,那么还可以使用HibernateValidator的特性。Spring提供了一种方法,用于对所有带注释的bean执行方法验证。

如果您不想使用AOP,这是一种方法:

  • 您需要扩展在子类中排序的DefaultMethodEndpointAdapter和实现(例如:

    DefaultMethodEndpointAdapterWithJSRValidation扩展DefaultMethodEndpointAdapter实现有序{…)

  • 确保在子类中覆盖以下内容:

    1.1在此方法中,您将添加jsr验证内容:

    @Override
    public Object[] getMethodArguments ...
    
    1.2此方法确保使用您的bean代替默认bean

    @Override
    public int getOrder() {
      return Integer.MIN_VALUE;
    }
    
  • 您可以在spring上下文中注册bean,如下所示:

  • 玩得开心。

    如果你不想使用AOP,这是一种方法:

  • 您需要扩展在子类中排序的DefaultMethodEndpointAdapter和实现(例如:

    DefaultMethodEndpointAdapterWithJSRValidation扩展DefaultMethodEndpointAdapter实现有序{…)

  • 确保在子类中覆盖以下内容:

    1.1在此方法中,您将添加jsr验证内容:

    @Override
    public Object[] getMethodArguments ...
    
    1.2此方法确保使用您的bean代替默认bean

    @Override
    public int getOrder() {
      return Integer.MIN_VALUE;
    }
    
  • 您可以在spring上下文中注册bean,如下所示:
  • 玩得开心