我们可以在Apache tomcat中使用@EJB注释吗?
如果我们可以在Apache tomcat中使用@EJB注释,请告诉我服务类中必须有哪些属性和方法,如this link中提出的问题答案中的EmployeeService类。
答案 0 :(得分:4)
不,Tomcat不是EJB容器。只有Glassfish 3,JBoss AS 6等。对于Tomcat,您必须单独安装它。链接的答案只是一个基本的启动示例。没有EJB,你可以做得很好。您只需要在bean的初始化,构造或后期构建期间自己创建它。 E.g。
private UserService userService = new UserService();
或
private UserService userService = ServiceFactory.getUserService();
等
请注意,这不是现有代码。这只是你必须自己编写的代码。它包含的只是执行所有数据库交互任务的方法。在支持EJB的容器中,您可以使用JPA。但是在像Tomcat这样的简单servlet容器上,你需要很好的用于此的JDBC。您可以在this blog中找到基本JDBC DAO的大量启动示例。
答案 1 :(得分:2)
截至2011年10月,Apache确实有Java EE certified version of Tomcat
认证版本名为Apache TomEE,是一个简单的Tomcat zip文件,添加了正确的jar文件,以便它可以传递Java EE 6 Web Profile TCK。
所以你可以在Tomcat中使用EJB,JSF,JPA等,就像在Apache提供的Tomcat版本上使用GlassFish,JBoss等一样。
答案 2 :(得分:0)
Apache是一个servlet容器,它只是Java EE规范的一部分。一旦找到,将跳过@EJB注释,Tomcat不会进行注射。如果您希望servlet调用EJB方法,则需要在servlet启动时进行JNDI查找,并将远程接口类放在servlet的类路径中。