Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 提供JSP内容时,Spring Boot将无限期挂起_Java_Spring_Spring Boot_Jsp - Fatal编程技术网

Java 提供JSP内容时,Spring Boot将无限期挂起

Java 提供JSP内容时,Spring Boot将无限期挂起,java,spring,spring-boot,jsp,Java,Spring,Spring Boot,Jsp,该应用程序以前在另一台机器上工作,因此代码应该都是有效的。我很难把它移植到另一台机器上。也就是说,问题是当服务JSP视图时,应用程序会无限期挂起 控制器如下所示: @RequestMapping(value = "", method = RequestMethod.GET) public String bookings(BookingFilterRequest bookingFilterRequest, PeriodRequest p

该应用程序以前在另一台机器上工作,因此代码应该都是有效的。我很难把它移植到另一台机器上。也就是说,问题是当服务JSP视图时,应用程序会无限期挂起

控制器如下所示:

@RequestMapping(value = "", method = RequestMethod.GET)
    public String bookings(BookingFilterRequest bookingFilterRequest,
                           PeriodRequest periodRequest,
                           Model model,
                           BindingResult bindingResult) {
        // Fetch data from database, do things
        return "booking/bookings"; // serve JSP view
    }
代码在返回“booking/bookings”行之前运行良好,这是它挂起的地方。JSP视图位于正确的文件夹中,否则会出现
notfound
错误

我尝试安装与前一台服务器相同的java和gradle版本,没有任何更改

版本信息(新服务器上默认安装的版本):

旧服务器有
Java10.0.2
Gradle5.0

我如何让它运行而不挂

更新:

如果我等大约10分钟,它就会神奇地开始工作。但是重新启动应用程序会使其再次挂起,直到您再次等待10分钟

更新2:

如果我将控制台打印行放在JSP文件中,那么它们不会被打印出来。也就是说,JSP不会被执行。

解决方案: 看起来像是Tomcat里的一只虫子。我终于能用Jetty让它工作了。步骤:

1) 使用Jetty而不是Tomcat。在build.gradle dependencies部分,注释掉
org.springframework.boot:springbootstarterweb
org.apache.tomcat.embed:tomcat embed jasper
行,并添加:

compile("org.springframework.boot:spring-boot-starter-web") {
   exclude module: "spring-boot-starter-tomcat"
}
compile("org.springframework.boot:spring-boot-starter-jetty")
compile("org.eclipse.jetty:apache-jsp")
compile "javax.servlet:jstl:1.2"
2) 构建war文件。Jar文件不适合我,因为我使用Jar时Jetty没有找到JSP文件。如果无法生成war文件,请确保在
build.gradle中有此文件:

plugins {
  id 'war'
}
它需要正好位于
buildscript
代码块之后

使用

gradle build war

它将出现在您的
build/libs/
目录中

3) 运行应用程序:

java-jar应用程序.war


额外的东西 这是我完整的
build.gradle
文件,如果它对任何人都有用的话。我知道那里有一些不必要的台词


buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:2.0.2.RELEASE")
    }
}

plugins {
   id 'war'
}
apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

sourceCompatibility = 1.8
targetCompatibility = 1.8
mainClassName = 'com.project.foo.bar.Application'


bootJar {
    baseName = 'bar'
    version =  '0.1.0'
}

repositories {
    mavenCentral()
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web") {
      exclude module: "spring-boot-starter-tomcat"
    }
    compile("org.springframework.boot:spring-boot-starter-jetty")    
    //compile("org.springframework.boot:spring-boot-starter-web")
    //compile("org.springframework.boot:spring-boot-starter-security")

    // persistence
    compile("org.springframework:spring-orm:4.0.3.RELEASE")
    compile("commons-dbcp:commons-dbcp:1.4")
    compile("org.hibernate:hibernate-core:4.3.11.Final")
    compile("org.hibernate:hibernate-entitymanager:4.3.11.Final")
    runtime('mysql:mysql-connector-java')

    // servlets
    compile("javax.servlet:javax.servlet-api:4.0.1")
    compile("javax.servlet.jsp:javax.servlet.jsp-api:2.3.1")
    // runtime("org.apache.tomcat.embed:tomcat-embed-jasper")
    compile("org.eclipse.jetty:apache-jsp")
    compile "javax.servlet:jstl:1.2"
}



buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:2.0.2.RELEASE")
    }
}

plugins {
   id 'war'
}
apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

sourceCompatibility = 1.8
targetCompatibility = 1.8
mainClassName = 'com.project.foo.bar.Application'


bootJar {
    baseName = 'bar'
    version =  '0.1.0'
}

repositories {
    mavenCentral()
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web") {
      exclude module: "spring-boot-starter-tomcat"
    }
    compile("org.springframework.boot:spring-boot-starter-jetty")    
    //compile("org.springframework.boot:spring-boot-starter-web")
    //compile("org.springframework.boot:spring-boot-starter-security")

    // persistence
    compile("org.springframework:spring-orm:4.0.3.RELEASE")
    compile("commons-dbcp:commons-dbcp:1.4")
    compile("org.hibernate:hibernate-core:4.3.11.Final")
    compile("org.hibernate:hibernate-entitymanager:4.3.11.Final")
    runtime('mysql:mysql-connector-java')

    // servlets
    compile("javax.servlet:javax.servlet-api:4.0.1")
    compile("javax.servlet.jsp:javax.servlet.jsp-api:2.3.1")
    // runtime("org.apache.tomcat.embed:tomcat-embed-jasper")
    compile("org.eclipse.jetty:apache-jsp")
    compile "javax.servlet:jstl:1.2"
}