Tomcat: Servlet durum Saplı

1 Cevap php

Ben PECL-servlet (PHP / PECL sürümü 5.2.5) kullanarak benim Tomcatserver üzerinde PHP kuruyorum. Sunucu artık başarıyla Gerçek PHP-dosyalarını işleme, ama varolmayan sayfaları için istekleri ile ilgili bir sorun yaşıyorum.

Böyle bir sayfa, f.ex için bir istek: http://www.mydomain.com/nonexistentfile.php, catched asla bir java.io.IOException, yükseltmek için servlet neden olur. Tomcat nedenle sonlandırıldı.

I bu nasıl düzeltebilirim? I servlet gelen durumları yakalamak miyim? Sadece servlet'dir varolan dosyaları eşleştirmek için bir yolu var mı?


Cevabınız için teşekkürler, onun şimdi çalışıyor gibi görünüyor. Ben temelde phpservlet etrafında sardı ve kaldırdı istisnalar kolları benim ilk self-made servlet için php dosyalarını haritalama, Web.xml senin önerdiğin yeniden harita yaptım. Bu sorunu çözmek için iyi bir yol var mı?

O tomcat kendi böyle istisnalar işlemek mümkün değil bana biraz garip görünüyor. Ben bozuk devletlerin yürütme onu korumak için sunucuyu sonlandırma noktasını görebilirsiniz, ancak bu özel durum-işlemeyi etkinleştirmek mümkün olmalı ...

Here is my localhost.2009-12-09.log after invoking phpservlet directly with non-existent page:
(tomcat displays the 4 first lines of the stacktrace int its default errorpage before terminating)

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', 'org.apache.tomcat.util.modeler.Registry@1010058')
09.des.2009 13:35:50 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: attributeAdded('org.apache.catalina.MBeanServer', 'com.sun.jmx.mbeanserver.JmxMBeanServer@bdab91')
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)

1 Cevap

Normalde <error-page> olarak ilan web.xml.

Ama kelimenin tam anlamıyla "catched asla edilmektedir. Tomcat nedenle sonlandırıldı" dedi beri, ben kurulumu hakkında benim şüphelerim var. Eğer gerçekten içinde bir stacktrace ile Tomcat'in Varsayılan hata sayfası göremiyor musunuz? Eğer appserver günlüklerde şey görmüyorum? Nasıl IOException biliyor muydun?

En azından, url-pattern *.php temelde aşağıdaki satırları içeren on bir Filter haritasına deneyebilirsiniz:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException {
    try {
        chain.doFilter(request, response);
    } catch (IOException e) { 
        // Handle it.
    }
}

Ama sorunu nasıl tarif görünce, tepkisi zaten kararlıdır çünkü oldukça, PHP servlet veya webcontainer hata sayfasını görüntülemek için başarısız olduğunu düşünüyorum, ama bu durumda [(0) oldukça öz-açıklayan {görmeliydin appserver günlüklerinde]} hatası.