2014-08-27 28 views
6

Ho due server, uno di produzione e uno di sviluppo, con ColdFusion 9.0.1 su IIS 7.5 su Windows Server 2008 R2. I due sono configurati in modo identico. Abbiamo un problema transitorio in cui, dopo settimane o mesi di uptime senza incidenti, alcune parti del sito (in particolare il portale dell'amministratore di CFIDE e qualsiasi pagina con un tag cfwindow) inizieranno a lanciare gli errori "Impossibile inizializzare la classe coldfusion.security.ESAPIUtils" nel log."Impossibile caricare ESAPI.properties con qualsiasi mezzo. causando "Impossibile inizializzare la classe coldfusion.security.ESAPIUtils"

Basato su somerecommendations Ho disinstallato e reinstallato tutte le hot fix mesi fa, quintuplo controllando che stavo applicandole nell'ordine corretto e seguendo il set di istruzioni corretto.

Questo non ha risolto le cose, ma mentre stavo sfogliando i file di registro, ho notato che un altro errore relativo a ESAPI ("ESAPI.properties non può essere caricato con qualsiasi mezzo. Fallire.") Appare nei log dopo a jRun riavvio. Ho provato ad aggiungere la following declaration alla java.args in jvm.config:

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

che sembrava per risolvere il problema per diversi mesi; nessun errore, le cose hanno funzionato bene. Poi, ieri il server di produzione ha iniziato a ripetere gli errori. Ho provato a riavviare JRun e riavviare il server e l'errore persiste. Il server di sviluppo è perfettamente a posto.

Ho provato a creare uno script che crea solo un'istanza di ESAPIUtils. Su dev, scarica i metadati relativi all'oggetto; in produzione, la pagina genera un errore.

Ho litigato con questo problema avanti e indietro per quasi un anno. A volte si risolve da solo dopo diversi giorni, a volte continua per settimane. Devo ancora capire un modo per "indurre" la condizione, quindi siamo bloccati con "correzioni" non verificabili che sembrano funzionare per un po ', quindi non farlo.

Questo sembra completamente tangenziale, ma abbiamo avuto casi in cui la funzione integrata IsImageFile() restituisce false per le immagini valide. La stranezza di IsImageFile() sembra iniziare un po 'prima che inizi la pazzia "Could not initialize coldfusion.security.ESAPIUtils".

Qui di seguito sono le versioni server:

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) 

e di una traccia dello stack da 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

sandbox abilitato su questo server? –

+0

Sì. Mi dispiace, ho dimenticato di includerlo in origine. L'errore si verifica in più sandbox sul server di produzione. (Si verifica anche tra più pool di applicazioni IIS.) – Rob

+1

Hai provato ad aggiungere l'autorizzazione per leggere il file esapi.properties per quelle sandbox? –

risposta

1

Aggiungere un file di leggere il file presente il permesso ai esapi.properties in < CF_HOME> \ lib per ogni sandbox. Se non è possibile accedere alla console di amministrazione CF, aggiungere manualmente questa autorizzazione in neo-security.xml che può essere trovata nella directory < CF_HOME> \ lib.