NotesException:对象已被删除或回收

时间:2015-08-28 18:12:36

标签: xpages

我有一个包含实用程序的Java包,其中一个实用程序访问Notes数据库。当我第一次使用这个类(从会话范围的bean调用)时,它是静态的并返回一个布尔值,它似乎总是在访问数据库对象时抛出异常。后续调用工作。

我的代码从如下开始,并在访问数据库的行或检查它是否打开的行上抛出异常。我看到一些人发布了静态类的问题。这是问题还是其他问题?

boolean rtn = false;
    try {
    Session session = ExtLibUtil.getCurrentSessionAsSigner();
    if (session.isValid() == false){
        DebugToolbarBean.get().info("Session is not valid");
    } else if (session == null){
        DebugToolbarBean.get().info("session is null");
    } else{
        DebugToolbarBean.get().info("session is good");
    }

    DebugToolbarBean.get().info("Session server is " + session.getServerName());
    DebugToolbarBean.get().info("session" + session.getServerName());
    ConfigBean configBean = (ConfigBean) ExtLibUtil.resolveVariable(FacesContext.getCurrentInstance(), "configBean");
    String nabDbname = (String) configBean.getValue("UserDominoDirectoryPath");
    DebugToolbarBean.get().info("nab db is " + nabDbname);**
    Database nabDb = session.getDatabase(session.getServerName(), nabDbname , false);

    if (nabDb.isOpen()){

在调试工具栏中,我得到:

18:01:29    Error in validatePhase1java.lang.RuntimeException: Error in checkAddressBook: NotesException: Object has been removed or recycled
18:01:29    error in checkAddressBook:dBar says NotesException: Object has been removed or recycled
18:01:29    nab db is Development\External\Cascade\cascweb3final.nsf
18:01:29    sessionCN=Dev01/O=TSPSDev
18:01:29    Session server is CN=Dev01/O=TSPSDev
18:01:29    session is good
18:01:29    Starting

代码的其余部分(抛出异常)

} catch (Exception e) {
        rtn = false;
        DebugToolbarBean.get().info("error in checkAddressBook:dBar      " + e.toString() );
        e.printStackTrace();
        throw new RuntimeException( "Error in checkAddressBook: " + e.toString());

    }

4 个答案:

答案 0 :(得分:1)

您是否有机会在chekcAddressBook代码中回收您的对象?这会使您引用它的所有其他位置的对象无效。

在使用OpenNTF Domino API; - )

之后,我没有遇到过这些类型的问题

答案 1 :(得分:0)

使用相同的开发者ID对所有设计元素进行签名。如果并非所有设计元素都使用相同的开发者ID进行签名,则会话将永远不会nullsession..getServerName()会从我的经验中抛出异常。只有当您使用会话'作为签名者时才会出现这种情况。

答案 2 :(得分:0)

如果Bean的实例成员是lotus.domino类型,则在序列化时会导致此错误。

答案 3 :(得分:0)

由于我在对configBean的引用中硬编码似乎使我的会话对象无效,所以没有真正的答案。那很有效。然后我放回原始代码,现在也可以。过去几天一直试图让它再次失败,但不能......