eclipse - 在部署中丢失 : session. getAttribute() 在某些 Tomcat 配置中返回 NULL

标签 eclipse tomcat servlets httpsession

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

我定义了一个 JSP 和两个 servlet。 JSP 将一些东西放在 session 中,而 servlet 应该获取数据并对其进行操作。主要症状是在 Chrome 和 Firefox 中看到 JSP 时,servlet 看不到 session 数据。有趣的是,当使用 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/页面。 However, when I launch Tomcat using the "play/run"Eclipse button (when some JSP page from the Eclipse web project is being selected) - then I can see the rendered JSP page both 来自 Eclipse 内部浏览器和来自任何外部浏览器。这两种启动模式有什么区别?

其次,当仅通过“播放/运行”Eclipse 按钮​​启动 Tomcat,并从内部 Eclipse 浏览器或外部 Internet Explorer 浏览器调用 JSP 和 servlet 时,所有数据都被共享由 JSP 和 servlet 正确执行。但是(只是为了相同的启动模式)如果我试图从外部 Chrome/Firefox 浏览器访问 JSP/servlets - 然后找到 JSP/servlets,但数据似乎不通过 h​​ttp session 共享(打印 session ID并验证它是正确的)。

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

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

欣赏

最佳答案

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

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

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

关于eclipse - 在部署中丢失 : session. getAttribute() 在某些 Tomcat 配置中返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5928446/

相关文章:

eclipse - 获得了不是 ReferenceType 成员的 RefenceType 的 MethodID

java - 插件无法在 Windows 7 64 位 Eclipse 中运行

java - 进入 Eclipse 中的 isAssignableFrom() 方法

android - 将 ImageView 设置为后台 Android

ruby-on-rails - 我怎样才能弄清楚为什么我的 JRuby Rails 应用程序需要很长时间才能提供页面?

tomcat7 maven 插件部署失败

apache - 为 Apache/Tomcat 负载平衡启用粘性 session 模式

Servlet Relay 的 javax.servlet.ServletException : Servlet. init() 引发异常

java - 服务程序 : doGet and doPost

java - 欧元货币出现问号?