【问题标题】:Weblogic 12.2.1 validation.xml parsing errorWeblogic 12.2.1 validation.xml 解析错误
【发布时间】:2022-03-15 17:58:45
【问题描述】:

当我想在 Weblogic 12.2.1 上部署它时,我有一个在其中一个 ejb 模块中有一个 validation.xml 文件的 ear 文件,然后 Weblogic 抛出以下异常:

    <BEA-000000> <Error parsing validation.xml synchronously
java.lang.IllegalArgumentException: URI is not hierarchical
    at java.io.File.<init>(File.java:418)
    at org.eclipse.persistence.jaxb.ValidationXMLReader.parseValidationXML(ValidationXMLReader.java:147)
    at org.eclipse.persistence.jaxb.ValidationXMLReader.call(ValidationXMLReader.java:67)
    at org.eclipse.persistence.jaxb.BeanValidationHelper.parseValidationXml(BeanValidationHelper.java:178)
    at org.eclipse.persistence.jaxb.BeanValidationHelper.getConstraintsMap(BeanValidationHelper.java:143)
    at org.eclipse.persistence.jaxb.BeanValidationHelper.isConstrained(BeanValidationHelper.java:120)
    at org.eclipse.persistence.jaxb.JAXBBeanValidator.isConstrainedObject(JAXBBeanValidator.java:255)
    at org.eclipse.persistence.jaxb.JAXBBeanValidator.shouldValidate(JAXBBeanValidator.java:206)
    at org.eclipse.persistence.jaxb.JAXBUnmarshaller.validateAndBuildJAXBElement(JAXBUnmarshaller.java:235)
    at org.eclipse.persistence.jaxb.JAXBUnmarshaller.unmarshal(JAXBUnmarshaller.java:640)
    at org.hibernate.validator.internal.util.privilegedactions.Unmarshal.run(Unmarshal.java:38)
    at org.hibernate.validator.internal.util.privilegedactions.Unmarshal.run(Unmarshal.java:20)
    at org.hibernate.validator.internal.xml.ValidationXmlParser.run(ValidationXmlParser.java:201)
    at org.hibernate.validator.internal.xml.ValidationXmlParser.unmarshal(ValidationXmlParser.java:125)
    at org.hibernate.validator.internal.xml.ValidationXmlParser.parseValidationXml(ValidationXmlParser.java:81)
    at org.hibernate.validator.internal.engine.ConfigurationImpl.getBootstrapConfiguration(ConfigurationImpl.java:353)
    at org.hibernate.validator.internal.cdi.ValidationExtension.<init>(ValidationExtension.java:120)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at org.jboss.weld.util.ServiceLoader.prepareInstance(ServiceLoader.java:240)
    at org.jboss.weld.util.ServiceLoader.loadService(ServiceLoader.java:214)
    at org.jboss.weld.util.ServiceLoader.loadServiceFile(ServiceLoader.java:182)
    at org.jboss.weld.util.ServiceLoader.reload(ServiceLoader.java:162)
    at org.jboss.weld.util.ServiceLoader.iterator(ServiceLoader.java:297)
    at com.oracle.injection.provider.weld.BasicDeployment.getExtensions(BasicDeployment.java:106)
    at com.oracle.injection.provider.weld.WeldInjectionContainer.initialize(WeldInjectionContainer.java:92)
    at com.oracle.injection.integration.CDIAppDeploymentExtension.initCdi(CDIAppDeploymentExtension.java:64)
    at com.oracle.injection.integration.CDIAppDeploymentExtension.activate(CDIAppDeploymentExtension.java:41)
    at weblogic.application.internal.flow.AppDeploymentExtensionFlow.activate(AppDeploymentExtensionFlow.java:39)
    at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:753)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)
    at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:263)
    at weblogic.application.internal.EarDeployment.activate(EarDeployment.java:67)
    at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:165)
    at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:80)
    at weblogic.deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java:601)
    at weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:171)
    at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doCommit(ActivateOperation.java:121)
    at weblogic.deploy.internal.targetserver.operations.AbstractOperation.commit(AbstractOperation.java:343)
    at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentCommit(DeploymentManager.java:895)
    at weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java:1422)
    at weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:454)
    at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.commit(DeploymentServiceDispatcher.java:181)
    at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:195)
    at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$100(DeploymentReceiverCallbackDeliverer.java:13)
    at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$2.run(DeploymentReceiverCallbackDeliverer.java:68)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:643)
    at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:348)
    at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:333)
    at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:54)
    at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
    at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:617)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:397)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:346)

validation.xml 文件的内容如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
<validation-config
        xmlns="http://jboss.org/xml/ns/javax/validation/configuration"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="
                    http://jboss.org/xml/ns/javax/validation/configuration
                    validation-configuration-1.1.xsd"
        version="1.1">
</validation-config>

如何在weblogic 12.2.1上部署带有validation.xml的ear文件?

【问题讨论】:

  • 运气好吗?我遇到了完全相同的问题
  • 我将validation.xml文件从ejb模块移动到ear文件的META-INF并修复了

标签: bean-validation weblogic12c


【解决方案1】:

这也让我发疯。我尝试将 bean 验证降级到 1.0,但没有帮助。

Here 他们建议忽略它,因为它只是警告,请将记录器设置为 SEVERE 级别。

【讨论】:

    【解决方案2】:

    我在使用 Web 应用程序时遇到了同样的问题。

    在我的例子中,validation.xml 在我的一个罐子里。我能够通过将文件直接移动到正在部署的战争中来解决问题。

    如果是耳朵文件,我相信同样的解决方案应该可以工作。

    【讨论】:

      【解决方案3】:

      我认为这是 EclipseLink/TopLink 中的一个错误(用于 WLS 12.2.1 及更高版本中的 JPA 和 JAXB 绑定)。我在 EclipseLink 论坛中打开了一个 FORUM 条目:https://www.eclipse.org/forums/index.php/m/1759047/#msg_1759047

      总结:他们尝试像这样读取validation.xml资源:

      URL validationXml = Thread.currentThread().getContextClassLoader().getResource("META INF/validation.xml");
      

      然后:

      new File(validationXml.toURI())
      

      但 toURI 包含一个如下所示的 URI:

       The URL.toString is: zip:/local/saladin/wls12/weblogic/12.2.1.0.0/domains/XXXX/servers/AdminServer/tmp/_WL_user/xxxx-application_1.5.5_dev-SNAPSHOT/s86txs/lib/xxx-xxxx-xxxxdatamodel-1.5.5_dev-SNAPSHOT.jar!/META-INF/validation.xml
      

      所以这不是一个文件,因此它不能工作。

      正确的方法是将资源作为流而不是文件。但至于解决方案,我真的不知道如何在不修改 EclipseLink 源代码的情况下修复它。在日志文件中有这些警告并且对此无能为力是非常难看的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-04-02
        • 1970-01-01
        • 2016-11-29
        • 1970-01-01
        • 1970-01-01
        • 2018-12-04
        • 2018-04-26
        相关资源
        最近更新 更多