0
我试图从本地服务访问EJB无状态会话bean。 但是,当我调用位于bean上的方法时,我得到了一个NPE,因为无状态bean为null。EJB无状态会话bean为空
下面是代码:
的sateless豆:
@Startup
@Stateless(name = "LoginBean")
@LocalBean
public class LoginBean {
public List<Long> getItemsForClient(String clientId, Long itemId) {
System.out.println("clientID: " + clientId);
System.out.println("itemID: " + itemId);
List<Long> ret = new ArrayList<Long>();
ret.add((long) 123456);
ret.add((long) 123457);
ret.add((long) 123458);
ret.add((long) 123459);
return ret;
}
}
服务:
@Stateless
@Path("/ctofservice")
public class CtoFService {
@EJB
LoginBean loginBean;
public CtoFService() {
}
@GET
@Produces("text/plain")
@Path("test")
public String convertCtoF() {
Long l = (long) 123456;
List<Long> servicesForClient = loginBean.getItemsForClient("cliID", l);
return itemsForClient.toString();
}
而且ApplicationConfig:
@ApplicationPath("/")
public class ApplicationConfig extends Application {
@SuppressWarnings("unchecked")
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> resources = new java.util.HashSet<Class<?>>();
addRestResourceClasses(resources);
return resources;
}
private void addRestResourceClasses(Set<Class<?>> resources) {
resources.add(CtoFService.class);
}
}
我一直在努力一会儿一会儿寻找可能的解决方案,但没有出现。
我正在使用JBoss AS 7.1和RESTEasy。
当bean应该被实例化?
谢谢。
您是否需要LoginBean作为EJB,为什么不把它作为JAX_RS服务。你仍然可以使用CDI。 – user489041
是的,我需要它,因为当我实现它时,我需要添加更多funcionality。 – javapai
对不起,我的意思是CtoFService。你有它标记为@Stateless – user489041