【问题标题】:Validation problem while deploying Wiremock to Weblogic as a war将 Wiremock 作为战争部署到 Weblogic 时的验证问题
【发布时间】:2018-10-16 21:23:25
【问题描述】:

我需要将 Wiremock 作为 WAR 部署到 Weblogic 12.2.1.2,但在部署期间我得到了一个很长的异常。 我使用来自 git 的 sample-war project 中的 web.xml 文件。

在我的 pom.xml 中,我只使用以下依赖项:

<dependency>
    <groupId>com.github.tomakehurst</groupId>
    <artifactId>wiremock</artifactId>
    <version>2.19.0</version>
</dependency>

我可以将我的 WAR 部署到 Tomcat 9.x 并且一切正常。 但是我需要使用 Weblogic 并且相同的 WAR 在那里不起作用。这是我得到的长异常的开始:

####<oct 16, 2018, 10:03:26,646 DU CEST> <Error> <Munger> <mylinux> <AdminServer> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <weblogic> <> <00dcc5b7-e294-4d36-943a-2d6d188fdd23-00000013> <1539720206646> <[severity-value: 8] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] > <BEA-2156200> <Unable to load descriptor /home/user/servers/oracle/weblogic/12.2.1.2.0/user_projects/domains/base_domain/servers/AdminServer/tmp/.appmergegen_1539720205648_wire-mock-demo-1.0-SNAPSHOT.war/WEB-INF/web.xml of module wire-mock-demo-1.0-SNAPSHOT.war. The error is weblogic.descriptor.DescriptorException: VALIDATION PROBLEMS WERE FOUND
  <7:11> problem: cvc-complex-type.2.4b: Element not allowed: description@http://xmlns.jcp.org/xml/ns/javaee in element listener@http://xmlns.jcp.org/xml/ns/javaee
at weblogic.descriptor.internal.MarshallerFactory$1.evaluateResults(MarshallerFactory.java:245)
at weblogic.descriptor.internal.MarshallerFactory$1.evaluateResults(MarshallerFactory.java:231)
at weblogic.descriptor.internal.MarshallerFactory$1.createDescriptor(MarshallerFactory.java:155)
at weblogic.descriptor.BasicDescriptorManager.createDescriptor(BasicDescriptorManager.java:345)
at weblogic.descriptor.BasicDescriptorManager.createDescriptor(BasicDescriptorManager.java:307)
at weblogic.application.descriptor.AbstractDescriptorLoader2.getDescriptorBeanFromReader(AbstractDescriptorLoader2.java:870)
at weblogic.application.descriptor.AbstractDescriptorLoader2.createDescriptorBean(AbstractDescriptorLoader2.java:445)
at weblogic.application.descriptor.AbstractDescriptorLoader2.loadDescriptorBeanWithoutPlan(AbstractDescriptorLoader2.java:832)
at weblogic.application.descriptor.AbstractDescriptorLoader2.loadDescriptorBean(AbstractDescriptorLoader2.java:841)
at weblogic.servlet.internal.WebAppDescriptor.getWebAppBean(WebAppDescriptor.java:145)
at weblogic.servlet.utils.WarUtils.getWebAppBean(WarUtils.java:201)
at weblogic.servlet.tools.WARModule.loadDescriptors(WARModule.java:451)
at weblogic.servlet.tools.WARModule.merge(WARModule.java:520)
at weblogic.application.compiler.ToolsModuleWrapper.merge(ToolsModuleWrapper.java:96)
at weblogic.application.utils.CustomModuleManager.merge(CustomModuleManager.java:78)
at weblogic.application.compiler.flow.SingleModuleMergeFlow.proecessModule(SingleModuleMergeFlow.java:27)
at weblogic.application.compiler.flow.SingleModuleFlow.compile(SingleModuleFlow.java:64)
at weblogic.application.compiler.FlowDriver$FlowStateChange.next(FlowDriver.java:70)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)

我已经检查了提到的web.xm 文件,但这完全没问题。我也尝试过使用web.xml v3.03.1。他们两个都不工作。 看来真正的问题不在于 web.xml 文件。来自听众:com.github.tomakehurst.wiremock.servlet.WireMockWebContextListener

您知道这里出了什么问题以及如何解决吗?

【问题讨论】:

    标签: java weblogic war weblogic12c wiremock


    【解决方案1】:

    需要执行以下步骤才能使 WAR 文件与 WireMock 2.19.0 一起使用:

    问题(1)

    元素不允许: 描述@http://xmlns.jcp.org/xml/ns/javaee 在元素中 听众@http://xmlns.jcp.org/xml/ns/javaee

    解决方案:从web.xml 文件的listener 部分中删除description 标记。

    问题(2)

    com.github.tomakehurst.wiremock.common.ServletContextFileSource.getRootFile(ServletContextFileSource.java:35) 处的 java.lang.NullPointerException

    解决方案 1:Weblogic 管理控制台 > 域 > Web 应用程序 > 单击复选框“已启用存档真实路径”

    解决方案2:将weblogic.xml文件添加到WEB_INF目录,内容:

    <weblogic-web-app>
        <container-descriptor>
            <show-archived-real-path-enabled>true</show-archived-real-path-enabled>
        </container-descriptor>
    </weblogic-web-app>
    

    问题(3)

    类路径冲突

    prefer-application-packages 添加到WEB_INF/weblogic.xml 文件:

    <prefer-application-packages>
        <package-name>com.fasterxml.jackson.*</package-name>
        <package-name>com.google.common.*</package-name>
        <package-name>com.google.thirdparty.*</package-name>
        <package-name>net.minidev.json.*</package-name>
    </prefer-application-packages>
    

    问题(4)

    更改WireMockHandlerDispatchingServlet的映射URL:

    <servlet>
        <servlet-name>wiremock-mock-service-handler-servlet</servlet-name>
        ...
        <init-param>
            <param-name>mappedUnder</param-name>
            <param-value>/mapping</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>wiremock-mock-service-handler-servlet</servlet-name>
        <url-pattern>/mapping/*</url-pattern>
    </servlet-mapping>
    

    问题(5)

    排除Jetty相关依赖:

    <dependency>
        <groupId>com.github.tomakehurst</groupId>
        <artifactId>wiremock</artifactId>
        <version>2.19.0</version>
        <exclusions>
            <exclusion>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-server</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-servlet</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-servlets</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-webapp</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    

    +1

    删除 WireMock 管理服务。

    WEB_INF/weblogic.xml 文件中删除wiremock-admin-handler-servlet servlet 及其servlet-mapping 配置。

    通过上述步骤,您可以构建一个可部署到 Weblogic 12.2.x 服务器的 WAR。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-05
      • 2011-01-24
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多