Tomcat仅实现Java Enterprise Edition体系结构的 Web容器。相反,例如, GlassFish实现了完整的Java EE堆栈。这个has been discussed在stackoverflow上很多。
但是,对于像我这样的Java EE初学者来说很难想象Tomcat无法做到什么。你能举个简短的例子吗?
答案 0 :(得分:9)
来自Apache tomcat documentation:
tomcat是EJB服务器吗?我可以将EJB与tomcat一起使用吗?
Tomcat不是EJB服务器。 Tomcat不是完整的J2EE服务器。 Tomcat是一个Servlet容器。 Tomcat确实支持Servlet所需的J2EE规范部分,例如JNDI功能的子集。此外,您可以连接到远程J2EE服务器,或运行嵌入在完整J2EE服务器中的tomcat。
这意味着一些差异......
可以在J2EE conatiner中使用Tomcat作为Web conatiner。
Tomcat在资源和文件系统足迹方面的重量要轻得多。
如果您需要J2EE功能,我的建议是尽管复杂性和资源需求,但是使用Glassfish(与Tomcat相比,Glassfish与Weblogic和JBoss相比非常容易使用)。如果没有,坚持使用tomcat,它将为您保持简单快捷。无论哪种方式,以后切换项目包装并交换容器并不困难。
答案 1 :(得分:6)
Java EE中有大量技术/功能。其中一些可作为Tomcat下载的一部分提供,其他可以添加到基于Tomcat的环境中,有些则无法添加到Tomcat环境中。
将EJB jar部署到Tomcat上:否。
调用EJB容器中运行的EJB的远程方法:是。
将RAR部署到Tomcat:否。
将EAR部署到Tomcat上:否。
将应用程序客户端jar部署到Tomcat上:否。
拼凑一种托管Java Web Startable应用程序的方法,该应用程序调用EJB容器中运行的EJB的远程方法:是的
使用JSF作为应用程序的框架:是的,但您需要在应用程序中打包实现或将其安装到服务器上。
创建一个程序,利用JSR-88来管理战争文件到Tomcat的部署:不......不是这是一个巨大的损失。
使用JSR-77 MEJB来管理您的Tomcat服务器:不......另一个不是很大的损失。
创建提供SOAP Web服务的Web应用程序:是的......但您需要将工具和库作为单独下载的一部分,并自行将它们与您的工作流,应用程序和服务器运行时集成。
创建使用JPA的Web应用程序:是的......但是您需要将工具和库作为单独下载的一部分,并将它们与您的工作流程,应用程序和服务器运行时自行集成。
创建使用CDI的网络应用程序:是的......但是您需要将这些工具和库作为单独下载的一部分,并将它们与您的工作流程,应用程序和服务器运行时自行集成。
答案 2 :(得分:0)
EJB - 无状态会话Bean,有状态会话Bean 消息驱动的bean EJB计时器 JPA(EJB3.0)
这是一个非常基本的清单。 Tomcat没有更多功能。