Web.xml неправильно компилируется - PullRequest
0 голосов
/ 07 сентября 2018

Я недавно пытался преобразовать Eclipse, Google Appengine Project из java7-java8, так как GAE прекратил поддерживать java7 (или сделает это в ближайшем будущем). Проект работал нормально до начала преобразования. Теперь я получаю эту ошибку при попытке запустить проект локально:

    java.lang.IllegalStateException: Multiple servlets map to path: /api/add-batch-shelfsurvey: ApiShelfSurveyBatchServlet,com.imobdev.figjam.ApiShelfSurveyBatchServlet

Это запись в web.xml для этого сервлета:

    <servlet>
        <servlet-name>ApiShelfSurveyBatchServlet</servlet-name>
        <servlet-class>com.imobdev.figjam.ApiShelfSurveyBatchServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ApiShelfSurveyBatchServlet</servlet-name>
        <url-pattern>/api/add-batch-shelfsurvey</url-pattern>
    </servlet-mapping>

Это начало файла web.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

Я дважды и трижды проверил / api / add-batch-shelfsurvey путь уникален в web.xml, но я все еще получаю эту ошибку. Сервлет, упомянутый в сообщении об ошибке, изменяется, но ни один из них не имеет нескольких сопоставлений с одним путем. Я нашел эти темы, которые кажутся похожими, но на самом деле не связаны между собой: https://github.com/dropwizard/dropwizard/issues/2107 https://bugs.eclipse.org/bugs/show_bug.cgi?id=479865

Я не знаю, имеет ли это отношение, но это мой файл appengine-web.xml:

    <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
        <threadsafe>true</threadsafe>
        <url-stream-handler>urlfetch</url-stream-handler>
        <system-properties>
            <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
            <property name="appengine.file.encoding" value="US-ASCII"/>
        </system-properties>
        <sessions-enabled>true</sessions-enabled>
        <runtime>java8</runtime>
    </appengine-web-app>

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Мне удалось запустить проект на локальном хосте, загрузить и запустить на Google App Engine. К сожалению, я не знаю точно, в чем проблема. Вот шаги, которые я предпринял: -Убрал / * из всех в файле web.xml. Изменены между версиями 2.5 xsd и 3.1 xsd несколько раз, каждый раз запуская проект на локальном хосте. -Изменил обратно на 2,5 xsd и изменил все обратно на окончание в / *

Затем проект скомпилировался и нормально работал как на localhost, так и на appengine. Если кто-нибудь знает что-нибудь еще о том, почему это может произойти, пожалуйста, дайте мне знать.

0 голосов
/ 07 сентября 2018

Это потому, что путь /api/add-batch-shelfsurvey мог быть зарегистрирован до того, как попытаться проверить все <servlet-mapping> разделы в web.xml, и если у вас есть какие-либо @WebServlet аннотации, тогда проверьте urlPatterns={"..."}

Если выиметь два определения одновременно, сервер приложений не будет знать, какое из них правильное.

...