播放(2.6)SecurityException Hibernate Validator

时间:2017-11-17 06:04:49

标签: java validation playframework hibernate-validator securityexception

我正在将play框架2.6.7与akka结合使用。对于字段验证,我使用hibernate验证器。我确实有使用hibernate验证器

的问题

当我调用validator.validate(..)时,我确实得到了一个setContextClassloader SecurityException(见下文)。 我被绕过"将调用包装在executionContext中的问题如下:

  ExecutionContext executionContext = actorSystem.dispatchers().lookup(AKKA_DEFAULT_DISPATCHER);
        executionContext.execute(() -> {
            Set<ConstraintViolation<MyObject>> violations = validator.validate(object);
           ..
        });

对于表单验证,我使用/调用form.bindFromRequest()方法并仍然得到相同的安全性异常错误。

我尝试使用hibernate-validator 5.4.x以及6.0.x。

我做错了什么? 安全例外的根本原因是什么? 我怎么能摆脱它?

play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[SecurityException: setContextClassLoader]]
        at play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:255)
        at play.api.http.DefaultHttpErrorHandler.onServerError(HttpErrorHandler.scala:180)
        at dd.cms.ErrorHandler.dd$cms$ErrorHandler$$super$onServerError(ErrorHandler.scala:181)
        at dd.cms.ErrorHandler$$anonfun$onServerError$1.apply(ErrorHandler.scala:188)
        at dd.cms.ErrorHandler$$anonfun$onServerError$1.apply(ErrorHandler.scala:143)
Caused by: java.lang.SecurityException: setContextClassLoader
        at java.util.concurrent.ForkJoinWorkerThread$InnocuousForkJoinWorkerThread.setContextClassLoader(ForkJoinWorkerThread.java:244)
        at play.api.inject.ContextClassLoaderInjector.withContext(Injector.scala:125)
        at play.api.inject.ContextClassLoaderInjector.instanceOf(Injector.scala:118)
        at play.inject.DelegateInjector.instanceOf(DelegateInjector.java:22)
        at play.data.validation.DefaultConstraintValidatorFactory.getInstance(DefaultConstraintValidatorFactory.java:26)

0 个答案:

没有答案