Lotus Domino Servlet给出了这个错误:“无法从代理创建会话”

时间:2014-08-13 08:53:24

标签: java servlets lotus-notes lotus-domino

我在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数据库中写了它,没有外部作为独立文件。

The servlet in Domino Designer

1 个答案:

答案 0 :(得分: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