【问题标题】:lost in deployment: session.getAttribute() returns NULL in some Tomcat configurations在部署中丢失:session.getAttribute() 在某些 Tomcat 配置中返回 NULL
【发布时间】:2011-05-08 15:41:17
【问题描述】:

我遇到了一些乍一看无法理解的问题。这个故事很简单,但我想解决方案是一些真正的配置/部署问题/不一致的背后。

我已经定义了一个 JSP 和两个 servlet。 JSP 在会话中放入一些东西,servlet 应该获取数据并对其进行操作。主要症状是 servlet 在 Chrome 和 Firefox 中查看 JSP 时看不到会话数据。有趣的是,当使用 Eclipse 内部浏览器以及使用 Internet Explorer(在 Win7 上工作)时,JSP/servlet 确实共享数据。

这里有一些关于本地配置的信息(和后续症状)的详细描述(并且,我相信存在问题):我已经在 c:\labs\eclipse 下安装了 Eclipse (Helios) 和在 c:\labs\tomcat 下解压 Tomcat (7.0.12)。我还安装了启动 Tomcat 的 Sysdeo 插件。

首先,当我使用 Sysdeo Eclipse 插件按钮启动 Tomcat,然后尝试从外部浏览器访问一些与应用程序相关的 URL - 然后找到主 Tomcat 页面,但没有找到应用程序 JSP/页面。但是,当我使用“播放/运行”Eclipse按钮启动Tomcat时(当正在选中Eclipse Web项目时的某些JSP页面时) - 然后我可以 em>请参阅渲染的JSP页面两者 来自 Eclipse 内部浏览器和任何外部浏览器。这两种启动模式有什么区别?

其次,当仅通过“播放/运行”Eclipse 按钮​​启动 Tomcat,并从内部 Eclipse 浏览器或外部 Internet Explorer 浏览器调用 JSP 和 servlet 时,所有数据将被共享由 JSP 和 servlet 正确执行。但是(仅针对相同的启动模式)如果我尝试从外部 Chrome/Firefox 浏览器访问 JSP/servlet - 然后找到 JSP/servlet,但数据似乎没有通过 http 会话共享(打印会话 id并验证它是正确的)。

第三,当我通过“支付/运行”按钮启动 Tomcat 时,我可以仅在使用内部 Eclipse 浏览器时在 Eclipse 控制台中看到 servlet log() 打印。当从外部浏览器调用 JSP/servlet 时 - 我找不到日志打印(但在 Tomcat 日志目录中的文件中只有少数与访问相关的行)。

试图总结我觉得奇怪的技术问题 - 我很可能错过了一些有价值的部署/配置相关信息。请告知我做错了什么,哪个是更好/正确的配置,可以在从所有外部浏览器调用应用程序资源时共享会话数据。如果您需要有关我的配置/环境的任何其他详细信息 - 请询问。

欣赏

【问题讨论】:

    标签: eclipse tomcat servlets httpsession


    【解决方案1】:

    确保您使用的是Eclipse for Java EE developers,而不是面向 Java 开发人员的 Eclipse。它已经内置了一个 Tomcat 服务器插件。 Sysdeo 插件已经很老了,你根本不需要它,如果这毕竟是所描述的一些问题的罪魁祸首,我不会感到惊讶。

    关于使用内部 Eclipse 浏览器与普通 web 浏览器运行 JSP/Servlet,我自己对内部浏览器有过不好的体验,我不建议将它用于“快速测试”之外。但是,它不与其他浏览器共享会话是正常行为。无论如何,它们并不共享相同的浏览器实例。会话不是特定于计算机的,而是特定于浏览器的。

    我只是使用 EE 提供的插件将 Tomcat 集成到 Eclipse 中,通过服务器属性启动和停止它(不是通过右键单击 JSP/Servlet 并选择 Run 或其他东西)并使用真正的网络浏览器访问页面。要正确开始使用 Eclipse 和 Tomcat 开发 JSP/Servlet,我强烈建议您使用 Coreservlets.com 教程。在我们的servlets wiki page 底部,您可以找到几个直接链接。

    【讨论】:

    • 当然,我说的会话共享总是在相同的浏览器实例的上下文中:) 我有 99.999% 的把握我已经下载(并安装)了你推荐的 eclipse 版本,它只是我需要一些 Tomcat 集成(部署、日志等)等调试。 4-5 年前我在使用 servlet,现在看起来很熟悉(但不一样:),还有 Sysdeo 插件。我将阅读您推荐的 coreservlets 链接,以找到更好的配置/开发设置。
    • 我还认为不知何故我有两个 tomcat - 一个是 Eclipse 提供的,另一个是单独安装/解包的,呵呵...
    • 摆脱 Sysdeo 的东西。并且 Eclipse 不附带 Tomcat。我还写过如何正确设置 Eclipse 的教程,但那是针对 JSF 开发的,最近的一篇是使用 Glassfish。虽然在深入研究 JSF 之前学习基本的 Servlet API 会更好,但您可能会发现它也很有用:balusc.blogspot.com/2011/01/…
    • 我听到了。只是寻找卸载SysDeo的方法,看看问题是否消失了。另外 - 这个链接 (coreservlets.com/Apache-Tomcat-Tutorial/…) 是我昨天安装的所有内容,当然不包括 SysDeo(以及对我来说不太重要的 Tomcat 调整),但其他所有内容都是一样的。
    • 看来要摆脱SysDeo插件并不容易。谷歌回复少,这里也没有人回复:stackoverflow.com/questions/5928736/…
    猜你喜欢
    • 2013-12-01
    • 2019-08-25
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    • 2019-09-21
    • 2018-05-03
    • 2012-07-10
    • 2021-11-11
    相关资源
    最近更新 更多