Приложение Spring boot работает при запуске в IDE, но при развертывании в виде файла war запрос завершается с ошибкой 500 - PullRequest
2 голосов
/ 10 июля 2019

Хорошо, я чувствую себя немного глупо, потому что я не могу понять это, вот так.

Я скачал самое простое веб-приложение весенней загрузки Hello World из Spring Initializer.Я могу заставить его работать нормально, используя внутренний кот.НО, когда я упаковываю в файл .war и внедряю в мой локальный экземпляр tomcat, который имитирует производственную среду.Приложение не работает.Я пробовал вносить изменения в конфигурацию, систематически просматривая документацию, чтобы убедиться в правильности контекста и в основном всего, что я могу найти, чтобы решить эту проблему.Пока что нет кубиков, поэтому я обращаюсь, чтобы узнать, есть ли у кого-нибудь понимание.

Приложение должно вернуть "TEST CLARIOVISTA" с URL-адреса http://localhost:8084/clariovista/

Когда я закончумоей IDE (Eclipse) нет проблем.Но когда я развертываю .war в своем локальном экземпляре tomcat, он выдает ошибку 500 с сообщением:

Ошибка обработки сообщения;вложенным исключением является org.thymeleaf.exceptions.TemplateInputException: ошибка при разрешении шаблона [ошибка], шаблон может не существовать или может быть недоступен для любого из настроенных преобразователей шаблонов

Дерево каталогов настроено правильно,Я не изменил какую-либо структуру каталогов по сравнению с тем, что было предоставлено выводом Spring Initializer.Поэтому я не уверен, почему существует проблема с расположением шаблона.Если это не красная сельдь и не происходит что-то еще.

Любая помощь или понимание очень ценится.

Основы: SpringBoot 2.1.6. Выпуск, JDK 1.8, Tomcat 8.5.27.

Дерево каталогов рис.

Directory tree pic.

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.6.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.inferworks</groupId>
<artifactId>clariovista</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>clariovista</name>
<description>Clario Vista Web</description>
<organization>
    <name>Inferworks</name>
    <url>Inferworks.com</url>
</organization>

<properties>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>

    <finalName>${artifactId}</finalName>

    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
        </plugin>
    </plugins>
</build>

приложение.yml

server:
  port: 8084

Ответы [ 3 ]

0 голосов
/ 10 июля 2019

легко использовать файл jar, команда: maven install

<plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <mainClass>com.dh.Application</mainClass>
                <jvmArguments>-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
                </jvmArguments>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
0 голосов
/ 10 июля 2019

В соответствии с описанием вашего вопроса, я надеюсь, что не требуется тимелист.

2 способа продолжения.

  1. если действительно не требуется, удалите папку с тимилифовыми шаблонами и Зависимость от тимьяна от pom.xml и продолжить.
  2. Вы хотите продолжить работу с тимелием, пожалуйста, добавьте класс ниже и перейдите к развертыванию и дай попробовать.

    @Configuration
    public class ThymeleafConfiguration {
    
        private static final String HTML_5 = "HTML5";
    
        @Bean
        public SpringTemplateEngine templateEngine() {
            final SpringTemplateEngine templateEngine = new SpringTemplateEngine();
            templateEngine.addTemplateResolver(templateResolver());
            return templateEngine;
        }
    
        @Bean
        public ThymeleafViewResolver viewResolver(){
            final ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
            viewResolver.setTemplateEngine(templateEngine());
            viewResolver.setViewNames(new String[]{"*.html,*.xhtml,*.txt"});
            return viewResolver;
        }
    
        @Bean
        public SpringResourceTemplateResolver templateResolver() {
            // SpringResourceTemplateResolver automatically integrates with Spring's
            // own resource resolution infrastructure, which is highly recommended.
            final SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
            // templateResolver.setApplicationContext(this.applicationContext);
            templateResolver.setPrefix("classpath:templates/");
            templateResolver.setSuffix(".html");
            // HTML is the default value, added here for the sake of clarity.
            templateResolver.setTemplateMode(HTML_5);
            templateResolver.setCharacterEncoding(CharEncoding.UTF_8);
            // Template cache is true by default. Set to false if you want
            // templates to be automatically updated when modified.
            templateResolver.setCacheable(true);
            return templateResolver;
        }
    
    }
    
0 голосов
/ 10 июля 2019

Поскольку spring-boot-starter-web включает Tomcat, включая по умолчанию * 1002. *
Если вы хотите запустить свое приложение в другом веб-контейнере, вам следует исключить Tomcat для Spring MVC следующим образом:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <!-- Exclude the Tomcat dependency -->
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...