Java 提供JSP内容时,Spring Boot将无限期挂起
该应用程序以前在另一台机器上工作,因此代码应该都是有效的。我很难把它移植到另一台机器上。也就是说,问题是当服务JSP视图时,应用程序会无限期挂起 控制器如下所示: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
@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"
}