Tomcat, использующий военное имя в качестве базового URL для загрузки Spring

2

У меня есть приложение загрузки Spring с именем "springapp", которое имеет базовый URI:

 http://localhost:8080/

Когда я запускаю его как отдельное приложение, он работает нормально. Но когда я запускаю его как "run as → Run on Server" в Eclipse, он добавит название войны как springapp-1.0-snapshot, а базовый URL станет:

 http://localhost:8080/springapp-1.0-snapshot

Есть ли способ исправить это. Я хочу, чтобы URI был

 http://localhost:8080/springapp

Я пробовал все настройки ниже в моих приложениях.properties, но ни один из них не работал:

 spring.webservices.path=/springapp
 server.tomcat.basedir=/springapp
 spring.jersey.application-path=/springapp
 server.contextPath=/springapp
 server.servlet-path=/springapp

Это мой стартовый класс:

    @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
    @ImportResource("classpath:spring-config.xml")
    public class SpringAppStarter extends SpringBootServletInitializer {

        private static final Logger GENERAL_LOG = LogManager.getLogger(SpringAppStarter .class);

        @Override
        protected SpringApplicationBuilder configure(
                SpringApplicationBuilder application) {
            return application.sources(SpringAppStarter.class);
        }

        public static void main(String[] args) {
            // TODO Auto-generated method stub
            GENERAL_LOG.info("Starting Spring  Service App");

            SpringApplication.run(SpringAppStarter .class, args);
        }
    }

и мой класс сопоставления запросов:

 @RestController
 @RequestMapping("/Customers")
 public class SpringAppResource {
    @RequestMapping("/")
    public String index() {
        return "Greetings from Spring Boot!";
    }
 }

Я также добавил конфигурацию контекста в папку META-INF как:

 <Context>
     <context docBase="springapp" path="/springapp" reloadable="true"/>
 </Context>

Я использую Maven для создания проекта. И я не хочу менять имя службы. Мне нужно указать путь контекста в самом приложении. На сервере не может быть никакой зависимости. Я должен предоставить все конфигурации, поэтому после развертывания не нужно настраивать конфигурацию.

  • 1
    Tomcat по умолчанию использует ваше имя файла войны в качестве пути к контексту. Быстрый поиск дал мне это: stackoverflow.com/q/7276989/395202, который говорит вам, как использовать в качестве пути контекста вашего приложения, или tomcat.apache.org/tomcat-5.5-doc/config/context.html, как настроить контекст путь в Tomcat
  • 0
    Благодарю. В идеале это то, что мы делаем для обычных веб-сервисов. Я уже попробовал это, но это не будет работать с весенней загрузкой.
Показать ещё 3 комментария
Теги:
spring-boot
spring
tomcat

3 ответа

2

Вы также можете изменить имя приложения на сервере Tomcat следующим образом:

  1. Дважды щелкните экземпляр сервера в представлении "Серверы"
  2. Переключить вкладку "Обзор" на "Модули" (внизу экрана конфигурации)
  3. Выберите приложение в списке и нажмите "Изменить" справа.
  4. Установите "Путь" как "springapp" (или любое имя, которое вы хотите для URI)
  5. Нажмите "ОК" и сохраните изменения.

Теперь ваше приложение будет в URI: http://localhost:8080/springapp

  • 0
    Спасибо за решение. Но я должен предоставить все конфигурации в самом приложении.
  • 0
    Добро пожаловать. Я использую свой проект на корневом уровне "/" (без названия проекта), и с этим параметром я вполне могу управлять им.
1

Если вы используете eclipse, вы можете изменить корневой контекст, выбрав yourproject->properties->Web Project settings. затем измените корень контекста и перезапустите сервер.

  • 0
    Спасибо, это один подход. Но я использую Eclipse только для тестирования.
1

Вы должны иметь возможность переименовать такую войну

<build>
  <finalName>springapp</finalName>
 . . .
</build>
  • 0
    1. Вам не нужно переименовывать войну, чтобы изменить контекстный путь в tomcat. 2. Это часть Maven POM, и в вопросе OP нет намека на то, что он использует Maven для сборки
  • 0
    Спасибо:). Я использую Maven, но я не должен менять finalName.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню