Назад | Перейти на главную страницу

Развертывание приложения Java на Tomcat 7 с контролем версий контекста

Я работаю над API, который построен на мини-платформе Spark (http://sparkjava.com/)

Всякий раз, когда я создаю пакет через Maven, который затем загружается в папку webapps / в Tomcat 7.

(Настоящее имя было заменено на TestProject, чтобы не раскрывать ничего личного)

Если я скомпилирую проект и назову его TestProject.war, он будет загружен со следующей информацией:

Дорожка: / TestProject

Версия: Не указано

При открытии http: // локальный: 8080 / TestProject / Затем я получаю ожидаемый результат:

{"code": 400, "message": "В запросе не указана информация для авторизации"}

Если я затем переименую файл в TestProject ## 0.0.1-SNAPSHOT_20160308.161909.war и перезапущу Tomcat, приложение будет загружено со следующими данными:

Дорожка: / TestProject

Версия: 0.0.1-SNAPSHOT_20160308.161909

К сожалению, при открытии того же URL-адреса Tomcat возвращает 404:

Статус HTTP 404 - /

тип Отчет о состоянии дел

сообщение /

описание Запрошенный ресурс недоступен. Apache

Tomcat / 7.0.67

$ cat web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>RESTFul Web Service</display-name>    

    <filter>
        <filter-name>SparkFilter</filter-name>
        <filter-class>spark.servlet.SparkFilter</filter-class>
        <init-param>
            <param-name>applicationClass</param-name>
            <param-value>TestProjectService</param-value>
        </init-param>
    </filter>

    <filter>
        <filter-name>CorsFilter</filter-name>
        <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
        <init-param>
            <param-name>cors.allowed.origins</param-name>
            <param-value>*</param-value>
        </init-param>
        <init-param>
            <param-name>cors.allowed.methods</param-name>
            <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
        </init-param>
        <init-param>
            <param-name>cors.allowed.headers</param-name>
            <param-value>Content-Type,X-Requested-With,accept,authorization,scope,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>
        </init-param>
        <init-param>
            <param-name>cors.exposed.headers</param-name>
            <param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
        </init-param>
        <init-param>
            <param-name>cors.support.credentials</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>cors.preflight.maxage</param-name>
            <param-value>10</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>CorsFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>SparkFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

$ cat context.xml

<?xml version="1.0" encoding="UTF-8"?>
<Context antiResourceLocking="true" path="/TestProject"/>

Я просто не знаю, в чем проблема ... Единственное отличие - это название .war

Системная информация:

OS: Windows 10 x64
Java: java version "1.8.0_73"
Java(TM) SE Runtime Environment (build 1.8.0_73-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.73-b02, mixed mode)

C:\OtherPrograms\apache-tomcat-7.0.67>bin\startup.bat
Using CATALINA_BASE:   "C:\OtherPrograms\apache-tomcat-7.0.67"
Using CATALINA_HOME:   "C:\OtherPrograms\apache-tomcat-7.0.67"
Using CATALINA_TMPDIR: "C:\OtherPrograms\apache-tomcat-7.0.67\temp"
Using JRE_HOME:        "C:\Program Files\Java\jdk1.8.0_73"
Using CLASSPATH:       "C:\OtherPrograms\apache-tomcat-7.0.67\bin\bootstrap.jar;C:\OtherPrograms\apache-tomcat-7.0.67\bin\tomcat-juli.jar"