非常感谢您清除有关此新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支持
iii)JSP / servlet-2.0支持

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

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

最佳答案

1)ejbCreate, ejbActivate等与EJB 2.x相关,如果在EJB 3.x中需要类似的功能,则应使用注释@PostActivate, @PrePassivate等修饰方法。方法签名应遵循certain rules,例如:


  @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)似乎您指的是@PostActivatename批注的mappedName@Stateless属性。有关更多详细信息,请参见official documentation。根据我的经验,mappedName更好,但是它是特定于应用程序服务器的,例如在Glassfish上效果很好。例:

@Stateless(mappedName="ejb/myBean")
public class MyFirstBean {
..
}

09-26 22:47