2014-08-27 20 views
6

Ich habe zwei Server - eine Produktion und eine Entwicklung -, die ColdFusion 9.0.1 unter IIS 7.5 unter Windows Server 2008 R2 ausführen. Die beiden sind identisch konfiguriert. Wir haben ein vorübergehendes Problem, bei dem nach einigen Wochen oder Monaten ereignisloser Betriebszeit einige Teile der Website (speziell das CFIDE-Administratorportal und jede Seite mit einem cfwindow-Tag) in der Klasse "Coldfusion.security.ESAPIUtils" nicht initialisieren können Protokolle."ESAPI.properties konnte auf keinen Fall geladen werden. Fehler." Ursache "Konnte die Klasse coldfusion.security.ESAPIUtils nicht initialisieren"

Basierend auf somerecommendations Ich habe alle Hot Fixes vor Monaten deinstalliert und neu installiert, fünfmal überprüft, dass ich sie in der richtigen Reihenfolge anwendete und die richtigen Anweisungen befolgte.

Das hat die Dinge nicht behoben, aber als ich die Protokolldateien durchkämmte, bemerkte ich, dass ein weiterer ESAPI-bezogener Fehler ("ESAPI.properties konnte nicht geladen werden. Fehlgeschlagen.") In den Protokollen erscheint ein jRun Neustart. Ich versuchte, die following declaration auf die java.args in jvm.config Zugabe:

-Dorg.owasp.esapi.resources=E:\JRun4\servers\cfusion\cfusion-ear\cfusion-war\WEB-INF\cfusion\lib 

Das schien das Problem für einige Monate zu beheben; keine Fehler, die Dinge haben gut funktioniert. Dann, gestern, fing der Produktionsserver an, die Fehler erneut zu werfen. Ich habe versucht, JRun neu zu starten und den Server neu zu starten, und der Fehler bleibt bestehen. Der Entwicklungsserver ist vollkommen in Ordnung.

Ich habe versucht, ein Skript zu erstellen, das nur eine ESAPIUtils-Instanz instanziiert und cfdumps. Auf Dev werden die Metadaten über das Objekt ausgegeben. Bei der Produktion führt die Seite zu einem Fehler.

Ich kämpfe seit fast einem Jahr mit diesem Problem. Manchmal löst es sich nach einigen Tagen selbst auf, manchmal dauert es Wochen. Ich muss noch einen Weg finden, den Zustand zu "induzieren", so dass wir mit untestabilen "Fixes", die für eine Weile zu funktionieren scheinen, stecken bleiben, dann nicht.

Dies scheint vollständig tangential, aber wir hatten Fälle, in denen die integrierte IsImageFile() Funktion für gültige Bilder false zurückgibt. Die Seltsamkeit von IsImageFile() scheint etwas zu beginnen, bevor der Wahnsinn "Konnte die Klasse coldfusion.security.ESAPIUtils nicht initialisieren" beginnt.

Im Folgenden sind die Server-Versionen:

ColdFusion Version: 9,0,1,274733 
Operating System: Windows Server 2008 R2 amd64 6.1 
Web Server Software: Microsoft-IIS/7.5 
Java JVM: 1.8.0_05 Oracle Corporation 
JEE Server: JRun/4.0 
Security Hotfixes (9.0.1): APSB13-27, APSB13-19, APSB13-13, APSB13-10, ColdFusion 9.0.1  Cumulative Hotfix 4 (APSB13-03, APSB12-26, APSB12-21, APSB12-06, APSB11-29, APSB11-14, APSB11-04, APSB10-18), ColdFusion 9.0.1 Cumulative Hotfix 3, ColdFusion 9.0.1 Cumulative Hotfix 2, ColdFusion 9.0.1 Cumulative Hotfix 1 
Connectors: JRun IIS 64 Bit Connector (Build 108858) 

Und ein Stack-Trace von cfusion-out.log:

08/27 11:37:52 Error [jrpp-58] - Could not initialize class  08/27 11:37:52 Error [jrpp-58] - Could not initialize class coldfusion.security.ESAPIUtils The specific sequence of files included or processed is: E:\web\cfadmin\webroot\CFIDE\administrator\index.cfm, line: 30 
08/27 11:37:52 error ROOT CAUSE: 
java.lang.NoClassDefFoundError: Could not initialize class coldfusion.security.ESAPIUtils 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:483) 
at coldfusion.runtime.java.JavaProxy.invoke(JavaProxy.java:97) 
at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2360) 
at cflogin2ecfm1599616868.runPage(C:\work\ColdFusion\cf9_u1_final_hotfix\cfusion\wwwroot\CFIDE\administrator\login.cfm:30) 
at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:231) 
at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:416) 
at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2722) 
at cfApplication2ecfm1920815415._factor5(C:\work\cf9_u1_final_hotfix\cfusion\wwwroot\CFIDE\administrator\Application.cfm:210) 
at cfApplication2ecfm1920815415._factor9(C:\work\cf9_u1_final_hotfix\cfusion\wwwroot\CFIDE\administrator\Application.cfm:202) 
at cfApplication2ecfm1920815415.runPage(C:\work\cf9_u1_final_hotfix\cfusion\wwwroot\CFIDE\administrator\Application.cfm:1) 
at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:231) 
at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:416) 
at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65) 
at coldfusion.filter.CfincludeFilter.include(CfincludeFilter.java:33) 
at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:297) 
at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48) 
at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40) 
at coldfusion.filter.PathFilter.invoke(PathFilter.java:94) 
at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70) 
at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28) 
at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38) 
at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46) 
at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38) 
at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) 
at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62) 
at coldfusion.CfmServlet.service(CfmServlet.java:201) 
at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89) 
at jrun.servlet.FilterChain.doFilter(FilterChain.java:86) 
at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42) 
at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46) 
at jrun.servlet.FilterChain.doFilter(FilterChain.java:94) 
at jrun.servlet.FilterChain.service(FilterChain.java:101) 
at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106) 
at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42) 
at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286) 
at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543) 
at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203) 
at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428) 
at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66) 
javax.servlet.ServletException: ROOT CAUSE: 
java.lang.NoClassDefFoundError: Could not initialize class coldfusion.security.ESAPIUtils 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:483) 
at coldfusion.runtime.java.JavaProxy.invoke(JavaProxy.java:97) 
at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2360) 
at cflogin2ecfm1599616868.runPage(C:\work\ColdFusion\cf9_u1_final_hotfix\cfusion\wwwroot\CFIDE\administrator\login.cfm:30) 
at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:231) 
at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:416) 
at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2722) 
at cfApplication2ecfm1920815415._factor5(C:\work\cf9_u1_final_hotfix\cfusion\wwwroot\CFIDE\administrator\Application.cfm:210) 
at cfApplication2ecfm1920815415._factor9(C:\work\cf9_u1_final_hotfix\cfusion\wwwroot\CFIDE\administrator\Application.cfm:202) 
at cfApplication2ecfm1920815415.runPage(C:\work\cf9_u1_final_hotfix\cfusion\wwwroot\CFIDE\administrator\Application.cfm:1) 
at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:231) 
at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:416) 
at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65) 
at coldfusion.filter.CfincludeFilter.include(CfincludeFilter.java:33) 
at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:297) 
at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48) 
at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40) 
at coldfusion.filter.PathFilter.invoke(PathFilter.java:94) 
at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70) 
at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28) 
at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38) 
at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46) 
at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38) 
at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) 
at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62) 
at coldfusion.CfmServlet.service(CfmServlet.java:201) 
at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89) 
at jrun.servlet.FilterChain.doFilter(FilterChain.java:86) 
at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42) 
at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46) 
at jrun.servlet.FilterChain.doFilter(FilterChain.java:94) 
at jrun.servlet.FilterChain.service(FilterChain.java:101) 
at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106) 
at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42) 
at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286) 
at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543) 
at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203) 
at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428) 
at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66) 
at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:70) 
at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46) 
at jrun.servlet.FilterChain.doFilter(FilterChain.java:94) 
at jrun.servlet.FilterChain.service(FilterChain.java:101) 
at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106) 
at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42) 
at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286) 
at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543) 
at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203) 
at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428) 
at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66) 
+0

ist Sandbox auf diesem Server aktiviert? –

+0

Ja. Tut mir leid, ich habe vergessen, das ursprünglich aufzunehmen. Der Fehler tritt in mehreren Sandboxes auf dem Produktionsserver auf. (Es tritt auch in mehreren IIS-Anwendungspools auf.) – Rob

+1

Haben Sie versucht, Berechtigungen zum Lesen der esapi.properties-Datei für diese Sandboxes hinzuzufügen? –

Antwort

1

eine Datei hinzufügen Leseberechtigung zu den esapi.properties vorliegenden Datei in < CF_HOME> \ lib für jede Sandbox. Wenn Sie nicht auf die CF-Admin-Konsole zugreifen können, fügen Sie diese Berechtigung manuell in neo-security.xml hinzu, die sich im Verzeichnis CF_HOME> \ lib von < befindet.