0

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

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

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

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

其次,当仅通过“播放/运行”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 日志目录中的文件中只有少数与访问相关的行)。

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

欣赏

4

1 回答 1

0

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

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

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

于 2011-05-08T15:59:56.923 回答