0

我对这个完全不知所措。我正在通过谷歌搜索互联网,试图找到解决这个问题的方法。我已经很长时间没有使用 JBoss,我们使用的是 Seam 版本 2……不知道确切的版本。我以前从未使用过Seam,所以我对这个框架一无所知。我的老板编写了这段代码的大部分内容,但他已经超越了查看这段代码,而是委托我解决这个问题。

所以,问题是......一个用户登录到我们的 Seam 应用程序,一切都很好,但是当我们尝试从 CSV 文件加载用户时,就好像 Seam 忘记了我们是谁,然后我们得到一个错误。

我们有一个 UserIdentity 类,开头如下:

@Name("org.jboss.seam.security.identity")
@Scope(ScopeType.SESSION)
@Install(precedence = Install.APPLICATION)
@BypassInterceptors
@Startup
public class UserIdentity extends Identity {

在这个类中,我们有一行代码:

EntityManager entityManager = (EntityManager)Component.getInstance("entityManager",true);

那是返回 null,因此我们得到一个 NullPointerException (NPE)。

我认为“Component.getInstance”失败了,如果我们可以刷新它并再次取回它会很好。如果我能更新到新的接缝罐并解决这个问题,那就太好了。

我将继续在 Internet 上搜索修复,但与此同时,如果有人看到了这个问题,并且知道如何修复它,那就太好了。谢谢!

4

1 回答 1

1

当您使用Component.getInstance方法时,该方法用于获取对 Seam 会话 bean 组件的引用。

真正结束您的上下文并再次创建。因为它没有找到那个上下文它返回null。

由于 EntityManager 在 Session Scope 中使用,您不必再次创建它。

很简单,您可以将实体管理器注入为,

EntityManager entityManager = (EntityManager)Component.getInstance("entityManager");

或者

@In EntityManager 实体管理器;

于 2015-06-24T09:09:47.933 回答