【问题标题】:Unable to access WCM library无法访问 WCM 库
【发布时间】:2014-01-31 21:43:48
【问题描述】:

我正在尝试访问 WCM(Web 内容管理)库,该库已经在门户应用程序中运行良好。我的要求是从部署在 WAS(Websphere Application Server)上的企业应用程序访问相同的库。 它在我的本地主机上运行良好,但是当部署在开发服务器上时,它给了我以下错误-

堆栈跟踪 com.ibm.websphere.servlet.error.ServletErrorReport: java.lang.IllegalStateException:未注册 WCM 存储库 使用 WCM_API 在 com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:152) 在 com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:77) 在 com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908) 在 com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:934) 在 com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502) 在 com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:179) 在 com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:121) 在 com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:259) 在 com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.include(WebAppRequestDispatcher.java:686) 在 com.bowstreet.webapp.engine.pageprocessor.JSPPageProcessor.requestJSPPage(JSPPageProcessor.java:321) 在 com.bowstreet.webapp.engine.pageprocessor.JSPPageProcessor.processPage(JSPPageProcessor.java:207) 在 com.bowstreet.webapp.engine.actions.PageAction.callAction(PageAction.java:101) 在 com.bowstreet.webapp.engine.WebAppAccessImpl.processPage(WebAppAccessImpl.java:228)

我正在使用 IBM Websphere Application 和 Portal Server 6.1。 下面是代码sn-p-

// retrieve repository
   Repository repository = WCM_API.getRepository();  
   try{      
    // get the workspace for current user
    Workspace workspace = repository.getSystemWorkspace();
    workspace.login();
    // set the library
    workspace.setCurrentDocumentLibrary(workspace.getDocumentLibrary("MyLibrary"));
    // find content by name
     DocumentIdIterator contentIterator = workspace.findByName(DocumentTypes.Content,"MyKey");
      System.out.println("key:: contentIterator="+contentIterator);
     //find all contents
     if (contentIterator.hasNext()){ 
       System.out.println("key:: inside if =");
       Content content=(Content)workspace.getById(contentIterator.nextId(),true);
       System.out.println("getWCMURL:: Content="+content.getName());
       RichTextComponent txtComp= (RichTextComponent)content.getComponentByReference("Text");
       if(txtComp.getRichText()!=null){
        cntmsg = txtComp.getRichText();
       }       
   }   
  }  
  catch(Exception e){
   System.out.println("getWCMURL:: Error:"+e.getMessage());
  }

请帮忙...

【问题讨论】:

  • 如果你重启一次应用程序(不是服务器,只重启应用程序)那么它会工作吗?

标签: websphere-portal wcm


【解决方案1】:

在撰写本文时,不再支持 IBM Web Content Management v6.1(生命周期结束于 2014 年 9 月),因此您应该已经升级。 IBM 一次只支持 3 个版本(当前 + 2 个以前的版本)。

话虽如此,如果您的应用程序在 Web Content Management servlet 启动之前启动,则有时会发生此错误。您需要将启动权重设置为高于 30。http://www-01.ibm.com/support/docview.wss?uid=swg21656128

如果无法访问整个源代码和完整的堆栈跟踪,则很难看到这段代码何时被触发。另一个错误来源可能是部署了代码的服务器。它必须部署到 Portal Server 而不是 Application Server。

【讨论】:

    【解决方案2】:

    您的开发服务器上有虚拟门户吗?

    如果您的开发服务器中确实有虚拟门户,则必须获取虚拟门户上下文并按照此处所述的方式运行它 -

    https://gist.github.com/roanbester/0c1dafece0d0fac699e4

    我将强调主要区别:

    Repository repository = WCM_API.getRepository();
    // **get the virtual portal context**
    VirtualPortalContext vpContext = repository.generateVPContextFromContextPath("virtualPortalName");
    
    // Custom class, implements IBM interface, our executable code has to go here
    FindCategoriesAction findCategoriesAction = new FindCategoriesAction();
    
    // Now, WCM will execute our code kept in 'findCategoriesAction' 
       by calling the run method
    repository.executeInVP(vpContext, findCategoriesAction);
    

    我不是此代码的作者。如果您想返回保存在“findCategoriesAction”中的代码的输出,这将变得很困难。

    这里的示例代码没有展示或实现线程同步。

    我个人不是整个 IBM WCM 和 IBM Webpshere Portal 套件的忠实粉丝。

    这是一个古老的架构。

    此外,从 8.0 开始,WCM 提供了一个 REST API,您可以使用它访问内容或任何元素,但同样,它并不像听起来那么简洁。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 2020-02-12
      • 2023-04-04
      • 2016-02-23
      • 2020-06-12
      • 1970-01-01
      相关资源
      最近更新 更多