2008-09-15 18 views
2

Sun'ın J2EE deploytool tarafından otomatik olarak oluşturulan belirli bir .WAR sayfasındaki bir sayfa, aynı .WAR dosyasında bir Servlet yüklemeye çalışırken, 404 resource not found hatasına neden olan en büyük olasılık nedir?
Örn:Java Servlet 404 hataları

HTTP Durum 404 -/MyServlet/MyServlet

tip Durum raporu

mesajı/MyServlet/MyServlet

açıklama İstenen kaynak (/ MyServlet/MyServlet) mevcut değil. İlgili


: Bunlardan kaç sunucu spesifik olması beklenir? örneğin: Sun Java Uygulama Sunucusu vs Tomcat & Catalina?

+0

Yerel sunucunuzdan yanıt alamadınız, ancak stackoverflow sunucusundan çok fazla yanıt aldınız. – Acn

cevap

5

Web.xml'inizde 'MyServlet' için < servlet eşlemesi > geçerli mi? Bu benim bir numaralı suçluydu, geçmişte bu

1

A 404 hatası, istenen kaynağın bulunmadığı anlamına geliyor. Üste Geri Bildirim Ver Neden Pkaeding önerdiği gibi, büyük olasılıkla web.xml dosyasında doğru (veya mevcut değil) olmanın servlet haritalama kaynaklanmaktadır. Servletler web.xml dosyasında belirtilmelidir ve sadece bu değil, aynı zamanda belirli yollarla eşleştirilmelidirler (bir "url-mapping"). "MyServlet" sunucu uygulaması varsa, ancak uygulama bağlamı kökü temel alınarak "/ MyServlet/MyServlet" ile çözümlenebilecek bir yolla eşlenmezse ve başka bir şey (yani başka bir sunucu, vb.) Bu yolla çözümlenmezse, uygulama sunucusu 404, verilen yolla hiçbir şeyin eşlenmediğini belirtir.

0

Saçlarımı bu kadar sorundan çekerek yaklaşık bir saat harcadım. OSX'teki Tomcat 5.5.27, 'un numaralı her şeyin bir 404'ü geri döndürdüğü bir servlet ve servlet eşlemesi ekleyene kadar gayet iyi çalışıyordu. Bunu fark etmemiştim, ancak yeni bir sunucu/sunucu eklediğimde -mapping çifti servlet-mapping'i servlet girişinden önce koyardım. Yapılması kolay bir hatadır ve tüm uygulamayı dizginlemekle birlikte, mantıklı bir hata mesajına benzeyen bir şey vermeden, biraz aşırı görünüyor, geriye dönük olarak mükemmel bir anlam ifade ediyor.

0

Servlet eşlemesi yaygın bir sorundur. Ancak web.xml'inizde herhangi bir bağlantı varsa, bunlar da suçlu olabilir. Gerçekleştirilecek bir şey, filtreler her zaman, herhangi bir sunucu uygulaması çalışmaya başlamadan önce doFilter'den önce kodu yürütmektir. (DoFilter'den sonra kod çalıştırma filtresini filtreler) Kodumuzda, belirli durumlarda 404'ü geri döndürecek filtreler oluşturduk. Bazı filtreleme haritalarının kaldırılması bazen filtre eşlemelerine bağlı olup olmadığını keşfetmeye yardımcı olur.