2014-11-21 2 views
0

많은 응용 프로그램에서 xe : 대화 상자를 사용하기 전에 xe : 대화 상자를 호출하는 여러 단추가있는 새로운 XPage 워크 플로 양식에 문제가 있습니다.간헐적 NullPointerException (xe : 대화 상자 사용)

초반 및 초보자를 시뮬레이트하기 위해 서로 다른 로그인을 사용하여 여러 브라우저에서 테스트 했으므로 버튼이 올바르게 작동합니다. 그런 다음 잠시 후 이러한 동일한 버튼 중 하나를 클릭하면 "예기치 않은 런타임 오류 : 런타임에 예기치 않은 오류가 발생했습니다."java.lang.NullPointerException -이 시점부터 아무 사용자도 xe :를 사용하는 버튼을 클릭 할 수 없습니다. 대화 상자 - 동일한 오류가 발생합니다. 서버에서 엉망이되어서 HTTP 또는 전체 서버를 다시 시작해야 다시 작동하게됩니다.

워크 플로우가 진행되는 동안 앱은 링크가 포함 된 이메일을 XPage로 보냅니다. 앱이 이메일의 링크로 열리 며 (사용자가 로그인 한 후) 문제가 자주 발생하는 것처럼 보입니다.

그래서 일부 개체가 올바르게 설정되지 않았습니다. 어떤 객체가 설정되어 있지 않은지 어떻게 확인할 수 있습니까?

다음은 대화 상자가 렌더링되지 않는 일부 조건에서 다음 패널 내부에 앉아 궁금 추적

11/21/14 8:28 AM: Exception Thrown 
Context Path: /aaa.nsf 
Page Name: /test.xsp 
javax.faces.FacesException: java.lang.NullPointerException 
at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:865) 
at com.ibm.xsp.extlib.component.dynamiccontent.UIDynamicControl.invokeOnComponent(UIDynamicControl.java:254) 
at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:878) 
at com.ibm.xsp.extlib.component.dialog.UIDialog.invokeOnComponent(UIDialog.java:543) 
at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:878) 
at com.ibm.xsp.component.UIDataPanelBase.invokeOnComponent(UIDataPanelBase.java:416) 
at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:878) 
at com.ibm.xsp.component.UIDataPanelBase.invokeOnComponent(UIDataPanelBase.java:416) 
at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:878) 
at com.ibm.xsp.component.UIDataPanelBase.invokeOnComponent(UIDataPanelBase.java:416) 
at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:878) 
at com.ibm.xsp.component.UIDataPanelBase.invokeOnComponent(UIDataPanelBase.java:416) 
at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:878) 
at com.ibm.xsp.component.UIDataPanelBase.invokeOnComponent(UIDataPanelBase.java:416) 
at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:878) 
at com.ibm.xsp.component.UIDataPanelBase.invokeOnComponent(UIDataPanelBase.java:416) 
at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:878) 
at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:878) 
at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:878) 
at com.ibm.xsp.component.UIViewRootEx.invokeOnComponent(UIViewRootEx.java:1552) 
at com.ibm.xsp.component.UIViewRootEx._invokePartialRefresh(UIViewRootEx.java:1323) 
at com.ibm.xsp.component.UIViewRootEx2._invokePartialRefresh(UIViewRootEx2.java:132) 
at com.ibm.xsp.component.UIViewRootEx._renderView(UIViewRootEx.java:1309) 
at com.ibm.xsp.component.UIViewRootEx.renderView(UIViewRootEx.java:1255) 
at com.ibm.xsp.application.ViewHandlerExImpl.doRender(ViewHandlerExImpl.java:651) 
at com.ibm.xsp.application.ViewHandlerExImpl._renderView(ViewHandlerExImpl.java:321) 
at com.ibm.xsp.application.ViewHandlerExImpl.renderView(ViewHandlerExImpl.java:336) 
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:103) 
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210) 
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:120) 
at com.ibm.xsp.controller.FacesControllerImpl.render(FacesControllerImpl.java:270) 
at com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:224) 
at com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:157) 
at com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160) 
at com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:138) 
at com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103) 
at com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:576) 
at com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1335) 
at com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:853) 
at com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:796) 
at com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:565) 
at com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1319) 
at com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:662) 
at com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:482) 
at com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:357) 
at com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:313) 
at com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272) 
Caused by: java.lang.NullPointerException 
at com.ibm.xsp.extlib.component.dynamiccontent.AbstractDynamicContent.createContent(AbstractDynamicContent.java:134) 
at com.ibm.xsp.extlib.component.dialog.UIDialog$PopupContent.encodeBegin(UIDialog.java:224) 
at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:842) 
at com.ibm.xsp.component.UIViewRootEx$1.invokeContextCallback(UIViewRootEx.java:1326) 
at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:862) 
... 46 more 
+1

오류로 참조 된 코드를 살펴볼 가치가 있습니다. AbstractDynamicContent (134 행) - https://github.com/OpenNTF/XPagesExtensionLibrary/blob/a915a03b169253ecfa1228ac860ab39e26a13881/extlib/lwp/product/runtime/eclipse/plugins/com.ibm.xsp.extlib.controls/src/com/ibm/ xsp/extlib/component/dynamiccontent/AbstractDynamicContent.java, UIDialog (224 행) - https://github.com/OpenNTF/XPagesExtensionLibrary/blob/a915a03b169253ecfa1228ac860ab39e26a13881/extlib/lwp/product/runtime/eclipse/plugins/com.ibm .xsp.extlib.controls/src/com/ibm/xsp/extlib/component/dialog/UIDialog.java –

+0

브라이언 - 정보 주셔서 감사합니다. 이 문제를 해결하는 방법은 dig보다 선호하지만 어쨌든 AbstractDynamicContent 선 134는 ViewStateBean.get()입니다. initFromState(); UIDialog 라인 224는 createContent (ctx)입니다. 뷰 상태 이외에 무엇을 만들지 잘 모르겠다. –

+0

일반적으로 나는 그것을 약간 파헤쳐 보았지만, 나는 그 순간에 시간이 없다고 두려워한다. 다른 어떤 종류의 영혼이 급습 할 수 있습니다.하지만 최소한 나는 소스 코드가 공개되어 있고 Github에서 쉽게 접근 할 수 있다는 것을 알고 싶었다. (단지 이번주의 Git에 올라 갔다.) –

답변

0

간헐적 인 오류 및 막연한 오류 메시지 텍스트 때문에 문제를 해결하기가 힘듭니다. 확실한 대답은 없지만 두 가지 변경을 수행 한 후에도 오류없이 일관되게 작동하는 것으로 보입니다. 따라서 xe와 관련된 NullPointerException이 발생하는 경우 다른 사람이 솔루션을 가리킬 수 있도록 문서화하고 있습니다. 대화. 링크 URL이 포함 된 "& 행동 = 오픈 도큐먼트"하지만이 필요 "& 조치를 = editDocument"

첫째, 만 응용 프로그램에서 알림 이메일로 전송 링크에서 웹 응용 프로그램을 연 후 발생에 오류를 좁혀 대화 상자에는 편집 가능한 필드가 있기 때문입니다.

두 번째 변경 사항은 응용 프로그램이 sessionAsSigner를 사용하여 액세스 할 수있는 ACL 권한이없는 데이터베이스에서 데이터를 가져 오는 것입니다. 사용자 액세스를 허용하도록 ACL을 변경했으며 세션에서 sessionAsSigner를 사용하지 못하도록 코드를 변경했습니다.

0

입니다. 존재하지 않는 것을 열 수 없음을 기억하십시오. 이전에 대화 상자를 사용 했으므로 dynamicContent를 사용하는 것처럼 보입니다. 문제에 대한 내 첫 번째 추측입니다.

+0

데이비드에게 감사드립니다 - 모든 아이디어는 높이 평가됩니다. 이상한 것은 이메일의 링크에서 페이지에 액세스 할 때까지 대화 상자가 제대로 작동한다는 것입니다. 디버그 툴바는 제대로 작동하면 applicationScope var "viewStateBean"이 있지만 전자 메일 링크에서 액세스 할 때 존재하지 않으며 대화 상자가 더 이상 모든 사용자에게 적합하지 않음을 보여줍니다. 그것은 응용 프로그램에서 사용되는 객체를 손상시킨 것과 같습니다. –