0
votes

UPDATE 16Nov: The problem is where users are accessing invalid urls to xpages that don't exist. How can I catch these as normal 404's before they go in as full stacktrace dump in the error log? i.e. catch them before they go to the XSPLoader

eg 13/11/15 11:24: Exception Thrown com.ibm.xsp.page.PageNotFoundException: Could not create the page /blog2.xsp because the class xsp.Blog2 could not be found. Please check your spelling. at com.ibm.xsp.page.compiled.CompiledPageDriver.getClassForPageName(CompiledPageDriver.java:174) at com.ibm.xsp.page.compiled.CompiledPageDriver.loadPage(CompiledPageDriver.java:61) at com.ibm.xsp.application.ViewHandlerExImpl._createViewRoot(ViewHandlerExImpl.java:499) at com.ibm.xsp.application.ViewHandlerExImpl.createViewRoot(ViewHandlerExImpl.java:567) at com.ibm.xsp.application.ViewHandlerExImpl.doCreateView(ViewHandlerExImpl.java:142) at com.ibm.xsp.application.ViewHandlerEx.createView(ViewHandlerEx.java:90) at com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:251) 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:350) at com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:306) at com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272) Caused by: java.lang.ClassNotFoundException: Cannot find class xsp.Blog2 in NSF at com.ibm.domino.xsp.module.nsf.ModuleClassLoader$DynamicClassLoader.findClass(ModuleClassLoader.java:469) at java.lang.ClassLoader.loadClass(ClassLoader.java:672) at com.ibm.domino.xsp.module.nsf.ModuleClassLoader$DynamicClassLoader.loadClass(ModuleClassLoader.java:348) at java.lang.ClassLoader.loadClass(ClassLoader.java:638) at com.ibm.domino.xsp.module.nsf.ModuleClassLoader.loadClass(ModuleClassLoader.java:176) at java.lang.ClassLoader.loadClass(ClassLoader.java:638) at com.ibm.domino.xsp.module.nsf.ModuleClassLoader.loadClass(ModuleClassLoader.java:186) 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:169) ... 21 more Caused by: java.lang.ClassNotFoundException: xsp.Blog2 at java.net.URLClassLoader.findClass(URLClassLoader.java:434) at com.ibm.domino.xsp.module.nsf.ModuleClassLoader$DynamicClassLoader.findClass(ModuleClassLoader.java:442) ... 30 more

Is there a way to stop these? Seems to be a class not found problem. It is almost a server log attack.

1

1 Answers

0
votes

Every XPage and Custom Control is compiled down to be a Java class, so if an XPage or Custom Control has been removed then it also removes the Java class with the same name.

In my tests, this throws a 404 error, so something is wrong with your application. I can't reproduce that error message, I either get the 404 error or a cached version of the custom control. I would suggest using Project > Clean to completely recompile the project.