针对一个web容器的JAR构建java程序并将其部署到另一个容器中的含义

针对一个web容器的JAR构建java程序并将其部署到另一个容器中的含义,java,tomcat,jetty,tomcat7,embedded-jetty,Java,Tomcat,Jetty,Tomcat7,Embedded Jetty,针对一个web容器(比如Jetty)的jar构建一个java程序并在另一个web容器(比如Tomcat)中运行它,这意味着什么 我有一个在Jetty开发期间运行的应用程序,但它被部署到tomcat服务器中用于生产(为什么?因为它似乎更容易开发,而不必运行整个tomcat服务器。)您可能会遇到诸如MethodNotFoundError之类的问题。您通常可以通过确保服务器上安装的JAR版本匹配来解决这些问题。您通常希望在部署位置进行开发。使用tomcat与jetty进行开发可能会稍微困难一些,但是您

针对一个web容器(比如Jetty)的jar构建一个java程序并在另一个web容器(比如Tomcat)中运行它,这意味着什么


我有一个在Jetty开发期间运行的应用程序,但它被部署到tomcat服务器中用于生产(为什么?因为它似乎更容易开发,而不必运行整个tomcat服务器。)

您可能会遇到诸如MethodNotFoundError之类的问题。您通常可以通过确保服务器上安装的JAR版本匹配来解决这些问题。

您通常希望在部署位置进行开发。使用tomcat与jetty进行开发可能会稍微困难一些,但是您已经发现jar冲突可能会造成混乱,因此,既然您部署到了tomcat,那么使用tomcat进行开发似乎不值得吗

另外,通常,针对tomcat/您选择的容器进行开发的痛苦可以通过花时间编写一个ant(或其他)任务来减轻,该任务将把您的代码部署到您的开发容器中。工作周期正在改变

1) 编写新代码
2) 确保测试通过
3) 运行“重新部署”脚本
4) 查看正在运行的实例

你可能想这么做


最后,本着松耦合的精神,如果可以避免的话,您可能不希望依赖特定于容器的库;只有在万不得已的情况下才能这样做。

对于任何非开发人员构建,您应该只针对您目标级别的官方Java EE API进行编译。最好是通过构建引擎。最好在不同的操作系统上开发

对于web应用程序,这意味着从Oracle下载的适当servlet API。类似于企业应用程序

根据我的经验,这是保持正确的最好方法



编辑:Java EE SDK可从中获得。如果您需要比Java EE 6更旧的版本,请点击“早期版本”链接。

谢谢您的回答。在Oracle java网站上可以找到java-ee.jar吗?我假设这就是您所说的“官方JavaEEAPI”的意思。它被称为servlet-API.jar javax.servlet servlet API您使用的特定于容器的库与Tomcat提供的库不同(我猜是它的Push Http又名Comet支持)?第二,在Tomcat中进行开发和Jetty一样简单,特别是如果您有Maven,并且两者几乎同时启动的话。