XPages Valuebinding在更新

时间:2015-07-08 07:41:10

标签: performance xpages persistence

我有一个特别麻烦的XPage应用程序,可以完全重写,但事实上,在过去几年中已经开发和(部分)改进,试图保持它顺利运行。它越来越慢,但是我昨晚做了2次更改,今天早上我注意到控制台上出现了很多JVM错误。

  1. 删除了所有用于显示视图数据的jQuery Repeat控件表,并将其替换为ViewPanels;这些在加载和渲染包含大量文档的视图时要快得多。

  2. 将页面持久性从“保留在磁盘上”更改为“将当前页面保留在内存中” - 希望这也有助于加快速度。

  3. 今天我看到很多错误,如:

    HTTP JVM:无法打开数据库:com.ibm.xsp.binding.javascript.JavascriptValueBinding@3b2c3b2c。更详细的

    旧数据库的Archive Db支持主数据库,通过将数据路径指向存档,在主数据库的UI中加载。还有另一个数据库包含许多主要前端UI数据库引用的小型支持文档。所以有其他dbs的链接,这些链接对我和许多其他用户都有用。我需要帮助来追踪一些人导致上述错误的原因。链接到此应用程序的所有数据库上的ACL都是相同的,它们都在同一服务器上,ACL也包含服务器作为所有数据库中的管理器。

    第二个问题是速度。前端数据库中有大约30,000个文档,大小约为25GB。这些视图需要大约4-5秒才能加载,实际上在该数据库中处理大约需要4-5秒。在同一台服务器上的另一个UI副本,但修改为使用主数据库为它的数据加载一切闪电快速。我想要我的应用程序的性能!为什么使用主慢数据库中的数据的单独数据库会比较快?是否有最佳实践指南说将设计与数据分开是个好主意?

    这是Web浏览器中的典型错误消息: Web Browser error page

    这是服务器日志中的一组典型消息(error-log-0.xml)

    <CommonBaseEvent creationTime="2015-07-08T07:07:43.841+01:00" globalInstanceId="EL0a940d8600014e6b9ee19b00000019" msg="CLFAD0131E: Unable to push data because: Unable to open database: com.ibm.xsp.binding.javascript.JavaScriptValueBinding@304a304a" severity="50" version="1.0.1">
    <extendedDataElements name="CommonBaseEventLogRecord:level" type="noValue">
        <children name="CommonBaseEventLogRecord:name" type="string"> 
            <values>SEVERE</values>
        </children>
    </extendedDataElements>
    <extendedDataElements name="CommonBaseEventLogRecord:sourceClassName" type="string">
        <values>com.ibm.commons.log.AbstractLogMgr</values>
    </extendedDataElements>
    <extendedDataElements name="CommonBaseEventLogRecord:sourceMethodName" type="string">
        <values>log</values>
    </extendedDataElements>
    <extendedDataElements name="CommonBaseEventLogRecord:Exception" type="string">
        <values>com.ibm.xsp.FacesExceptionEx: Unable to open database: com.ibm.xsp.binding.javascript.JavaScriptValueBinding@304a304a&#xD;&#xA;&#x9;at com.ibm.xsp.model.domino.DominoUtils.openDatabaseByName(DominoUtils.java:188)&#xD;&#xA;&#x9;at com.ibm.xsp.model.domino.DominoViewDataContainer.openDatabase(DominoViewDataContainer.java:880)&#xD;&#xA;&#x9;at com.ibm.xsp.model.domino.DominoViewDataContainer.openView(DominoViewDataContainer.java:814)&#xD;&#xA;&#x9;at com.ibm.xsp.model.domino.DominoViewDataContainer.getDominoView(DominoViewDataContainer.java:802)&#xD;&#xA;&#x9;at com.ibm.xsp.model.domino.DominoViewDataContainer.getView(DominoViewDataContainer.java:797)&#xD;&#xA;&#x9;at com.ibm.xsp.model.domino.DominoViewData.getDataObject(DominoViewData.java:274)&#xD;&#xA;&#x9;at com.ibm.xsp.model.AbstractDataSource.pushData(AbstractDataSource.java:576)&#xD;&#xA;&#x9;at com.ibm.xsp.util.DataPublisher.publishControlData(DataPublisher.java:181)&#xD;&#xA;&#x9;at com.ibm.xsp.component.UIDataPanelBase.publishControlData(UIDataPanelBas</values>
        <values>e.java:310)&#xD;&#xA;&#x9;at com.ibm.xsp.component.UIDataPanelBase.encodeBegin(UIDataPanelBase.java:246)&#xD;&#xA;&#x9;at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:840)&#xD;&#xA;&#x9;at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)&#xD;&#xA;&#x9;at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)&#xD;&#xA;&#x9;at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)&#xD;&#xA;&#x9;at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)&#xD;&#xA;&#x9;at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)&#xD;&#xA;&#x9;at com.ibm.xsp.component.UIViewRootEx._renderView(UIViewRootEx.java:1317)&#xD;&#xA;&#x9;at com.ibm.xsp.component.UIViewRootEx.renderView(UIViewRootEx.java:1255)&#xD;&#xA;&#x9;at com.ibm.xsp.application.ViewHandlerExImpl.doRender(ViewHandlerExImpl.java:641)&#xD;&#xA;&#x9;at com.ibm.xsp.application.ViewHandlerExImpl._renderView(ViewHandlerExImpl.java:320)&#xD;&#xA;&#x9;at com.ibm.xsp.application.ViewHandlerExImpl.renderView(</values>
        <values>ViewHandlerExImpl.java:335)&#xD;&#xA;&#x9;at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:103)&#xD;&#xA;&#x9;at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210)&#xD;&#xA;&#x9;at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:120)&#xD;&#xA;&#x9;at com.ibm.xsp.controller.FacesControllerImpl.render(FacesControllerImpl.java:264)&#xD;&#xA;&#x9;at com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:248)&#xD;&#xA;&#x9;at com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:204)&#xD;&#xA;&#x9;at com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160)&#xD;&#xA;&#x9;at com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:138)&#xD;&#xA;&#x9;at com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103)&#xD;&#xA;&#x9;at com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:583)&#xD;&#xA;&#x9;at com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFCo</values>
        <values>mponentModule.java:1281)&#xD;&#xA;&#x9;at com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:860)&#xD;&#xA;&#x9;at com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:803)&#xD;&#xA;&#x9;at com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:572)&#xD;&#xA;&#x9;at com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1265)&#xD;&#xA;&#x9;at com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:658)&#xD;&#xA;&#x9;at com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:481)&#xD;&#xA;&#x9;at com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:341)&#xD;&#xA;&#x9;at com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:297)&#xD;&#xA;&#x9;at com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272)&#xD;&#xA;Caused by: com.ibm.xsp.Fa</values>
        <values>cesExceptionEx: Database com.ibm.xsp.binding.javascript.JavaScriptValueBinding@304a304a cannot be opened&#xD;&#xA;&#x9;at com.ibm.xsp.model.domino.DominoUtils.doOpenDatabase(DominoUtils.java:240)&#xD;&#xA;&#x9;at com.ibm.xsp.model.domino.DominoUtils.openDatabaseByName(DominoUtils.java:177)&#xD;&#xA;&#x9;... 40 more&#xD;&#xA;</values>
    </extendedDataElements>
    <sourceComponentId component="Expeditor 6.2" componentIdType="ProductName" instanceId="" location="EU1RLNW012" locationType="Hostname" subComponent="" threadId="6" componentType="http://www.w3.org/2001/XMLSchema-instance"/>
    <situation categoryName="ReportSituation">
        <situationType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ReportSituation" reasoningScope="INTERNAL" reportCategory="LOG"/>
    </situation>
    

1 个答案:

答案 0 :(得分:0)

好吧,我还没有找到确切的原因,只有页面持久性与它有关。我仍然不知道为什么它报告它无法打开数据库:com.ibm.xsp.binding.javascript.JavascriptValueBinding@3b2c3b2c"而不是一个能说出数据库路径是什么的正常消息。因此,我无法跟踪代码的哪些部分导致此错误,因为记录的消息并非完全有用。

但是将页面持久性设置回Keep on Disk解决了它并且错误不再存在。

相关问题