2009-06-23 5 views
2

Dies ist ein Weitwinkel, aber hoffentlich kann jemand helfen.Strange 404 Fehler mit Feder mvc

Meine Anwendung verwendet Spring Framework mvc. 99% funktionieren einwandfrei. Wenn ich jedoch versuche, zu einem Link zu gehen, kann man ihn [path] /link.html aufrufen. Ich bekomme einen 404 Fehler. Wenn ich jedoch auf diesen Link innerhalb meiner Entwicklungsumgebung (Tomcat, Windows, IE und Eclipse) gehe, bekomme ich keinen solchen 404 Fehler (alles funktioniert wie erwartet). Es passiert nur in meiner Produktionsstätte (Weblogik).

Ich habe Log-Dateien angeschaut und nichts erscheint als ein Problem.

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
     <property name="mappings"> 
      <props> 
<prop key="/link.html">linkController</prop> 
... 
</props> 
</property> 
</bean> 
+0

Betreiben Sie Apache + Tomcat in der Produktion über AJP? – stevedbrown

+0

Was ist die Definition Ihres URL-Mappings? kannst du sie posten? –

Antwort

1

Sie müssen wahrscheinlich Anfragen nach HTML-Dateien an den Controller-Servlet in Ihrer web.xml Datei abzubilden das <servlet-mapping> Element verwendet. Sie sollten die Verwendung von link.do anstelle von link.html in Betracht ziehen, da das Zuweisen von HTML-Dateien zu Ihrem Controller-Servlet dazu führen kann, dass das Bereitstellen von statischem Inhalt in Ihrer Anwendung ein wenig schwierig wird.

Ein weiterer Hinweis: Im Allgemeinen möchten Sie, dass Ihr Entwicklungsstack so genau wie möglich zu Ihrem Produktionstapel passt. Es ist wahrscheinlich, dass Sie dieses Problem eher früher erfahren hätten, wenn Sie WebLogic anstelle von Tomcat entwickelt hätten, da Sie WebLogic in der Produktion verwenden.

+0

Die Zuordnung stimmt mit allen anderen Zuordnungen überein, die ordnungsgemäß funktionieren. Mit anderen Worten: .html ist dem Servlet zugeordnet. – IaCoder

1

Ohne die anstößige URL zu sehen, nehme ich an, Sie haben ein Problem mit Ihrer URL-Konstruktion und es entspricht einfach nicht einer Ressource auf dem Produktionsserver, anstatt dass es ein Problem mit Ihrer Konfiguration ist dass auf andere HTML-Ressourcen zugegriffen werden kann.

ich immer die JSTL URL-Tag verwenden, URLs zu konstruieren, die aus deckt alles hier beschrieben (http://www.ibm.com/developerworks/java/library/j-jstl0318/#N10532)

Wenn JSTL verwenden, ist keine Option, dann sollte der Link geben Ihnen einige Hinweise, was Sie brauchen beim Erstellen einer URL berücksichtigen.

+0

Ich änderte den Link, um JSTL ohne Glück zu verwenden. – IaCoder

+0

Bitte können Sie die lokal funktionierende URL und die in der Produktion unterbrochene URL posten? –

1

Aktivieren Sie die Protokollierung von den org.springframework-Protokollierern, und sehen Sie, was in Spring geschieht (oder wenn Ihre Webanforderung sogar an DispatcherServlet gesendet wird), wenn Sie /link.html anfordern.

0

Das Problem war in der Tat nicht mit Spring/Jsp/etc ... Das Problem war, wie die Standort-Richtlinien in Apache konfiguriert wurden. Ein abschließender Schrägstrich wurde für den Pfad innerhalb der Direktive benötigt.