2014-08-27 11 views
6

Mam dwa serwery - jeden produkcji i jeden rozwój - z systemem ColdFusion 9.0.1 na IIS 7.5 w systemie Windows Server 2008 R2. Te dwie są skonfigurowane identycznie. Mamy problem przejściowy, w którym, po tygodniach lub miesiącach bez problemów, niektóre części witryny (w szczególności portal administratora CFIDE i dowolna strona z tagiem cfwindow) zaczną wyświetlać komunikat "Nie można zainicjować błędów klasy coldfusion.security.ESAPIUtils". logi."Nie można załadować właściwości ESAPI.properties w żaden sposób.". powoduje "Nie można zainicjować klasy coldfusion.security.ESAPIUtils"

Na podstawie somerecommendations odinstalowałem i ponownie zainstalowałem wszystkie hot fixy miesiące temu, pięciokrotnie sprawdzając, czy stosowałem je we właściwej kolejności i zgodnie z prawidłowym zestawem instrukcji.

To nie naprawiło problemów, ale podczas przeczesywania plików dziennika zauważyłem, że inny błąd związany z ESAPI ("nie można załadować właściwości ESAPI.properties w żaden sposób.") Pojawia się w dziennikach po Ponownie uruchom jRun. Próbowałem dodanie following declaration do java.args w jvm.config:

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

To wydawało się rozwiązać ten problem przez kilka miesięcy; bez błędów, wszystko działało dobrze. Następnie, wczoraj serwer produkcyjny zaczął ponownie zgłaszać błędy. Próbowałem zrestartować JRun i ponownie uruchomić serwer, a błąd nadal występuje. Serwer programistyczny jest całkowicie w porządku.

Próbowałem utworzyć skrypt, który po prostu tworzy instancję i cfdumps instancji ESAPIUtils. Na dev, zrzuca metadane dotyczące obiektu; przy produkcji strona powoduje błąd.

Przez prawie rok walczyłem z tą kwestią. Czasami ustępuje po kilku dniach, czasem trwa to przez kilka tygodni. Nie wymyśliłem jeszcze sposobu, aby "wywołać" ten stan, więc utknęliśmy w niezrównanych "poprawkach", które wydają się działać przez jakiś czas, a potem nie.

Wydaje się to być całkowicie styczne, ale mamy przypadki, w których wbudowana funkcja IsImageFile() zwraca wartość false w przypadku poprawnych obrazów. Wydaje się, że dziwność IsImageFile() zaczyna się nieco, zanim rozpocznie się "Nie można zainicjować klasy coldfusion.security.ESAPIUtils".

Poniżej znajdują się wersje serwerowe:

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) 

a ślad stosu z 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

jest piaskownica włączona na tym serwerze? –

+0

Tak. Przepraszam, że zapomniałem o tym pierwotnie. Błąd występuje w wielu obszarach izolowanych na serwerze produkcyjnym. (Występuje również w wielu pulach aplikacji IIS.) – Rob

+1

Czy próbowałeś dodać uprawnienia do odczytu pliku esapi.properties dla tych obszarów izolowanych? –

Odpowiedz

1

Dodaj plik uprawnienia do odczytu esapi.properties plik obecny w < CF_HOME> \ lib dla każdego piaskownicy. Jeśli nie możesz uzyskać dostępu do konsoli administracyjnej CF ręcznie, dodaj to uprawnienie w pliku neo-security.xml, który można znaleźć w katalogu < CF_HOME> \ lib.

Powiązane problemy