我正在尝试学习EJB3, 我创建了一个只有bean类的EJB项目:
package com;
import javax.ejb.Local;
import javax.ejb.Stateless;
@Stateless
@LocalBean
public class MyBean {
public MyBean() {
// TODO Auto-generated constructor stub
}
public String getMessage(){
return "Hello";
};
}
我在Jboss 6上部署了这个项目,然后我创建了一个Java项目(在构建路径中添加上面的ejbProject和Jboss-client.jar来进行RMI调用)。
进行测试,这是我创建的类:
import javax.ejb.EJB;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import com.MyBean;
public class LanceProgram {
// @EJB
//public static MyBean mybean;
public static void main(String[] args) {
Context ctx;
try {
ctx = new InitialContext();
MyBean exampleBean = (MyBean) ctx.lookup("MyBean");
System.out.println(exampleBean.getMessage());
} catch (NamingException e) {
e.printStackTrace();
}
}
}
通常,在运行时,我应该引用MyBean,但它是null并且我有这个错误消息(使用JNDI查找):
Exception in thread "main" java.lang.ClassCastException: org.jnp.interfaces.NamingContext cannot be cast to com.MyBean
at LanceProgram.main(LanceProgram.java:17)
使用EJB注入时,我有一个NullPointerException!
这是我的jndi.properties文件规范:
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=localhost:1099
java.naming.factory.url.pkgs=org.jboss.ejb.client.naming
我正在尝试调用一个没有实现接口的bean。 谢谢你的帮助