Tomcat无法处理的Java EE方案

Mat*_*ias 13 jboss tomcat glassfish java-ee java-ee-6

Tomcat仅实现Java Enterprise Edition体系结构的Web容器.相比之下,例如GlassFish实现了完整的Java EE堆栈.这已经在stackoverflow上进行了很多讨论.

但是,对于像我这样的Java EE初学者来说很难想象Tomcat无法做到什么.你能举个简短的例子吗?

Jes*_*ebb 9

Apache tomcat文档:

tomcat是EJB服务器吗?我可以在tomcat中使用EJB吗?

Tomcat不是EJB服务器.Tomcat不是完整的J2EE服务器.Tomcat是一个Servlet容器.Tomcat确实支持Servlet所需的J2EE规范部分,例如JNDI功能的子集.此外,您可以连接到远程J2EE服务器,或运行嵌入在完整J2EE服务器中的tomcat.

这意味着一些差异是......

  • Tomcat只能处理WAR,而不能处理EAR
  • Tomcat不支持任何类型的EJB(如会话Bean,MDB,计时器等)
  • Tomcat没有JPA支持
  • Tomcat具有有限的JNDI功能(不确定这里的细节)

Tomcat可以在J2EE conatiner中使用,以用作Web conatiner.

Tomcat在资源和文件系统足迹方面的重量要轻得多.

如果您需要J2EE功能,我的建议是尽管复杂性和资源需求,但是使用Glassfish(与Tomcat相比,Glassfish与Weblogic和JBoss相比非常容易使用).如果没有,坚持使用tomcat,它将为您保持简单快捷.无论哪种方式,以后切换项目包装并换出容器并不困难.

  • @NikosDim Tomcat没有内置的JPA支持.[这个在Tomcat中使用EclipseLink for JPA的例子](http://wiki.eclipse.org/EclipseLink/Examples/JPA/Tomcat_Web_Tutorial)很好地总结了它:"Tomcat 6不是符合Java EE 5标准的服务器,因为它是servlet容器,但servlet容器能够在应用程序管理的Java SE(独立)模式下运行EJB 3.0/JPA应用程序." 基本上,您可以使它工作,但它涉及一个自定义部署,您可以在其中将Java EE库放在Tomcat服务器上. (2认同)

vkr*_*mer 6

Java EE中有许多技术/功能.其中一些可以作为Tomcat下载的一部分使用,其他可以添加到基于Tomcat的环境中,一些不能添加到Tomcat环境中.

将EJB jar部署到Tomcat上:不.

调用EJB容器中运行的EJB的远程方法:是的.

在Tomcat上部署RAR:不.

将EAR部署到Tomcat:不.

将应用程序客户端jar部署到Tomcat上:否.

拼凑一种托管Java Web Startable应用程序的方法,该应用程序调用EJB容器中运行的EJB的远程方法:是的

使用JSF作为应用程序的框架:是的,但您需要在应用程序中打包实现或将其安装到您的服务器上.

创建一个程序,利用JSR-88来管理战争文件到Tomcat的部署:不......不是这是一个巨大的损失.

使用JSR-77 MEJB来管理您的Tomcat服务器:不......另一个不是巨大的损失.

创建提供SOAP Web服务的Web应用程序:是的......但您需要将工具和库作为单独下载的一部分,并自行将它们与您的工作流,应用程序和服务器运行时集成.

创建使用JPA的Web应用程序:是的......但是您需要将工具和库作为单独下载的一部分,并将它们与您的工作流程,应用程序和服务器运行时自行集成.

创建使用CDI的Web应用程序:是的......但是您需要将工具和库作为单独下载的一部分,并将它们与您的工作流程,应用程序和服务器运行时自行集成.