首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从servlet访问FileNet内容引擎

从servlet访问FileNet内容引擎
EN

Stack Overflow用户
提问于 2019-04-20 01:42:24
回答 1查看 2.1K关注 0票数 2

我正在尝试从servlet访问IBM P8 V5数据存储,并且需要帮助来正确地进行WebSphere配置。

我在装有RedHat WebSphere的RedHat 7服务器上全新安装了FN P8。

我尝试了https://www.ibm.com/support/knowledgecenter/en/SSNW2F_5.0.0/com.ibm.p8.ce.dev.ce.doc/ss_ecl_cews.htm上给出的示例代码

它在普通的Java类中工作得很好;连接到服务器并检索数据存储名称。

我将代码复制到servlet中,但收到错误:“com.filenet.api.exception.EngineRuntimeException: FNRCS0005E: SECURITY_INVALID_CREDENTIALS:不允许访问内容引擎,因为内容引擎FNRCS0005E库或SECURITY_INVALID_CREDENTIALS侦听器找不到所需的安全上下文信息。在安全上下文中找不到所需的凭据”

根据本教程,我需要设置运行时环境。这就是我被困的地方。我尝试通过WebSphere控制台在JVM设置中添加jaas.conf.WebSphere,但显然没有正确操作。

代码语言:javascript
复制
package server;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Iterator;
import javax.security.auth.Subject;
import com.filenet.api.collection.ObjectStoreSet;
import com.filenet.api.core.Connection;
import com.filenet.api.core.Domain;
import com.filenet.api.core.Factory;
import com.filenet.api.core.ObjectStore;
import com.filenet.api.util.UserContext;

/**
 * Servlet implementation class FNTest
 * Ref: https://www.ibm.com/support/knowledgecenter/en/SSNW2F_5.0.0/com.ibm.p8.ce.dev.ce.doc/ss_ecl_cews.htm
 */
//@WebServlet(description = "Test for connection to Filenet", urlPatterns = { "/FNTest" })
@WebServlet("/FNTest")
public class FNTest extends HttpServlet {
    private static final long serialVersionUID = 2L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public FNTest() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>Filenet Function Test</title></head>");
        out.println("<body>");
        out.println("<h1>Filenet Function Test</h1>");
        out.println("<p>Request server at " + request.getServletPath() + ".</p><hr>");
        out.println("<p>Connecting to Filenet...</p>");
        // Connect to Filenet
        // Set connection parameters; substitute for the placeholders.
        String uri = "http://filenet.myserver.com:9080/wsi/FNCEWS40MTOM/";
        String username = "P8Admin";
        String password = "P8Password";

        // Make connection.   
        Connection conn = Factory.Connection.getConnection(uri);
        Subject subject = UserContext.createSubject(conn, username, password, null);
        UserContext.get().pushSubject(subject);

        try
        {
           // Get default domain.
           Domain domain = Factory.Domain.fetchInstance(conn, null, null);
           System.out.println("Domain: " + domain.get_Name());

           // Get object stores for domain.
           ObjectStoreSet osSet = domain.get_ObjectStores();
           ObjectStore store;
           Iterator osIter = osSet.iterator();

           while (osIter.hasNext()) 
           {
              store = (ObjectStore) osIter.next();
              System.out.println("Object store: " + store.get_Name());
           }
           System.out.println("Connection to Content Engine successful");
        }
        finally
        {
           UserContext.get().popSubject();
        }

        out.println("<p>Completed</p>");
        out.println("</body></html>");
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

带有servlet的应用程序安装在同一台服务器上。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-06 17:08:11

我看到您的jaas节为null,这意味着它将接受FileNetP8作为默认节。在使用WSI端点进行连接时,尝试使用FileNetP8WSI而不是null。

代码语言:javascript
复制
Subject subject = UserContext.createSubject(conn, username, password, "FileNetP8WSI");

如果提供null,它将使用"FileNetP8“这是用于IIOP连接的jaas节。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55765711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档