PECL-servlet (PHP/PECL- 버전 5.2.5)을 사용하여 Tomcat 서버에 PHP를 설치하고 있습니다. 서버는 이제 실제 PHP 파일을 성공적으로 처리하지만 존재하지 않는 페이지에 대한 요청에 문제가 있습니다.Tomcat : 서블릿 예외 처리
그런 페이지 f.ex : http://www.mydomain.com/nonexistentfile.php에 대한 요청으로 인해 서블릿은 결코 잡히지 않는 java.io.IOException을 발생시킵니다. 따라서 Tomcat은 종료됩니다.
어떻게 해결할 수 있습니까? 서블릿에서 예외를 잡을 수 있습니까? 기존 파일을 서블릿에만 매핑하는 방법이 있습니까? 답장을
감사는 지금 작동하는 것 같군. web.xml에서 제안한 재 맵핑을 수행하여 php-files를 기본적으로 phpservlet을 감싸고 발생한 예외를 처리하는 최초의 자체 서블릿에 매핑했습니다. 이것은 문제를 해결하는 좋은 방법입니까?
바람둥이가 독자적으로 이러한 예외를 처리 할 수 없다는 것이 조금 이상하게 보입니다. 내가 손상된 상태에서 실행에서 서버를 보호하기 위해 서버를 종료 지점을 볼 수 있지만 사용자 정의 예외 처리를 가능하게해야합니다 ...
여기 내 localhost.2009-12-09.log 호출 후 존재하지 않는 페이지와 직접 phpservlet :
09.des.2009 13:35:50 org.apache.catalina.core.ApplicationContext log INFO: ContextListener: contextInitialized() 09.des.2009 13:35:50 org.apache.catalina.core.ApplicationContext log INFO: SessionListener: contextInitialized() 09.des.2009 13:35:50 org.apache.catalina.core.ApplicationContext log INFO: ContextListener: attributeAdded('org.apache.catalina.Registry', '[email protected]') 09.des.2009 13:35:50 org.apache.catalina.core.ApplicationContext log INFO: ContextListener: attributeAdded('org.apache.catalina.MBeanServer', '[email protected]') 09.des.2009 13:35:54 org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet php threw exception java.io.IOException: at net.php.servlet.send(Native Method) at net.php.servlet.service(servlet.java:190) at net.php.servlet.service(servlet.java:214) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source)