【问题标题】:Share Classloader between multiple in Jetty Maven Plugin在 Jetty Maven 插件中的多个之间共享 Classloader
【发布时间】:2017-07-12 15:12:45
【问题描述】:

我正在尝试配置 maven jetty 插件来启动我的战争应用程序,但它有一些复杂性,如下描述:

1º - 它与 ejb jar 有依赖关系; 2º - 它与战争有依赖关系(标签 jstl:import context="nscl"); 3º - 战争之间的类加载器必须共享。

所以,我需要一些帮助来解决第三个问题。在 pom.xml 中查看我的码头插件配置:

        <plugin>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>9.4.1.v20170120</version>
            <configuration>
                <useProvidedScope>true</useProvidedScope>
                <useTestScope>true</useTestScope>
                <webApp>
                    <contextPath>/nscl/cntr</contextPath>
                </webApp>
                <contextHandlers>
                    <contextHandler implementation="org.eclipse.jetty.maven.plugin.JettyWebAppContext">
                        <war>${contexto.war.path}</war>
                        <contextPath>/nscl</contextPath>
                    </contextHandler>
                </contextHandlers>
                <systemProperties>
                    <systemProperty>
                        <name>spring.profiles.active</name>
                        <value>test</value>
                    </systemProperty>
                </systemProperties>
            </configuration>
        </plugin>

问题是,当码头开始第二次战争(context-path = nscl)时,我收到问题说用于启动第一次战争的类不存在到第二次,示例是 spring 框架的类。

谢谢!!!!

【问题讨论】:

    标签: java maven classloader embedded-jetty maven-jetty-plugin


    【解决方案1】:

    您正在达到标准 Servlet 规范行为。

    您的 WebApp 不能共享同一个 ClassLoader。

    这是 Servlet Spec WebApp 的基本组成部分,即 ClassLoader 隔离。

    试图强制它只会给 ClassLoader 层次结构带来神秘问题(InvalidClassChange 错误、内存泄漏、GC 失败等)

    也许你可以详细说明为什么你认为你需要这个。

    因为可能已经有一种使用 Servlet 规范的特性来完成它的标准方法(而不是与之抗衡)。

    【讨论】:

      猜你喜欢
      • 2013-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      • 2014-12-29
      • 1970-01-01
      • 2018-08-23
      • 1970-01-01
      相关资源
      最近更新 更多