2013-08-29 2 views
0

У меня есть проект Java EE, который хорошо работает в Eclipse. Но когда я развертываю его на сервере с обычным Tomcat-7, он показывает ошибку 404 на каждой странице сервлета (в то время как .jsp работает).Tomcat показывает 404

Я попытался развернуть там .war-файл и попытался просто скопировать всю папку проекта, включая каталог WEB-INF. Результат тот же.

web.xml файл содержит следующее:

<?xml version="1.0" encoding="ASCII"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
     version="2.5"> 
    <display-name>acs</display-name> 
    <servlet> 
    <display-name>jsp</display-name> 
    <servlet-name>jsp</servlet-name> 
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>jsp</servlet-name> 
    <url-pattern>*.jsp</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>*.html</url-pattern> 
    <url-pattern>*.png</url-pattern> 
    <url-pattern>*.gif</url-pattern> 
    <url-pattern>*.jpg</url-pattern> 
    <url-pattern>*.css</url-pattern> 
    <url-pattern>*.js</url-pattern> 
    <url-pattern>*.svg</url-pattern> 
    <url-pattern>*.kml</url-pattern> 
    </servlet-mapping> 
</web-app> 

каждый класс сервлета содержит аннотации, как этот

@WebServlet("/full") 

Так почему это происходит? И есть ли способ узнать, где Tomcat пытается найти эти сервлеты? Или что-то. Итак, теперь, когда я стоял перед стеной, и это показывает мне 404, и у меня нет крошечной идеи, что пойдет не так ...

+1

Если вы разрабатываете на Windows: есть имена файлов к регистру нечувствительны. А для Unix (и jars) пути к файлам чувствительны к регистру. Другая второстепенная проблема: вероятно, на сервере есть кодировка UTF-8, а вы - Windows-1252 или тому подобное. Убедитесь, что кодировка источников JSP верна, если вы используете специальные символы. - Конечно, вы, возможно, изменили контекст сервлета: http localhost 8080/servlet/x.jpg против http my.com/x.jpg. –

+0

Нет, обе машины разработки и сервер работают на GNU/Linux, используя кодировку UTF-8. –

+0

Дальнейшее угадывание: возможно, один сервер распаковывает войну, а другой нет. Выпуск майского владельца/прав. В любом случае, удачи. –

ответ

0

Для каждого сервлета мы добавляем 2 основных тега < servlet> и < servlet -отображением> как

<servlet> 
    <display-name>jsp</display-name> 
    <servlet-name>jsp</servlet-name> 
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>jsp</servlet-name> 
    <url-pattern>*.jsp</url-pattern> 
    </servlet-mapping> 

в то время как для «умолчанию» сервлет я не нашел> тег < сервлета с сервлет-класса отображения

+0

Ну, я вставил там тег сервлета по умолчанию с классом org.apache. catalina.servlets.DefaultServlet', как описано [здесь] (https://tomcat.apache.org/tomcat-7.0-doc/default-servlet.html). Но ничего не меняется. –