java - 通过 jenkins 成功将 .war 文件部署到 tomcat 8.5.20 服务器不会在浏览器中显示

标签 java spring maven tomcat jenkins

我对 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文件。

资源: https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-create-a-deployable-war-file

关于java - 通过 jenkins 成功将 .war 文件部署到 tomcat 8.5.20 服务器不会在浏览器中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45988389/

相关文章:

java - 我有一个包含 .length 和 .charAt 且前面带有 token 的错误。为什么行不通?

java.lang.NoClassDefFoundError : javax/xml/soap/SOAPException

java - 为什么我会收到此 NoClassDefFoundError?

java - 构造函数 - 执行顺序

java - 如何使用高tps、多线程向rabbitmq发布消息

java - "The crash happened outside the Java Virtual Machine in native code."如何解决这个错误(Java)?

java - Spring 中@Repository 和@RepositoryDe​​finition 有什么区别?

java - 如何使用 JDBCTemplate 使线程尝试重新连接到数据库 x 次

Android maven插件生成多个dex文件

maven - Artifact 已下载,但未从我的单个 Nexus 服务器使用