gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 23:40:38 26 4
gpt4 key购买 nike

尝试将嵌入式 Tomcat 5 迁移到嵌入式 Tomcat 7。在启动过程中获取 NPE。

我扩展了 Embedded 类并按照正确的顺序执行所有建议的初始化。

NPE 发生在这里:

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 源代码:

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;
}
}
}

问题发生在这里:

Service s = ((Engine) context.getParent().getParent()).getService();

服务变量 s 为空。看来需要在 Engine 类上设置一个服务对象。

这是 Tomcat 7 中的新内容吗?不确定需要配置什么来避免服务出现此空值。

最佳答案

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

关于tomcat - 将嵌入式 tomcat 5 迁移到 tomcat 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20077352/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com