首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将嵌入式tomcat 5迁移到tomcat 7

将嵌入式tomcat 5迁移到tomcat 7
EN

Stack Overflow用户
提问于 2013-11-20 00:52:56
回答 1查看 427关注 0票数 0

正在尝试将embedded Tomcat 5迁移到embedded Tomcat 7。在启动过程中获得NPE。

我扩展了嵌入式类,并按正确的顺序执行所有建议的初始化。

NPE出现在以下位置:

代码语言:javascript
复制
Caused by: java.lang.NullPointerException
    at org.apache.catalina.core.ApplicationContext.populateSessionTrackingModes(ApplicationContext.java:1187)
    at org.apache.catalina.core.ApplicationContext.<init>(ApplicationContext.java:126)
    at org.apache.catalina.core.StandardContext.getServletContext(StandardContext.java:2344)
    at org.apache.catalina.core.StandardContext.postWorkDirectory(StandardContext.java:6283)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5251)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

以下是抛出异常的方法的tomcat 7源代码:

代码语言:javascript
复制
private void populateSessionTrackingModes() {
    // URL re-writing is always enabled by default
    defaultSessionTrackingModes = EnumSet.of(SessionTrackingMode.URL);
    supportedSessionTrackingModes = EnumSet.of(SessionTrackingMode.URL);

    if (context.getCookies()) {
        defaultSessionTrackingModes.add(SessionTrackingMode.COOKIE);
        supportedSessionTrackingModes.add(SessionTrackingMode.COOKIE);
    }

    // SSL not enabled by default as it can only used on its own
    // Context > Host > Engine > Service
    Service s = ((Engine) context.getParent().getParent()).getService();
    Connector[] connectors = s.findConnectors();
    // Need at least one SSL enabled connector to use the SSL session ID.
    for (Connector connector : connectors) {
        if (Boolean.TRUE.equals(connector.getAttribute("SSLEnabled"))) {
            supportedSessionTrackingModes.add(SessionTrackingMode.SSL);
            break;
        }
    }
}

问题出现在这里:

代码语言:javascript
复制
Service s = ((Engine) context.getParent().getParent()).getService();

服务变量%s为null。似乎需要在Engine类上设置服务对象。

这是Tomcat7中的新功能吗?不确定需要配置什么才能避免此Service的空值。

EN

回答 1

Stack Overflow用户

发布于 2013-11-20 16:24:58

服务是将引擎与一个或多个连接器链接的对象。创建org.apache.catalina.core.StandardService的默认实例并使用该实例。使用addConnector()向其添加连接器,并使用addContainer()向其添加引擎。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20077352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档