2011-01-15 6 views
9

Jestem nowicjuszem jsp i miałem problemy. Początkowo plik jsp i powiązane klasy Javy zostały zbudowane i przetestowane poprawnie na testowym serwerze Tomcat. Teraz zostały przeniesione na inny serwer, który według mnie jest tą samą konfiguracją (z wyjątkiem tego, że teraz zamiast Windowsa jest to system Linux). Ale gdy uzyskuje się dostęp do strony jsp, wyświetlany jest kod źródłowy zamiast faktycznie wykonywanego jsp. Przez jakiś czas googlowałem, ale nie odniosłem sukcesu.Wyświetlanie kodu źródłowego JSP zamiast wykonywania

Oto kod pliku jsp Mam Testowanie:

<HTML> 
<BODY> 
Hello! The time is now <%= new java.util.Date() %> 
</BODY> 
</HTML> 

A oto co widzę w mojej przeglądarce podczas nawigowania do strony:

Hello! The time is now <%= new java.util.Date() %> 

Źródłem strony jest dokładny kod wpisany w pliku przykładowym:

<HTML> 
<BODY> 
Hello! The time is now <%= new java.util.Date() %> 
</BODY> 
</HTML> 

Serwer wydaje się działać. Oto jest nagłówki odpowiedzi I otrzymane z Firebug:

Date Sat, 15 Jan 2011 20:53:24 GMT 
Server Apache/2.2.3 (CentOS) 
Last-Modified Sat, 15 Jan 2011 02:20:18 GMT 
Etag "b385d8-55-499d931205c80" 
Accept-Ranges bytes 
Content-Length 85 
Content-Type text/html; charset=UTF-8 

myślałem że this page może rozwiązać ten problem, ponieważ nie było żadnego odniesienia do pliku JSP używałem lub nawet następujące fragmenty w moim pliku web.xml w folderze WEB-INF:

<servlet> 
    <servlet-name>jsp</servlet-name> 
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> 
    <init-param> 
     <param-name>logVerbosityLevel</param-name> 
     <param-value>WARNING</param-value> 
    </init-param> 
    <load-on-startup>3</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>jsp</servlet-name> 
    <url-pattern>*.jsp</url-pattern> 
</servlet-mapping> 

Próbowałem wstawić te linie i ponownie uruchomić Tomcat, ale bez powodzenia. Jakieś pomysły?

+1

Czy na pewno wniosek faktycznie dociera do Tomcat? Czy jest inny serwer WWW z przodu? A co z serwletami? Czy oni pracują? – Thilo

+0

Co dokładnie masz na stronie JSP i co dokładnie widzisz w przeglądarce? Co dokładnie znajduje się w źródle HTML? (kliknij prawym przyciskiem myszy w przeglądarce, wybierz * View Source *) Byłbym zainteresowany tym, co dokładnie masz na myśli z "kodem źródłowym". Tagi JSP? Znaczniki JSTL? EL? Scriptlets? A może nawet HTML? Nie musisz publikować całego kodu, wystarczy minimalny plik JSP, który wykazuje zachowanie. – BalusC

+1

@Thilo: jeśli żądanie nie dotarłoby do Tomcata, nie zobaczyłoby nic z JSP, nie mówiąc już o kodzie źródłowym. Spodziewam się jednak, że OP nie jest tak oczywisty, że zrzucają pliki JSP na inny serwer zamiast Tomcat :) – BalusC

Odpowiedz

2

Z nagłówków odpowiedzi:

serwera Apache/2.2.3 (CentOS)

To nie jest obsługiwany przez Apache Tomcat, ale przez Apache HTTPD. W ogóle nie wdrożyłeś go na serwerze Tomcat.

+0

"@Thilo: jeśli żądanie nie dotarłoby do Tomcata, nie zobaczyłoby nic z JSP, nie mówiąc już o kodzie źródłowym. Jednak spodziewam się, że OP nie jest tak oczywisty, że zrzuca pliki JSP na inny serwer sieciowy. zamiast Tomcat :) ":-) – Thilo

1

Zobacz, gdzie jest napisane "logVerbosityLevel" i "WARNING"? Zmień OSTRZEŻENIE na DEBUG. Możesz także znaleźć swój skrypt catalina.sh i znaleźć polecenie java i upewnić się, że flaga -DDEBUG jest zawarta w opcjach uruchamiania.

Po przejrzeniu dziennika z pełnym trybem debugowania można sprawdzić, czy występują problemy z uruchomieniem Tomcat na nowym serwerze.

Na przykład można mieć brakującą odpowiedź lub konflikt zależności, który nie pojawia się przy mniej informacyjnych poziomach logowania.

Czy na koniec próbowałeś prostej strony testowej JSP?

 <% out.println("Hello"); %> 

Jeśli umieścisz go na stronie JSP i spróbujesz załadować, zobaczysz stronę JSP lub dane wyjściowe?

Czy próbowałeś użyć portu Tomcat w swojej prośbie? Zwykle jest to 8080. Myślę, że jeden z komentatorów wspomniał o tym jako o możliwości.

2

Po prostu miałem ten sam problem, dlatego natknąłem się na ten post. Dla mnie okazało się, że chodzi o różnicę między CATALINA_HOME i CATALINA_BASE. Myślę, że wielu ludzi nie zdaje sobie sprawy, że to są dwa różne miejsca. W moim Ubuntu katalog CATALINA_HOME był w/usr/share/tomcat6, ale CATALINA_BASE był w/var/lib/tomcat6.Ma to znaczenie, ponieważ musisz umieścić pliki jsp w CATALINA_BASE. Tak więc, powiedziałbym, że Tomcat nie znalazł twojego kodu, mimo że twoja przeglądarka znalazła plik i z radością go wyświetliła, tak samo jak inne pliki tekstowe.

Mam nadzieję, że pomoże to komuś, kto przyszedł z tym samym problemem - jest to moja pierwsza próba opublikowania odpowiedzi na temat StackOverflow.