1

我将非常感谢为我解决有关这个新 EJB3.0 及更高版本的一些问题:

1)如果假设我需要ejbCreateejbActivate以及所有其他事件,那么我如何从新的 EJB3.0 及更高版本中获取它。

2)我总是很难找到特定的 xml 文件来根据各种应用程序服务器分配 JNDI 名称,所以有什么方法可以在没有 xml 文件的情况下提供 JNDI 名称,也可以在每个应用程序服务器中使用可移植名称可以远程找到部署在应用服务器上的 EJB

3) 有朋友可以告诉我,我有 Java/Linux 的托管计划,它支持 i) Tomcat - 5.5.xSupport ii)JDK - 1.6.x Support iii)JSP/servlet - 2.0 Support

是否有可能部署 EJB 3.1,因为我有一些地方无法部署 EJB,所以请给我一些建议帮助...

谢谢你...!!!请帮我...!!!

4

3 回答 3

3

1) 如果假设我需要 ejbCreate、ejbActivate 和所有其他事件,那么我如何从新的 EJB3.0 及更高版本中获取它。

在 EJB 3 及更高版本中,EJB 生命周期是通过生命周期注释来处理的,例如:@PostConstruct@PreDestroy

2)我总是很难找到特定的 xml 文件来根据各种应用程序服务器分配 JNDI 名称,所以有什么方法可以在没有 xml 文件的情况下提供 JNDI 名称,也可以在每个应用程序服务器中使用可移植名称可以远程找到部署在应用服务器上的EJB

@Stateless@Stateful注释有两个属性可以解决这个问题(name 和 mappedName)。然而

映射的名称取决于产品并且通常取决于安装。

希望它可以帮助你。

于 2012-11-17T17:52:02.307 回答
2

1) ejbCreate, ejbActivateetc. 与 EJB 2.x 相关,如果您需要 EJB 3.x 中的类似功能,您应该用注释@PostActivate, @PrePassivate等装饰您的方法。方法签名应遵循一定的规则,例如@PostActivate

使用@PostActivate 注解的方法必须遵循以下要求:

The return type of the method must be void.
The method must not throw a checked exception.
The method may be public, protected, package private or private.
The method must not be static.
The method must not be final.

此注解没有任何属性。

2)您似乎指的是和name注释的mappedName属性。更多详细信息请参见官方文档。根据我的经验,mappedName 更好,但它是特定于应用程序服务器的,例如在 Glassfish 上它可以完美运行。例子:@Stateless@Stateful

@Stateless(mappedName="ejb/myBean")
public class MyFirstBean {
..
}
于 2012-11-17T17:50:23.190 回答
0

由于没有人回答问题3..

3) 有朋友能告诉我吗,我有 Java/Linux 的托管计划,它支持 i) Tomcat - > 5.5.xSupport ii)JDK - 1.6.x 支持 iii)JSP/servlet - 2.0 支持

不,您将需要支持 Java EE 的服务器。阅读如何在 Tomcat 上部署基于 EJB 的应用程序

于 2014-02-05T12:15:14.887 回答