【发布时间】:2011-05-20 05:35:37
【问题描述】:
我们可以在 Apache tomcat 中使用@EJB 注解吗?
如果我们可以在Apache tomcat中使用@EJB注解,那么请在this link上的问题的回答中告诉我,像EmployeeService类这样的服务类中必须有什么样的属性和方法。
【问题讨论】:
我们可以在 Apache tomcat 中使用@EJB 注解吗?
如果我们可以在Apache tomcat中使用@EJB注解,那么请在this link上的问题的回答中告诉我,像EmployeeService类这样的服务类中必须有什么样的属性和方法。
【问题讨论】:
不,Tomcat 不是 EJB 容器。只有 Glassfish 3、JBoss AS 6 等是。对于 Tomcat,您必须单独安装它。链接的答案只是一个基本的启动示例。您可以在没有 EJB 的情况下做得很好。你只需要在bean的初始化、构造或构造后自己创建。例如
private UserService userService = new UserService();
或
private UserService userService = ServiceFactory.getUserService();
等等
请注意,这不是现有代码。这只是您必须自己编写的代码。它所包含的只是完成所有数据库交互任务的方法。在支持 EJB 的容器中,您将为此使用 JPA。但是在像 Tomcat 这样的简单 servletcontainer 上,您需要良好的 JDBC 来实现这一点。您可以在 this blog 中找到基本 JDBC DAO 的大量启动示例。
【讨论】:
截至 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 等一样。
【讨论】:
Apache 是一个 servlet 容器,它只是 Java EE 规范的一部分。一旦找到,@EJB 注释将被跳过,Tomcat 不会进行任何注入。如果您希望您的 servlet 调用 EJB 方法,您需要在 servlet 启动时进行 JNDI 查找,并将远程接口类放在 servlet 的类路径中。
【讨论】: