使servlet“公开”?

时间:2013-03-07 15:09:53

标签: xpages

我终于让我的测试servlet在这个线程中运行了吗?

Calling HttpServlet class from xpages client side script and regular notes forms?

剩下的问题是我被要求登录。但是我的最终servlet需要在没有登录的情况下运行。我将我的acl设置为Read public document和Write public documents for anonymous。

我不知道该怎么做才能使serlet公共访问。其他设计文档具有“可用于公共访问用户”属性,但我看不到java文件的此类属性。这会被设置在其他地方吗?也许在我的IServletFactory中呢?

1 个答案:

答案 0 :(得分:0)

我不知道为什么我之前需要登录,但看起来它现在正在运行。唯一需要的是启用Read Public Public Document。

这有点令人担忧,因为它至少看起来没有办法使一些servlet非公开。就我而言,这不会是一个问题,但对其他人来说可能是一个问题。

另外我注意到,如果你更改了公共访问acl设置,看起来你需要因某种原因重建你的servlet,否则servlet将无法运行。当我有机会的时候,我会打开一张票据支持这两个问题。

对于那些想要执行servlet的人,我建议这篇文章:

http://8b30b0.wordpress.com/2013/02/04/creating-a-basic-domino-servlet/#comments

但是这里有一个更简化的IServletFactory版本,可能更容易理解并且可以正常工作。

package test;

import javax.servlet.Servlet;
import javax.servlet.ServletException;

import com.ibm.designer.runtime.domino.adapter.ComponentModule;
import com.ibm.designer.runtime.domino.adapter.IServletFactory;
import com.ibm.designer.runtime.domino.adapter.ServletMatch;

public class TestFactory implements IServletFactory {

private ComponentModule module;

public ServletMatch getServletMatch(String contextPath, String path)
        throws ServletException {
    System.out.println("TestFactory:getServletMatch");

    String servletPath = "";
    String pathInfo = path;
    return new ServletMatch(getWidgetServlet(),servletPath,pathInfo);        
} 

public void init(ComponentModule arg0) {
    System.out.println("TestFactory:init");
    this.module = arg0;
}

public Servlet getWidgetServlet() throws ServletException {
    return module.createServlet("com.pnc.cld.HelloWorld", "testServlet",null);
 } 

}