春天启动的Web应用程序不能在Tomcat运行9

DS。

我的web应用程序适用于Eclipse的光子STS,JAVA 8和Spring启动2.02与内嵌的tomcat使用端点罚款:

http://localhost:8081/DataViewer/tspsPatentSearch

但是,当我编译代码为DataViewer.war文件(使用MVN包),并在Linux上的Tomcat 9端点运行它:

http://myserver.com:8081/DataViewer/tspsPatentSearch

我得到的臭名昭著的:

Whitelabel Error Page
There was an unexpected error (type=Not Found, status=404).
/DataViewer/tspsPatentSearch

我的pom.xml文件是:

`<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.clarivate</groupId>
<artifactId>dataviewer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>

<name>dataviewer</name>

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

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <start-class>com.clarivate.dataviewer.DvMain</start-class>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
    </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>

    <!-- DS may need to remove for tomcat installation -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-slf4j-impl</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

   <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>

    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.1.0</version>
    </dependency>


    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>test</scope>
    </dependency>

</dependencies>

   <!-- Required to find ojdbc6, because Oracle don't make it available to maven-->
    <repositories>
        <repository>
          <id>codelds</id>
          <url>https://code.lds.org/nexus/content/groups/main-repo</url>
        </repository>
      </repositories>

<build>
    <finalName>DataViewer</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId> 
            <configuration>
                <mainClass>com.clarivate.dataviewer.DvMain</mainClass>
            </configuration>    
        </plugin>
    </plugins>
</build>


<description>TSPS data viewer</description>

在application.properties我有:

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
server.servlet.path=/DataViewer 

我的主类是:

package com.clarivate.dataviewer;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication

public class DvMain extends SpringBootServletInitializer {

    static Logger logger = LogManager.getRootLogger();

    public static void main(String[] args) {
        logger.debug("DS1A in main()");
        SpringApplication.run(DvMain.class, args);
        logger.info("DS1C finished.");
    }


    //@Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(DvMain.class);
     }  
}

我MainController.java有:

@GetMapping("/tspsPatentSearch")
public String tspsPatentSearch(Model model) {
     model.addAttribute("tspsPatent", new TspsPatent());

     return "tspsPatentSearch";                 
}

战争文件解压缩罚款,没有错误。在catalina.out中,我们有:

2018-10-04 12:09:09.954  INFO 12950 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/tspsPatentSearch],methods=[POST]}" onto public java.lang.String com.clarivate.dataviewer.controller.MainController.tspsPatentSearch(com.clarivate.dataviewer.model.TspsPatent,org.springframework.ui.Model,org.springframework.validation.BindingResult)

并没有错误。我已经试过也就是我的包结构是正确的,也就是我的JSP的是在正确的位置(data_viewer的\ src \主\ web应用\ WEB-INF \ JSP),现在我短的思路运行。任何帮助非常赞赏

编辑:如果我复制到tspsPatentSearch.jsp战争文件顶级目录则tomcat会发现它。所以看起来Tomcat是忽略:

spring.mvc.view.prefix=/WEB-INF/jsp/

或者没有找到根本application.properties。

乔恩·桑普森:

添加到您的application.properties

server.servlet.contextPath=/

我已经采取了示例代码,并假设你注释你MainController仅仅作为@Controller,把部署在一起。我改了几个周围的事物,但我相信这是做到了位。我一直没能找到任何引用解释为什么它可能被Tomcat必需的,但我打算继续寻找。我会更新你,如果我发现任何东西。

编辑:

我注意到一些重复的记录在Spring 2.0.2与此相关的问题:https://github.com/spring-projects/spring-boot/issues/13470

问题出现在固定2.0.4所以我升级。

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

此外,我删除了server.servlet.contextPath=/条目,田田我仍然可以到达的Hello World JSP我成立。如果升级可能适合你,也许你可以尝试添加一些之前application.properties可能被认为是重复的功能。至少我可以答应你一个更好的记录体验。

编辑#2:

没有确凿的证据,到目前为止,但这些(来自2.0.4)可能是相关的:

提供一致的方法来发现主要的DispatcherServlet的路径

使用自定义的servlet名调度员的servlet不被映射端点发现

没有可能看着2.0.3表面扫描。我要去给它一个休息现在给你一个机会去尝试一些东西。祝好运!

编辑#3:

我很抱歉地继续提示您切换周围环境的东西,但一个区别我什么,我测试,你正在使用的是,你似乎可以用Tomcat的9.0.0.M20那里,因为我是用测试之间注意到9.0 0.12

无论你是想升级与否,几件事情要注意和/或做:

1)你现在已经得到了什么,如果它是比以前不同的更新你的问题。包括server.servlet.contextPath=/在你的application.properties只是让别人看可以看到你做了什么。

2)你有排除spring-boot-starter-tomcatspring-boot-starter-web似乎并没有做任何事情-你可以通过输出运行验证比较mvn dependency:tree搬迁前后。

3)我不知道,你的spring-web依赖性是被需要,做为所下的带来了默认spring-boot-starter

4)现在到您的输出。春天开机快到了(注意标题)和你的类被发现并采取行动。

catalina.out.DEBUG 也是在你的DS.log开始〜08:35:38.162

2018-10-12 09:30:17.322 DEBUG 55745 --- [           main] o.s.c.a.ClassPathBeanDefinitionScanner   : Identified candidate component class: file [/data/apps/tomcat/apache-tomcat-9.0.0.M20/webapps/DataViewer/WEB-INF/classes/com/clarivate/dataviewer/controller/MainController.class]
2018-10-12 09:30:17.328 DEBUG 55745 --- [           main] o.s.c.a.ClassPathBeanDefinitionScanner   : Identified candidate component class: file [/data/apps/tomcat/apache-tomcat-9.0.0.M20/webapps/DataViewer/WEB-INF/classes/com/clarivate/dataviewer/database/ReadFromDb.class]
2018-10-12 09:30:17.356 DEBUG 55745 --- [           main] o.s.c.a.ClassPathBeanDefinitionScanner   : Identified candidate component class: file [/data/apps/tomcat/apache-tomcat-9.0.0.M20/webapps/DataViewer/WEB-INF/classes/com/clarivate/dataviewer/service/FileFuncs.class]
2018-10-12 09:30:17.357 DEBUG 55745 --- [           main] o.s.c.a.ClassPathBeanDefinitionScanner   : Identified candidate component class: file [/data/apps/tomcat/apache-tomcat-9.0.0.M20/webapps/DataViewer/WEB-INF/classes/com/clarivate/dataviewer/service/StringFuncs.class]
...
2018-10-12 09:30:19.417  INFO 55745 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/tspsPatentSearch],methods=[POST]}" onto public java.lang.String com.clarivate.dataviewer.controller.MainController.tspsPatentSearch(com.clarivate.dataviewer.model.TspsPatent,org.springframework.ui.Model,org.springframework.validation.BindingResult)
2018-10-12 09:30:19.417  INFO 55745 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/tspsPatentSearch],methods=[GET]}" onto public java.lang.String com.clarivate.dataviewer.controller.MainController.tspsPatentSearch(org.springframework.ui.Model)
...
2018-10-12 09:30:19.769  INFO 55745 --- [           main] com.clarivate.dataviewer.DvMain          : Started DvMain in 3.125 seconds (JVM running for 5.845)

我确实注意到映射到/error您在9时32分11秒的请求返回的。

我觉得这是奇怪的:

2018-10-12 09:32:11.758 DEBUG 55745 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet        : DispatcherServlet with name 'dispatcherServlet' processing GET request for [/DataViewer/DataViewer/error]

而且它的不同之处DS.log:

2018-10-12 08:36:56.136 DEBUG 6992 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet        : DispatcherServlet with name 'dispatcherServlet' processing GET request for [/DataViewer /error]

特别是/DataViewer/DataViewer/error-你试过请求的http://本地主机:8081 / DataViewer的/ DataViewer中/ tspsPatentSearch

一般而言,这看起来好像一切都来了,但还有是不允许的请求映射到处理器配置错误的地方。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

JAXB ClassNotFoundException的建筑春天启动应用程序2.2.0与Java 11

春天启动的请求:“重新运行带有‘调试’启用应用程序” - 我该怎么办?

的java.net.UnknownHostException dockerized的MySQL从春天启动应用程序

春天启动的应用程序不会产生脂肪(尤伯杯)的容器

为什么不是今年春天启动的Web应用程序所需的@Repository?

使用AWS Cognito的Java API认证/ autorization春天启动的Web应用程序

无法角项目,春天启动的Web应用程序连接

春天启动的桌面应用程序

如何部署自定义.properties文件到AWS ElasticBeanstalk一个春天启动应用程序?

jvmArguments不是可执行春天启动的应用程序解释

是否有可能开始嵌入我的春天启动的应用程序的轴突服务器?

为什么春天开机vaadin应用程序不能运行?

我怎样才能在与轮廓搬运工春天开始启动应用程序?

春天启动的单元测试运行整个程序

为什么春天启动2.0应用程序不运行schema.sql文件?

H2没有创造/在我的春天启动的应用程序更新表。什么是错的我的实体?

如何获得春天启动应用程序的jar父文件夹的路径动态?

如何启用春天启动应用程序承载认证?

春天启动的应用程序失败方法org.postgresql.jdbc4.Jdbc4Connection.createClob()尚未实现

杰克逊被忽略了我的春天启动的应用程序spring.jackson.properties

.Net核心应用程序不能在Linux上运行?

为什么我的Spring Boot Web应用程序不能在Gradle中完全运行?

为什么我的应用程序VSCode不能在CLI中正确运行?它是一个春季启动应用程序

启动孩子将Spring Boot Web应用程序部署到Tomcat 9时出错

应用程序只能在模拟器上运行,而不能在实际设备上运行

为什么断点不能在odata Web api应用程序上运行?

.NET Remoting可通过Web应用程序运行,但不能在WCF主机中运行

如何让 IntelliJ UE 和 Tomcat 9 运行我的 Web 应用程序?(苹果系统)

Java Web 应用程序无法在使用 Jersey 2.26 的 Tomcat 8.5 或 9 上启动