Tomcat 8:按给定顺序启动WebApps

时间:2015-04-16 20:04:09

标签: java tomcat tomcat8

将Tomcat 8.0.15与Java 8一起使用

我需要首先加载某个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:Begin事件抛出错误   java.lang.IllegalAccessError at   com.my.class.MyCustomHost。(MyCustomHost.java:18)

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

1 个答案:

答案 0 :(得分:0)

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