Java getDocumentContext()上的org.openntf.domino异常

Java getDocumentContext()上的org.openntf.domino异常,java,lotus-domino,Java,Lotus Domino,我正在尝试获取从web触发的代理的查询字符串参数: http://myhost/mydb.nsf/myagent?open&reportID=96c6 使用org.openntf.dominoapi并运行domino9服务器HF441和org.openntf.domino.xsp_1.0.0.201309021740 我得到一个例外: [0D40:0045-1488] 2013-09-03 12:01:56 HTTP JVM: org.openntf.domino.exceptio

我正在尝试获取从web触发的代理的查询字符串参数:

http://myhost/mydb.nsf/myagent?open&reportID=96c6
使用org.openntf.dominoapi并运行domino9服务器HF441和org.openntf.domino.xsp_1.0.0.201309021740

我得到一个例外:

[0D40:0045-1488] 2013-09-03 12:01:56 HTTP JVM: org.openntf.domino.exceptions.UndefinedDelegateTypeException [0D40:0045-1488] 2013-09-03 12:01:56 HTTP JVM: at org.openntf.domino.utils.Factory.getParentDatabase(Factory.ja va:613) [0D40:0045-1488] 2013-09-03 12:01:56 HTTP JVM: at org.openntf.domino.impl.Document.(Document.java:109) [0D40:0045-1488] 2013-09-03 12:01:56 HTTP JVM: at org.openntf.domino.utils.Factory.fromLotus(Factory.java:251) [0D40:0045-1488] 2013-09-03 12:01:56 HTTP JVM: at org.openntf.domino.impl.AgentContext.getDocumentContext(Agent Context.java:85) [0D40:0045-1488] 2013-09-03 12:01:56 HTTP JVM: at JavaAgent.NotesMain(JavaAgent.java:25) [0D40:0045-1488] 2013-09-03 12:01:56 HTTP JVM: at lotus.domino.AgentBase.runNotes(Unknown Source) [0D40:0045-1488] 2013-09-03 12:01:56 HTTP JVM: at lotus.domino.NotesThread.run(Unknown Source) [0D40:0045-1488]2013-09-03 12:01:56 HTTP-JVM:org.openntf.domino.exceptions.UndefinedLegateTypeeException [0D40:0045-1488]2013-09-03 12:01:56 HTTP-JVM:org.openntf.domino.utils.Factory.getParentDatabase(Factory.ja 弗吉尼亚州:613) [0D40:0045-1488]2013-09-03 12:01:56 HTTP-JVM:at org.openntf.domino.impl.Document.(Document.java:109) [0D40:0045-1488]2013-09-03 12:01:56 HTTP-JVM:org.openntf.domino.utils.Factory.fromLotus(Factory.java:251) [0D40:0045-1488]2013-09-03 12:01:56 HTTP-JVM:org.openntf.domino.impl.AgentContext.getDocumentContext(代理 Context.java:85) [0D40:0045-1488]2013-09-03 12:01:56 HTTP JVM:at JavaAgent.NotesMain(JavaAgent.java:25) [0D40:0045-1488]2013-09-03 12:01:56 HTTP JVM:at lotus.domino.AgentBase.runNotes(未知源) [0D40:0045-1488]2013-09-03 12:01:56 HTTP JVM:at lotus.domino.NotesThread.run(未知源)
导入java.io.PrintWriter;
导入java.util.Hashtable;
导入org.openntf.domino.AgentBase;
导入org.openntf.domino.AgentContext;
导入org.openntf.domino.Database;
导入org.openntf.domino.Document;
导入org.openntf.domino.Session;
公共类JavaAgent扩展了AgentBase{
布尔调试=假;
印刷作家;
公共无效注释main(){
试一试{
Session=getSession();
AgentContext AgentContext=session.getAgentContext();
pw=getAgentOutput();
Database reportDB=session.getDatabase(session.getServerName(),
“报告,nsf”);
Document doc=agentContext.getDocumentContext();
字符串qs=doc.getItemValueString(“查询字符串”);
Hashtable ht=CommonJ.parseQueryString(qs);
String reportID=(String)ht.get(“reportID”);
Document reportDoc=reportDB.getDocumentByID(reportID);
if(null!=reportDoc){
字符串文件名=reportDoc.getFirstItem(“$File”)
.getValueString();
println(reportDoc.getHttpURL()+“/$file/”+文件名);
}否则{
println(“对不起,找不到报告!”);
}
}捕获(例外e){
println(“对不起,找不到报告!”);
pw.println(e);
e、 printStackTrace();
}
}
}

我已在当前分支中修复了此问题。如果您要自己修改和构建源代码,则以下是更改:

具体来说,在org.openntf.domino.impl.AgentContext的“getCurrentDatabase”方法中,将“fromLotus”调用中的最后一个“this”更改为“getCurrentDatabase()

或者,我从我的开发环境中导出了一个jar,它在我的测试中修复了它(这基本上是M3加上设计树中的一些工作以及这个修复):


如果你还遇到麻烦,请告诉我

Thx,太快了;)等待M3发布可以吗?我们有一些开发服务器和客户端要部署它,我刚刚在9月2日的最新版本中做了这件事……嗯,发布一个快速补丁版本可能是值得的,因为这个bug肯定会有麻烦。看起来Nathan用一个补丁版本打败了我:你完成了我,Jesse.:-)
import java.io.PrintWriter;
import java.util.Hashtable;

import org.openntf.domino.AgentBase;
import org.openntf.domino.AgentContext;
import org.openntf.domino.Database;
import org.openntf.domino.Document;
import org.openntf.domino.Session;

public class JavaAgent extends AgentBase {

    boolean debug = false;
    PrintWriter pw;

    public void NotesMain() {

        try {
            Session session = getSession();
            AgentContext agentContext = session.getAgentContext();

            pw = getAgentOutput();
            Database reportDB = session.getDatabase(session.getServerName(),
                    "report.nsf");
            Document doc = agentContext.getDocumentContext();
            String qs = doc.getItemValueString("Query_String");
            Hashtable ht = CommonJ.parseQueryString(qs);
            String reportID = (String) ht.get("reportID");

            Document reportDoc = reportDB.getDocumentByID(reportID);
            if (null != reportDoc) {

                String filename = reportDoc.getFirstItem("$File")
                        .getValueString();
                pw.println(reportDoc.getHttpURL() + "/$file/" + filename);
            } else {
                pw.println("<h2>Sorry, report not found!");
            }

        } catch (Exception e) {
            pw.println("<h2>Sorry, report not found!");
            pw.println(e);
            e.printStackTrace();
        }
    }
}