【问题标题】:Tomcat 8: Starting WebApps in a given orderTomcat 8:按给定顺序启动 WebApp
【发布时间】:2015-04-16 20:04:09
【问题描述】:

在 Java 8 中使用 Tomcat 8.0.15

我需要先加载某个 WebApp,所以我在 server.xml 中添加了以下内容:

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" className="com.my.class.MyCustomHost">
    <Context docBase="app_to_load" path="/app_to_load"/>
</Host>

MyCustomHost 如下所示:

public class MyCustomHost extends StandardHost {
    public MyCustomHost () {
        super();
        this.children = new LinkedHashMap();
    } }

此设置在 Tomcat 7.0.42(使用 Java 7)中有效,但在 Tomcat 8.0.15(使用 Java 8)中,我收到以下错误:

2015 年 4 月 16 日下午 3:36:53 org.apache.tomcat.util.digester.Digester startElement SEVERE:开始事件引发错误 java.lang.IllegalAccessError 在 com.my.class.MyCustomHost.(MyCustomHost.java:18)

我尝试使用的解决方案来自here。任何输入都会有所帮助!谢谢!

【问题讨论】:

标签: java tomcat tomcat8


【解决方案1】:

children 是 Tomcat 8 中的 final 字段(请参阅此源代码 diff),因此更改它是非法的。幸运的是,您可以使用this trick 将其设置为LinkedHashMap,或使用引用的hack(稍作改动)使children 成为非最终版本。

【讨论】:

    猜你喜欢
    • 2016-04-22
    • 2012-02-06
    • 1970-01-01
    • 2016-04-11
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 2012-04-15
    相关资源
    最近更新 更多