【问题标题】:A Lotus Domino Servlet gives me this error: "Cannot create a session from an agent"Lotus Domino Servlet 给了我这个错误:“无法从代理创建会话”
【发布时间】:2014-10-06 13:33:34
【问题描述】:

我在 Lotus Domino 9.0 IF5 服务器上的 Lotus Notes 数据库中创建了一个 servlet。源代码取自教程页面。此外,servlet 是在 Domino Designer 中开发的

这是最重要的源代码:

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import lotus.domino.*;
[...]

public class TestServlet extends HttpServlet {
    protected void doGet(HttpServletRequest req, HttpServletResponse res) {
    try {
        res.setContentType("text/html");        
            PrintWriter toBrowser = res.getWriter();        
            [...]
            try {    
                NotesThread.sinitThread();        
                Session s = NotesFactory.createSession();    //<== ERROR
                Database db = s.getDatabase("","names.nsf");        
                toBrowser.println(db.getTitle());        
                [...]
            }    
            catch (NotesException n) {
                System.out.println("Exception ID:  " + n.id);        
                System.out.println("Exception description:  " + n.text);
                n.printStackTrace();
            }    
            [...]
        }
        catch (Exception e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
    }
}

当我调用 servlet 时,我在服务器控制台上收到此消息。

13/08/2014 04:31:43   HTTP JVM: Exception ID:  4493
13/08/2014 04:31:43   HTTP JVM: Exception description:  Cannot create a session from an agent
13/08/2014 04:31:43   HTTP JVM: NotesException: Cannot create a session from an agent
13/08/2014 04:31:43   HTTP JVM:        at lotus.domino.local.Session.checkSecurityManagerExtender(Unknown Source)
13/08/2014 04:31:43   HTTP JVM:        at lotus.domino.local.Session.createSession(Unknown Source)
13/08/2014 04:31:43   HTTP JVM:        at lotus.domino.NotesFactory.createSession(Unknown Source)
[...]

如果我编写没有 Lotus Notes 代码(会话、数据库、文档等)的 servlet,它可以正常工作。我可以做任何我想做的事,我总是不使用 Lotus Domino 对象。但是如果我添加这些行,就会发生错误。

会有什么问题?

TIA,

编辑:

这是 Domino Designer 上 servlet 的外观。我把它写在一个 Notes DB 中,没有作为一个独立的文件。

【问题讨论】:

    标签: java servlets lotus-notes lotus-domino


    【解决方案1】:

    当您呼叫NotesFactory.createSession() 时,系统会根据需要提示用户输入密码。但是提示用户似乎有些问题。因此,您必须手动提供UserNamePassword

    Session s = NotesFactory.createSession(null, "UserName", "Password");
    

    或者使用Documentation中提到的一些其他方法,例如:

    Session s = NotesFactory.createSessionWithFullAccess("Password");
    //or
    Session s = NotesFactory.createSession(null, "", "");
    //or
    Session s = NotesFactory.createSession(hostString, HttpServletRequest);
    //etc
    

    【讨论】:

    • 感谢您的回复。我尝试了所有的可能性,但都没有奏效。对于每个选项,我都会收到不同的错误消息:“服务器上的旧版本不支持此方法”或“无法从代理创建会话”。我会尝试将服务器更新到 9.0.1...
    • @MarioSFallen 你如何调用你的servlet?
    • 终于成功了!我必须将 servlet 作为独立文件编写,并将类文件复制到 /servlet 文件夹中。我用Session s = NotesFactory.createSession(hostString, HttpServletRequest);。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多