我对 AWS 和 tomcat、jenkins 和 spring boot 比较陌生。我无法在我的服务器中显示已部署的网站。当我测试 url 时会说“localhost:8181/#/dashboard”,我知道当我在 tomcat 中部署项目时,url 必须是项目的名称。所以对于这个项目,它应该是“someurl/HousingManagementSystem/”,但它返回 404。在我的 tomcat 管理器 html 中,它显示项目正在运行。
这是jenkins在完成构建项目时所说的(仅部署部分)
18:51:38 Deploying /home/ec2=user/.jenkins/workspace/HousingManagementSystem/target/HousingManagementSystem-0.0.1-SNAPSHOT.war to container Tomcat 8.x Remote with context /HousingManagementSystem
18:51:38 Redeploying [/home/ec2-user/.jenkins/workspace/HousingManagementSystem/target/HousingManagementSystem-0.0.1-SNAPSHOT.war]
18:51:38 Undeploying [/home/ec2-user/.jenkins/workspace/HousingManagementSystem/target/HousingManagementSystem-0.0.1-SNAPSHOT.war]
18:51:39 Deploying [/home/ec2-user/.jenkins/workspace/HousingManagementSystem/target/HousingManagementSystem-0.0.1-SNAPSHOT.war]
18:51:43 Finished: SUCCESS
现在,这表明它正在部署,这里还有 catalina 日志:
31-Aug-2017 18:54:50.810 INFO [Executor #0 for master : executing
HousingManagementSystem #18] jenkins.plugins.slack.SlackNotifier.prebuild
Invoking Started...
31-Aug-2017 18:54:51.078 INFO [Executor #0 for master : executing
HousingManagementSystem #18]
jenkins.plugins.slack.StandardSlackService.publish Posting succeeded
31-Aug-2017 18:55:50.135 WARNING [Computer.threadPoolForRemoting [#6] for
Channel to Maven [/usr/java/latest/bin/java, -cp, /home/ec2-
user/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven35-agent-
1.11.jar:/usr/apache/apache-maven-3.5.0/boot/plexus-classworlds-
2.5.2.jar:/usr/apache/apache-maven-3.5.0/conf/logging,
jenkins.maven3.agent.Maven35Main, /usr/apache/apache-maven-3.5.0,
/usr/apache/apache-tomcat-8.5.20/webapps/jenkins/WEB-INF/lib/remoting-
3.10.jar, /home/ec2-user/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven35-
interceptor-1.11.jar, /home/ec2-user/.jenkins/plugins/maven-plugin/WEB-
INF/lib/maven3-interceptor-commons-1.11.jar, 43475] id=255]
hudson.XmlFile.replaceIfNotAtTopLevel JENKINS-45892: reference to
hudson.maven.MavenModuleSet@7f610bfd[HousingManagementSystem] being saved but
not at top level
31-Aug-2017 18:55:50.808 INFO [Executor #0 for master : executing
HousingManagementSystem #18] hudson.model.Run.execute HousingManagementSystem
#18 main build action completed: SUCCESS
31-Aug-2017 18:55:51.686 INFO [http-nio-8181-exec-16]
org.apache.catalina.startup.HostConfig.undeploy Undeploying context
[/HousingManagementSystem]
31-Aug-2017 18:55:52.038 INFO [http-nio-8181-exec-16]
org.apache.catalina.startup.HostConfig.deployWAR Deploying web application
archive [/usr/apache/apache-tomcat-
8.5.20/webapps/HousingManagementSystem.war]
31-Aug-2017 18:55:54.357 INFO [http-nio-8181-exec-16]
org.apache.catalina.startup.HostConfig.deployWAR Deployment of web
application archive [/usr/apache/apache-tomcat-
8.5.20/webapps/HousingManagementSystem.war] has finished in [2,319] ms
31-Aug-2017 18:55:54.560 INFO [Executor #0 for master : executing
HousingManagementSystem #18]
jenkins.plugins.slack.StandardSlackService.publish Posting succeeded
唯一显示警告的是:
31-Aug-2017 18:55:50.135 WARNING [Computer.threadPoolForRemoting [#6] for
Channel to Maven [/usr/java/latest/bin/java, -cp, /home/ec2-
user/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven35-agent-
1.11.jar:/usr/apache/apache-maven-3.5.0/boot/plexus-classworlds-
2.5.2.jar:/usr/apache/apache-maven-3.5.0/conf/logging,
jenkins.maven3.agent.Maven35Main, /usr/apache/apache-maven-3.5.0,
/usr/apache/apache-tomcat-8.5.20/webapps/jenkins/WEB-INF/lib/remoting-
3.10.jar, /home/ec2-user/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven35-
interceptor-1.11.jar, /home/ec2-user/.jenkins/plugins/maven-plugin/WEB-
INF/lib/maven3-interceptor-commons-1.11.jar, 43475] id=255]
hudson.XmlFile.replaceIfNotAtTopLevel JENKINS-45892: reference to
hudson.maven.MavenModuleSet@7f610bfd[HousingManagementSystem] being saved but
not at top level
我已经尝试过以前在堆栈溢出中提出的解决方案,但无济于事。有什么想法吗?
最佳答案
所以在一位 friend 的帮助下,我设法解决了这个问题,他告诉我,我们的 spring boot 应用程序类中缺少一个方法。就是下面这个:
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}//this was the one we were missing
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
并将其添加到依赖项中:
<dependencies>
<!-- … -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!-- … -->
</dependencies>
这是用spring boot创建一个可部署的war文件。
关于java - 通过 jenkins 成功将 .war 文件部署到 tomcat 8.5.20 服务器不会在浏览器中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45988389/