针对一个 Web 容器(比如 Jetty)的 jar 构建一个 java 程序并在另一个(比如 Tomcat)中运行它有什么影响?
我有一个应用程序,我在开发期间在 Jetty 中运行,但它被部署到 tomcat 服务器中进行生产(为什么?因为它似乎更容易开发而无需运行整个 tomcat 服务器。)
针对一个 Web 容器(比如 Jetty)的 jar 构建一个 java 程序并在另一个(比如 Tomcat)中运行它有什么影响?
我有一个应用程序,我在开发期间在 Jetty 中运行,但它被部署到 tomcat 服务器中进行生产(为什么?因为它似乎更容易开发而无需运行整个 tomcat 服务器。)
对于任何非开发人员构建,您应该只针对您的目标级别的官方 Java EE API 进行编译。最好通过构建引擎。最好在与您开发的操作系统不同的操作系统上。
对于 Web 应用程序,这意味着从 Oracle 下载的适当 servlet API。类似的企业应用程序。
以我的经验,这是保持直截了当的最佳方法。
编辑:Java EE SDK 可从http://www.oracle.com/technetwork/java/javaee/downloads/index.html获得。如果您需要 Java EE 6 之前的版本,请点击“Previous Releases”链接。
您通常希望在部署位置进行开发。使用 tomcat 与 jetty 进行开发可能会稍微困难一些,但是您已经确定了 jar 冲突问题的潜在混乱,因此使用 tomcat 进行开发似乎不值得,因为您部署到 tomcat?
此外,通常通过花时间编写将代码部署到开发容器的 ant(或其他)任务来减轻针对 tomcat/您选择的容器进行开发的痛苦。工作周期开始
1) 编写新代码
2) 确保测试通过
3) 运行您的“重新部署”脚本
4) 在正在运行的实例中四处寻找
你可能想这样做。
最后,本着松耦合的精神,如果可以避免的话,您可能不想依赖特定于容器的库;仅将其作为绝对的最后手段。
您可能会遇到 MethodNotFoundError 等问题。您通常可以通过确保安装在服务器上的 jar 版本匹配来解决这些问题。