EJB EntityManager导致NullPointerException
我有一个逻辑上无法理解的错误。 我正在实现RSS处理应用程序。其逻辑是用户获取一些RSS提要的链接并添加到数据库中。如果源已经存在于数据库中,它将获取源的id并将其添加到用户的订阅中。 代码如下:EJB EntityManager导致NullPointerException,nullpointerexception,ejb,entitymanager,persist,Nullpointerexception,Ejb,Entitymanager,Persist,我有一个逻辑上无法理解的错误。 我正在实现RSS处理应用程序。其逻辑是用户获取一些RSS提要的链接并添加到数据库中。如果源已经存在于数据库中,它将获取源的id并将其添加到用户的订阅中。 代码如下: if (existfeed == null) { feed = loadFeed(url, syndfeed); em.persist(feed); if (feed.getFeedId() == null) {
if (existfeed == null) {
feed = loadFeed(url, syndfeed);
em.persist(feed);
if (feed.getFeedId() == null) {
return "Persist of feed failed";
}
uf.setFeedId(feed);
uf.setUserId(user_id);
try {
em.persist(uf);
loadFeedItems(syndfeed, feed);
//boolean ufadded = uf.addUserFeed(em);
} catch (NoResultException ex) {
return "Persist of userfeed failed";
} catch (PersistenceException ex) {
return "Persist of userfeed failed, em";
}
//boolean ufadded = uf.addUserFeed(em);
//return true;
return "Feed added";
} else {
dbFeed = getFeed(feed.getLink());
if(dbFeed==null)
return "Faile to get feed from database";
//http://appleinsider.ru/feed
uf.setFeedId(dbFeed);
uf.setUserId(user_id);
try {
em.persist(uf);
} catch (PersistenceException ex) {
//System.out.println(ex.getMessage());
return "Unable to persist userfeed";
}
return "Feed added, existing";
}
但是,如果用户添加了提要,则其他用户无法添加该提要,并且出现以下错误:
Caused by: java.lang.NullPointerException
at ejb.FeedBean.addNewFeed(FeedBean.java:203) [Group_7_Impl_uwx09sua-ejb.jar:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [classes.jar:1.6.0_51]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [classes.jar:1.6.0_51]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [classes.jar:1.6.0_51]
at java.lang.reflect.Method.invoke(Method.java:597) [classes.jar:1.6.0_51]
at org.jboss.as.ee.component.ManagedReferenceMethodInterceptorFactory
我只是不明白为什么它会失败。
我的一个观点是,EntityManager可能在某种程度上是空的。但是,在if语句的第一部分中,它是有效的
更新:我尝试使用EntityManager查找方法,结果是相同的错误。所以,毫无疑问,EntityManager在if语句的第二部分是空的
谢谢你的帮助 你试过使用调试器吗?它是什么样的EJB,有状态的,无状态的,单例的?您是只使用EJB,还是与CDI或Spring应用程序一起使用?您好。谢谢你的回复。我正在使用Netbeans,该项目是企业应用程序。出现问题的bean是无状态bean。对不起,我不太熟悉什么是CDI或Spring应用程序。