Невозможно перейти к весенней загрузке приложения с помощью встроенного Tomcat. - PullRequest
0 голосов
/ 08 октября 2018

Я работаю над довольно большим проектом MVC, который раньше работал (идеально) только с пружинным MVC, а не с пружинной загрузкой.Я закончил преобразование его в весеннюю загрузку, и он отлично работает в Netbeans и при запуске в качестве автономного JAR вне Netbeans на моей машине разработки.

Я перенес файл JAR на сервер назначения, и все запускается нормально в соответствии с консолью, я получаю это сообщение: Tomcat started on the port(s): 8081 (HTTP) with context path '/MDHIS'.Однако я не могу просмотреть его, как на своем компьютере со следующим URL: http://localhost:8081/MDHIS/.

Я установил tomcat в режим отладки, и он записывает некоторые интересные вещи:

[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.269] o.a.j.s.JspServlet                       
: JspEngine --> /WEB-INF/views/login.jsp
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.270] o.a.j.s.JspServlet                       
:        ServletPath: /WEB-INF/views/login.jsp
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.270] o.a.j.s.JspServlet                       
:           PathInfo: null
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.272] o.a.j.s.JspServlet                       
:           RealPath: C:\Users\Administrator\AppData\Local\Temp\tomcat- 
docbase.4901819852507265388.8080\WEB-INF\views\login.jsp
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.273] o.a.j.s.JspServlet                       
:         RequestURI: /MDHIS/WEB-INF/views/login.jsp
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.274] o.a.j.s.JspServlet                       
:        QueryString: null
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.275] o.a.c.c.C.[.[.[.[jsp]                    
:  Disabling the response for further output
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.277] o.a.c.c.C.[.[localhost]                  
: Processing ErrorPage[errorCode=0, location=/error]
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.315] o.a.j.s.JspServlet                       
: JspEngine --> /WEB-INF/views/error.jsp
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.315] o.a.j.s.JspServlet                       
:        ServletPath: /WEB-INF/views/error.jsp
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.316] o.a.j.s.JspServlet                       
:           PathInfo: null
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.317] o.a.j.s.JspServlet                       
:           RealPath: C:\Users\Administrator\AppData\Local\Temp\tomcat- 
docbase.4901819852507265388.8080\WEB-INF\views\error.jsp
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.318] o.a.j.s.JspServlet                       
:         RequestURI: /MDHIS/WEB-INF/views/error.jsp
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.319] o.a.j.s.JspServlet                       
:        QueryString: null
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.319] o.a.c.c.C.[.[.[.[jsp]                    
:  Disabling the response for further output
[WEBCLIENT] [DEBUG] [2018-10-15 14:44:26.320] o.a.c.c.C.[.[.[. 
[dispatcherServlet]      :  Disabling the response for further output

Я наблюдал за папкой docbase, и в нее никогда не добавлялись JSP или классы.У меня смешанные результаты этой работы или нет в разных средах / ОС / сетях.Кто-нибудь когда-либо видел такое поведение?

****** РЕДАКТИРОВАТЬ ******

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>
<groupId>com.mdenis</groupId>
<artifactId>MDHIS_Common</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.5.RELEASE</version>
</parent>

<dependencies>

    <!--JAVA-->
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
    </dependency>

    <!--SPRING-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
    <exclusion>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-logging</artifactId>
    </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>

    <!--MICROSOFT-->
    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>mssql-jdbc</artifactId>
    </dependency>

    <!--HIBERNATE-->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
    </dependency>

    <!--HAPI-->
    <dependency>
        <groupId>ca.uhn.hapi</groupId>
        <artifactId>hapi-base</artifactId>
        <version>2.3</version>
    </dependency>
    <dependency>
        <groupId>ca.uhn.hapi</groupId>
        <artifactId>hapi-structures-v26</artifactId>
        <version>2.3</version>
    </dependency>
    <dependency>
        <groupId>ca.uhn.hapi</groupId>
        <artifactId>hapi-structures-v25</artifactId>
        <version>2.3</version>
    </dependency>
    <dependency>
        <groupId>ca.uhn.hapi</groupId>
        <artifactId>hapi-structures-v24</artifactId>
        <version>2.3</version>
    </dependency>
    <dependency>
        <groupId>ca.uhn.hapi</groupId>
        <artifactId>hapi-structures-v231</artifactId>
        <version>2.3</version>
    </dependency>
    <dependency>
        <groupId>ca.uhn.hapi</groupId>
        <artifactId>hapi-structures-v23</artifactId>
        <version>2.3</version>
    </dependency>
    <dependency>
        <groupId>ca.uhn.hapi</groupId>
        <artifactId>hapi-structures-v22</artifactId>
        <version>2.3</version>
    </dependency>
    <dependency>
        <groupId>ca.uhn.hapi</groupId>
        <artifactId>hapi-structures-v21</artifactId>
        <version>2.3</version>
    </dependency>

</dependencies>

<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <finalName>MDHIS_Common</finalName>
                <appendAssemblyId>false</appendAssemblyId>
            </configuration>
        </plugin>
    </plugins>
</build>
</project>

Веб-клиент:

<?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>

<groupId>com.mdenis</groupId>
<artifactId>MDHIS_WebClient</artifactId>
<version>1.0-SNAPSHOT</version>
<!--<packaging>war</packaging>-->

<name>MDHIS_WebClient</name>

<properties>
    <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.5.RELEASE</version>
</parent>

<dependencies>

    <!--JAVA-->
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>8.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.json.bind</groupId>
        <artifactId>javax.json.bind-api</artifactId>
    </dependency> 
    <dependency>
        <groupId>javax.el</groupId>
        <artifactId>javax.el-api</artifactId>
        <version>3.0.0</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>

    <!--GLASSFISH-->
    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.el</artifactId>
    </dependency>
    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.json</artifactId>
        <version>1.1.3</version>
    </dependency>

    <!--TOMCAT-->
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
    </dependency>

    <!--JASPER REPORTS-->
    <dependency>
        <groupId>net.sf.jasperreports</groupId>
        <artifactId>jasperreports</artifactId>
        <version>6.7.0</version>
    </dependency>

    <!--SIGAR-->
    <dependency>
        <groupId>org.fusesource</groupId>
        <artifactId>sigar</artifactId>
        <version>1.6.4</version>
    </dependency>

    <!--LOG4J2-->
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-1.2-api</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-jcl</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-jul</artifactId>
    </dependency>

    <!--YASSON-->
    <dependency>
        <groupId>org.eclipse</groupId>
        <artifactId>yasson</artifactId>
        <version>1.1.0-SNAPSHOT</version>
    </dependency>

    <!--MDHIS_COMMON-->
    <dependency>
        <groupId>com.mdenis</groupId>
        <artifactId>MDHIS_Common</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>

</dependencies>

<repositories>

    <repository>
        <id>java.net-Public</id>
        <name>Maven Java Net Snapshots and Releases</name>
        <url>https://maven.java.net/content/groups/public/</url>
    </repository>
    <repository>
        <id>yasson-snapshots</id>
        <name>Yasson Snapshots repository</name>
        <url>https://repo.eclipse.org/content/repositories/yasson-snapshots</url>
    </repository>

</repositories>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

</project>

ЗАКЛЮЧЕНИЕ

Спасибо всем, кто помог!Несмотря на то, что он работал нормально на некоторых системах, когда он был упакован как файл JAR, его исправило изменение в файле WAR.К сожалению, я больше не могу запускать проект в Netbeans, потому что он не может распознать, что сервер Tomcat встроен в себя, но все отлично работает при использовании java -jar в 2 системах (Windows Server 2016 и Ubuntu LTS 18.04), которые ранее не работали.

Спасибо

Ответы [ 3 ]

0 голосов
/ 16 октября 2018

Это не столько ответ, сколько путь, который должен привести к возможному успеху.Я бы начал с примера проекта Spring Boot Embedded Tomcat. Зона разработки есть здесь. Другой пример здесь. Хотя они слишком длинны, чтобы включать их здесь, любой другой рабочий образец тоже подойдет.

Запустите приложение, работающее в вашей среде, которое в настоящее время не работает.

Затем добавьте свои особенности.Если вы можете сделать это отдельными «кусками», это было бы еще лучше, так как вы можете увидеть, какая часть, которую вы добавляете, ломает вещи.

Наконец, я повторяю первую мысль Рэнди в его ответе - это, вероятно, проблема пути к классам.

0 голосов
/ 17 октября 2018

Столкнувшись с такой проблемой, я хотел бы выяснить, какие могут быть экологические различия между локальной машиной (где приложение работает нормально) и сервером (где то же приложение создает проблему).Первые несколько вещей, которые я бы проверил:

  1. Проверьте, компилируются ли JSP в рабочий каталог Tomcat.
  2. Проверьте переменную JAVA_HOME, выбранную Tomcat.
  3. Проверьте, действительно ли на компьютере установлен JDK (а не только JRE).
  4. Проверьте, поддерживается ли версия Java, настроенная для Tomcat, используемой версией Spring Boot.
  5. Проверьтезависимости в эффективном pom с областью действия «предоставлено», «время выполнения» или «система».

Но, прежде всего, просим обратиться к этим ограничениям JSP при использовании Spring Boot иобратите внимание, что вам нужно использовать упаковку war - JSP не поддерживаются при использовании исполняемого файла jar .Эта исполняемая война будет работать при запуске с java -jar, а также будет развернута в любом стандартном контейнере.

Чтобы создать военную упаковку, включите <packaging>war</packaging> в pom, где объявлен ID артефакта.

Вы можете найти этот образец JSP для Spring Boot полезным.Этот другой образец также может быть полезным.

Надеюсь, что приведенные выше данные приведут к решению.

0 голосов
/ 16 октября 2018

Описанные симптомы звучат так, как будто classLoader не инициализирует класс приложения SpringBoot.SpringBoot сначала запускает Tomcat с предоставленными конфигами (и это обычно работает всегда), а затем пытается запустить само приложение SpringBoot.Если происходит сбой classLoader, далее «сайт не загружается».

Две вещи, которые вы можете проверить:

1) Используете ли вы ClassLoader.getSystemClassLoader()?Не потому, что он не поддерживает структуру SpringBoot (вложенные банки).

2) Используете ли вы java.util.Logging где-нибудь в вашем приложении?Не потому, что он использует ClassLoader.getSystemClassLoader()

Подробнее об этом можно прочитать здесь: https://docs.spring.io/spring-boot/docs/2.0.5.RELEASE/reference/htmlsingle/#executable-jar-restrictions

Полагаю, существует третий;

3) проверка совместимости версийзависимостей (поскольку это MVC для загрузки) https://docs.spring.io/spring-boot/docs/2.0.5.RELEASE/reference/htmlsingle/#appendix-dependency-versions

Удачи.

...