如何实例化一个类,EJB或POJO?

时间:2010-11-26 12:27:20

标签: java ejb pojo

我有一个类,它是EJB或POJO(我不知道)。我必须创建这个类的实例。这个操作有什么模式吗?或者我应该手动检查EJB注释然后进行JNDI查找?

public Object instantiate(Class c) {
  return /* ... */
}

4 个答案:

答案 0 :(得分:3)

EJB类只应由容器实例化。否则他们不是EJB。如果要获取EJB实例,请通过JNDI查找或注入它。

您可以通过验证其注释来查看某个类是否应该是EJB:

if (clazz.isAnnotationPresent(Stateless.class)
   || clazz.isAnnotationPresent(Statefull.class)) { .. };

(也许是消息驱动的)

答案 1 :(得分:1)

POJO(Plain Object Java Object)是使用new运算符进行实例化的。

MyClass myClass = new MyClass( args )

它也可以通过反射创建。

MyClass myClass = MyClass.class.newInstance();

答案 2 :(得分:0)

是的,你需要检查EJB3注释并以某种方式弄清楚它的JNDI名称是什么(可能取决于你的容器)。

Seam框架使用JNDI名称模式执行此操作(请参阅the seam documentation)。这样,Seam上下文可以混合使用POJO和EJB。

答案 3 :(得分:0)

EJB3几乎是POJO,它肯定有默认构造函数。实例化它没有问题。任何具有默认构造函数的类都是一样的。

说完

clazz.newInstance();

你完成了。

如果您正在编写创建任何类实例的方法,则应该对此方法进行参数化:

public <T> T instance(Class<T> clazz)