Произошла ошибка при загрузке содержимого stati c в многомодульном проекте с Spring Boot - PullRequest
0 голосов
/ 11 марта 2020

У меня есть многомодульный проект с загрузкой Spring и внешним сервером Weblogi c. Это модули:

  • дао
  • сервис
  • веб

    пом. 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">
    <parent>
        <artifactId>gov-multiple-modules</artifactId>
        <groupId>gov</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>


    <groupId>com.dao</groupId>
    <artifactId>dao</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <properties>
        <output.directory.jdbc.oracle>${project.basedir}/src/main/resources</output.directory.jdbc.oracle>
    </properties>

    <dependencies>

        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc</artifactId>
            <version>6</version>
            <scope>system</scope>
            <systemPath>${output.directory.jdbc.oracle}/lib/ojdbc6.jar</systemPath>
        </dependency>

    </dependencies>

    <build>
        <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <argLine>-Dfile.encoding=UTF8</argLine>
                </configuration>
            </plugin>

        </plugins>
    </build>

</project>

  • пом. 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">
    <parent>
        <artifactId>gov-multiple-modules</artifactId>
        <groupId>gov</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.service</groupId>
    <artifactId>service</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>com.dao</groupId>
            <artifactId>dao</artifactId>
            <version>${version.dao.module}</version>
        </dependency>


        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct</artifactId>
            <version>${version.mapstruct}</version>
        </dependency>

    </dependencies>


    <build>
          <plugins>

              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-surefire-plugin</artifactId>
                  <configuration>
                      <argLine>-Dfile.encoding=UTF8</argLine>
                  </configuration>
              </plugin>

            <plugin> 
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${version.apache.maven.plugins}</version>
                <groupId>org.apache.maven.plugins</groupId>

                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.mapstruct</groupId>
                            <artifactId>mapstruct-processor</artifactId>
                            <version>${version.mapstruct}</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
        </plugins>
    </build>


</project>

  • pom. xml (web)

    Это работа с запросами от клиентов (Contoroller и RestControllers).

В приложении есть точка входа.

<?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">
    <parent>
        <artifactId>gov-multiple-modules</artifactId>
        <groupId>gov</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.web</groupId>
    <artifactId>web</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>com.service</groupId>
            <artifactId>service</artifactId>
            <version>${version.service.module}</version>
        </dependency>
    </dependencies>

    <build>
        <finalName>weblogic-war-gov</finalName>
        <plugins>

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <argLine>-Dfile.encoding=UTF8</argLine>
                </configuration>
            </plugin>


            <plugin> <!--It is for convert beans-->
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${version.apache.maven.plugins}</version>
                <groupId>org.apache.maven.plugins</groupId>

                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.mapstruct</groupId>
                            <artifactId>mapstruct-processor</artifactId>
                            <version>${version.mapstruct}</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>

        </plugins>
    </build>

</project>

  • пом. xml (parrent)
<?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
         https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <modules>
        <module>dao</module>
        <module>service</module>
        <module>web</module>
    </modules>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>gov</groupId>
    <artifactId>gov-multiple-modules</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>gov-multiple-modules</name>
    <description>project with Spring Boot for multiple module applications</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <version.apache.maven.plugins>3.8.1</version.apache.maven.plugins>
        <version.mapstruct>1.3.0.Final</version.mapstruct>

        <version.apache.common.lang3>3.9</version.apache.common.lang3>
        <version.apache.commons.text>1.8</version.apache.commons.text>
        <version.apache.commons.beanutils>1.9.4</version.apache.commons.beanutils>
        <version.hibernate.validator>6.0.17.Final</version.hibernate.validator>
        <version.reflection>0.9.11</version.reflection>
        <version.dao.module>0.0.1-SNAPSHOT</version.dao.module>
        <version.service.module>0.0.1-SNAPSHOT</version.service.module>

    </properties>

    <dependencies>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!--This artifact need for testing that to find classes into classpath-->
        <dependency>
            <groupId>org.reflections</groupId>
            <artifactId>reflections</artifactId>
            <version>${version.reflection}</version>
            <scope>test</scope>
        </dependency>


        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>${version.apache.common.lang3}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-text</artifactId>
            <version>${version.apache.commons.text}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
            <version>${version.apache.commons.beanutils}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

    </dependencies>

</project>

точка входа

@SpringBootConfiguration
@SpringBootApplication
@EnableJpaRepositories(basePackages = {"com.dao", "com.service"})
@EntityScan(basePackages = {"com.dao"})
@ComponentScan(basePackages = {"com.service", "com.dao", "com.web"})
public class WebSpringBootJarApplication
        extends SpringBootServletInitializer
        implements WebApplicationInitializer {

    private static final Logger LOGGER  = LoggerFactory.getLogger( WebSpringBootJarApplication.class );

    public static void main(String[] args) {
        SpringApplication.run(WebSpringBootJarApplication.class, args);
        LOGGER.info("Start an application...");
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        LOGGER.info("There is building the web application!");
        return builder.sources(WebSpringBootJarApplication.class);
    }
}
  • src / main / webapp / WEB-INF / weblogi c. xml
<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app
        xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        https://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd
        http://xmlns.oracle.com/weblogic/weblogic-web-app
        https://xmlns.oracle.com/weblogic/weblogic-web-app/1.9/weblogic-web-app.xsd">

    <wls:context-root>sun</wls:context-root>
</wls:weblogic-web-app>

После запуска я должен увидеть страницу приветствия.

  • com.web.controller.index.IndexController
@Controller
public class IndexController {

    @RequestMapping(value="/", method= RequestMethod.GET)
    public String index() {
        return "index";
    }
}

  • src / main / resources / templates / index. html

Но я получаю сообщение об ошибке.

http://localhost: 7001 / sun /

  • в браузере

Ошибка 500 - Внутренняя ошибка сервера java .lang.NullPointerException at weblogi c .servlet.internal.ServletResponseImpl.sendContentError (ServletResponseImpl. java : 738) в weblogi c .servlet.internal.ServletResponseImpl.sendError (ServletResponseImpl. java: 796) в weblogi c .servlet.internal.ServletResponseImpl.sendError (ServletResponse. springframework.boot.web. . ) в org.springframework.web.servlet.DispatcherServlet.processDispatchResult (DispatcherServlet. java: 1118)

  • в консоли IDE

- "[2020-03-11 08: 53: 30,118] Сеть артефактов: война взорвана: Артефакт успешно развернут [2020-03-11 08: 53: 30,119] Сеть артефактов: война в разобранном виде: развертывание заняло 14 724 миллисекунды - 11-03-2020 08: 53: 30.612 - INFO 17568 osweb.servlet.DispatcherServlet: Инициализация сервлета dispatcherServlet - - - 11-03-2020 08: 53: 30.613 -DEBUG 17568 osweb .servlet.DispatcherServlet: обнаружен StandardServletMultipartResolver - "- 11-03-2020 08: 53: 30.621 -DEBUG 17568 osweb.servlet.DispatcherServlet: enableLoggingRequestDetails = 'false': параметры запроса и заголовки будут маскироваться для предотвращения небезопасной регистрации потенциально чувствительных data - "- 11-03-2020 08: 53: 30.621 - INFO 17568 osweb.servlet. DispatcherServlet: завершена инициализация за 8 мс -" - 11-03-2020 08: 53: 30.624 -DEBUG 17568 osweb.servlet. DispatcherServlet: GET "/ sun /", параметры = {} - "- 11-03-2020 08: 53: 30.628 -DEBUG 17568 swsmmaRequestMappingHandlerMapping: сопоставлен с com.web.controller.index.IndexController # index () -" - -11-03-2020 08: 53: 30.647 -DEBUG 17568 oswsvContentNegotiatingViewResolver: выбрано 'text / html', задано [text / html, изображение / gif, изображение / jpeg, / ; q = .2] - "--11-03-2020 08: 53: 30.647 -DEBUG 17568 osweb.servlet.view.JstlView: Имя представления 'index', модель {} -" - 11-03-2020 08: 53: 30.652 -DEBUG 17568 osweb.servlet.view.JstlView: Пересылка в [index] - "- 11-03-2020 08: 53: 30.653 -DEBUG 17568 osweb.servlet.DispatcherServlet: отправка" FORWARD "для GET" / sun / index ", параметры = {} - "- 11-03-2020 08: 53: 30.656 -deBUG 17568 oswshandler.SimpleUrlHandlerMapping: сопоставлен с ResourceHttpRequestHandler ["classpath: / META-INF / resources /", "classpath: / resources /", "classpath: / static /", "classpath: / public /", "/"] - "- 11-03- 2020 08: 53: 30.657 -DEBUG 17568 oswsrResourceHttpRequestHandler: ресурс не найден - "- 11-03-2020 08: 53: 30.657 -DEBUG 17568 osweb.servlet.DispatcherServlet: выход из отправки" FORWARD ", статус 404 -" - 11-03-2020 08: 53: 30.664 -DEBUG 17568 osweb.servlet.DispatcherServlet: Ошибка при отображении представления [org.springframework.web.servlet.view.JstlView: имя 'index'; URL [индекс]] - java. lang.NullPointerException: ноль в weblogi c .servlet.internal.ServletResponseImpl.sendContentError (ServletResponseImpl. java: 738) ~ [com. oracle .weblogi c .servlet.jar: 12.2gi.4] в c .servlet.internal.ServletResponseImpl.sendError (ServletResponseImpl. java: 796) ~ [com. oracle .weblogi c .servlet.jar: 12.2.1.4] at weblogi c .servlet.internal .ServletResponseImpl.sendError (ServletResponseImpl. java: 713) ~ [com. oracle .weblogi c .servlet.jar: 12.2.1. 4] at org.springframework.boot.web.servlet.support.ErrorPageFilter $ ErrorWrapperResponse.sendErrorIfNeeded (ErrorPageFilter. java: 349) ~ [spring-boot-2.2.5.RELEASE.jar: 2.2.5.RELEASE] в org.springframework.boot.web.servlet.support.ErrorPageFilter $ ErrorWrapperResponse.flushBuffer (ErrorPageFilter. java: 343) ~ [spring-boot-2.2.5.RELEASE.jar: 2.2.5.RELEASE] на веб-сайтах c .servlet.internal.RequestDispatcherImpl.forward (RequestDispatcherImpl. java: 336) ~ [com. oracle .weblogi c .servlet.jar: 12.2.1.4] at org.springframework.web.servlet.view. InternalResourceView.renderMergedOutputModel (InternalResourceView. java: 171) ~ [spring-web mvc -5.2.4.RELEASE.jar: 5.2.4.RELEASE] at org.springframework.web.servlet.view.AbstractView.render ( AbstractView. java: 316) ~ [spring-web mvc -5.2.4.RELEASE.jar: 5.2.4.RELEASE] в org.springframework.web.servlet.DispatcherServlet.render (DispatcherServlet. java): 1373) [spring-web mvc -5.2.4.RELEASE.jar: 5.2.4.RELEASE] по адресу org.springframework.web.servlet.DispatcherSer vlet.processDispatchResult (DispatcherServlet. java: 1118) [spring-web mvc -5.2.4.RELEASE.jar: 5.2.4.RELEASE] в org.springframework.web.servlet.DispatcherServlet.doDispatch (DispatcherServ. 1143 *: 1057) [spring-web mvc -5.2.4.RELEASE.jar: 5.2.4.RELEASE] в org.springframework.web.servlet.DispatcherServlet.doService (DispatcherServlet. java: 943) [spring -web mvc -5.2.4.RELEASE.jar: 5.2.4.RELEASE] at org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet. java: 1006) [spring-web mvc -5.2 .4.RELEASE.jar: 5.2.4.RELEASE] at org.springframework.web.servlet.FrameworkServlet.doGet (FrameworkServlet. java: 898) [spring-web mvc -5.2.4.RELEASE.jar: 5.2.4.RELEASE] на javax.servlet.http.HttpServlet.service (HttpServlet. java: 687) [javax.servlet.javax.servlet-api.jar: 3.1.0] на org.springframework.web.servlet .FrameworkServlet.service (FrameworkServlet. java: 883) [spring-web mvc -5.2.4.RELEASE.jar: 5.2.4.RELEASE] ...

"java .lang.NullPointerException: ноль в weblogi c .servlet.internal.ServletResponseImpl.sendContentError (ServletResponseImpl. java: 738) в weblogi c .servlet.internal.ServletResponseImpl.sendError (* сервлеты * 1159). .internal.ServletResponseImpl.sendError (ServletResponseImpl. java: 713) в org.springframework.boot.web.servlet.support.ErrorPageFilter $ ErrorWrapperResponse.sendErrorIfNework.pr. .servlet.support.ErrorPageFilter $ ErrorWrapperResponse.flushBuffer (ErrorPageFilter. java: 343) в сети Посмотреть. InternalResourceView.renderMergedOutputModel (InternalResourceView. java: 171) ...

- 11-03-2020 08: 53: 30.666 -DEBUG 17568 osweb.servlet.DispatcherServlet: Не удалось выполнить запрос: java .lang.NullPointerException - "- 11-03-2020 08: 53: 30.667 -ERROR 17568 osbwservlet.support.ErrorPageFilter: перенаправление на страницу ошибки из запроса [/] из-за исключения [null]

Это работало, тогда приложение не было многомодульным проектом.

Есть идеи, что это за ошибки? Пожалуйста.

1 Ответ

0 голосов
/ 11 марта 2020

Решение

Мне нужно было добавить зависимость - тимьяновый лист. Stati c conten не работает без.

Это нужно добавить в веб-модуль pom.

 <groupId>com.web</groupId>
    <artifactId>web</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <dependencies>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
...