0
votes

I have an XPages app running on 8.5.3 UP1 with a mobile controls interface. It works fine on my dev and test servers, but in production we're seeing the following intermittent error when a user clicks the "Load More" button in the view control:

5/10/12 4:12 PM: Exception Thrown com.ibm.xsp.acl.NoAccessSignal at com.ibm.domino.xsp.module.nsf.NotesContext.checkAccess(NotesContext.java:1611) at com.ibm.domino.xsp.module.nsf.NotesContext.serverProcessSignedResource(NotesContext.java:955) at com.ibm.domino.xsp.module.nsf.NotesContext.setSignerSessionRights(NotesContext.java:926) at com.ibm.domino.xsp.module.nsf.ModuleClassLoader$DynamicClassLoader.loadClass(ModuleClassLoader.java:349) at java.lang.ClassLoader.loadClass(ClassLoader.java:619) at com.ibm.domino.xsp.module.nsf.ModuleClassLoader.loadClass(ModuleClassLoader.java:171) at java.lang.ClassLoader.loadClass(ClassLoader.java:619) at com.ibm.designer.runtime.Application.loadClass(Application.java:708) at com.ibm.xsp.library.ApplicationFacesClassLoader.loadClass(ApplicationFacesClassLoader.java:54) at com.ibm.xsp.page.compiled.CompiledPageDriver.getClassForPageName(CompiledPageDriver.java:166) at com.ibm.xsp.page.compiled.CompiledPageDriver.loadPage(CompiledPageDriver.java:61) at com.ibm.xsp.application.ViewHandlerExImpl._createViewRoot(ViewHandlerExImpl.java:489) at com.ibm.xsp.application.ViewHandlerExImpl.createViewRoot(ViewHandlerExImpl.java:557) at com.ibm.xsp.application.ViewHandlerExImpl.doCreateView(ViewHandlerExImpl.java:141) at com.ibm.xsp.application.ViewHa ndlerEx.createView(ViewHandlerEx.java:90) at com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:238) at com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:200) at com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160) at com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:137) 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:1267) at com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:847) at com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doSe rvice(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:1251) at com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:598) at com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:421) at com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:341) at com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:297) at com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272)

5/10/12 4:43 PM: Exception Thrown com.ibm.xsp.acl.NoAccessSignal at com.ibm.domino.xsp.module.nsf.NotesContext.checkAccess(NotesContext.java:1611) &nbsp ; at com.ibm.domino.xsp.module.nsf.NotesContext.serverProcessSignedResource(NotesContext.java:955) at com.ibm.domino.xsp.module.nsf.NotesContext.setSignerSessionRights(NotesContext.java:926) at com.ibm.domino.xsp.module.nsf.ModuleClassLoader$DynamicClassLoader.loadClass(ModuleClassLoader.java:349) at java.lang.ClassLoader.loadClass(ClassLoader.java:619) at com.ibm.domino.xsp.module.nsf.ModuleClassLoader.loadClass(ModuleClassLoader.java:171) at java.lang.ClassLoader.loadClass(ClassLoader.java:619) at com.ibm.designer.runtime.Application.loadClass(Application.java:708) at com.ibm.xsp.library.ApplicationFacesClassLoader.loadClass(ApplicationFacesClassLoader.java:54) at com.ibm.xsp.page.compiled.CompiledPageDriver.getClassForPageName(CompiledPageDriver.java:166) at com.ibm .xsp.page.compiled.CompiledPageDriver.loadPage(CompiledPageDriver.java:61) at com.ibm.xsp.application.ViewHandlerExImpl._createViewRoot(ViewHandlerExImpl.java:489) at com.ibm.xsp.application.ViewHandlerExImpl.createViewRoot(ViewHandlerExImpl.java:557) at com.ibm.xsp.application.ViewHandlerExImpl.doCreateView(ViewHandlerExImpl.java:141) at com.ibm.xsp.application.ViewHandlerEx.createView(ViewHandlerEx.java:90) at com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:238) at com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:200) at com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160) at com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:137) at com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103) & nbsp; at com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:576) at com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1267) at com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:847) 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:1251) at com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:598) at com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:421) at com.ibm.designer.runtime.domino.adapter. LCDEnvironment.doService(LCDEnvironment.java:341) at com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:297) at com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272)

Any thoughts would be appreciated.

Matt

2
ACL problem - check user's access (peeked into code, it fails if he/she has no access). I know it sounds fishy - you see at least something in the view. Check for yourself in NotesContext class.Frantisek Kossuth
Frantisek, I know that's what it looks like, but the user is able to load the view and get documents, it's when they click "Load More" that the problem occurs. There are no reader fields on documents. So I think that might be a red herring. MattMatt White
Strange... checkAccess(NotesContext.java:1611) is exception thrown in "if" with no access. So there might be some problem with datasources (you have filled "for" property, right?)Frantisek Kossuth
Anything out of the ordinary in this Data View? Number of default rows? Number of rows you're adding with the Load More button? Anything unusual about the production application? Does the same application and data work as it should on your dev server?Paul Hannan
Is the user authenticated from a secondary directory via directory assistance?keithstric

2 Answers

0
votes

Keith and I have both encountered this behavior (in different applications) in the following scenario:

  1. The current user was authenticated via Directory Assistance; in other words, they don't have an account in the primary Domino Directory.
  2. The XPage has a page-specific ACL

For example, I used to use page ACL's in watrCoolr to specify that authenticated users would have editor access to the chat data source but anonymous would only have reader. That worked fine as long as I authenticated as a user explicitly registered in names.nsf. If I authenticated as a user defined in an LDAP directory, the page would stack trace. As soon as I switched to simply hiding editable controls from anonymous users and removed the page ACL, no more stack trace.

This might explain why it works fine in dev and test but blows up in production, if you're not using Directory Assistance in the former and they are in the latter.

0
votes

OK this turned out to be a very odd issue which affected iOS devices specifically. I had written some extra code to detect if the app was running in standalone mode (ie that the user had created a shortcut to the app on the home screen). This code loops through all tags that have an onclick event and stops them from launching Safari and forces them to run inside the standalone browser window. In the case of the load more button this is what was causing the error on the server. I still don't understand why that was an error, but it was an easy fix, simply don't process the Load More button when I loop through everything else in the page.

Thanks for all the help everyone.