springboot项目eclipse可正常访问,部署到tomcat却无法访问项目

解决:
在springboot项目的启动类(含main方法的类)中添加继承extends springApplicationBuilder,并重写方法:

@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder springApplicationBuilder) {
    
    
		return springApplicationBuilder.sources(DiagnosisCenterApplication.class);
	}

----------------------------------------分割线-----------------------------------------------------

场景描述

新建一springboot项目,编码完成,启动类如下:

package com.jinshan.diagnosiscenter;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.context.annotation.Bean;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;


@SpringBootApplication
@EnableAutoConfiguration
@ServletComponentScan
public class DiagnosisCenterApplication implements WebMvcConfigurer {
    
    
	
	
	public static void main(String[] args) {
    
    
		SpringApplication.run(DiagnosisCenterApplication.class, args);
	}
	
	@Bean
	public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
    
    
		return new RestTemplate(factory);
	}
 
	@Bean
	public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
    
    
		SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
		factory.setReadTimeout(180000);//单位为ms
		factory.setConnectTimeout(5000);//单位为ms
		return factory;
	}
	

}

pom.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.4.5</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.jinshan</groupId>
	<artifactId>diagnosis-center</artifactId>
	<version>1.0.0</version>
	<packaging>war</packaging>
	<name>diagnosis-center</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<exclusions>
				<!-- 排除 Spring-boot-starter 默认的日志配置 -->
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
		<dependency>
			<groupId>com.google.guava</groupId>
			<artifactId>guava</artifactId>
			<version>30.1-jre</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
		</dependency>
		
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>

		<!-- log start -->
		<!-- 引入日志依赖 自带slf4j -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-log4j2</artifactId>
		</dependency>

		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
		</dependency>
		<!-- log end -->


	</dependencies>

	<build>
		<finalName>diagnosiscenter</finalName>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

项目在eclipse中可正常访问

打包部署到服务器(linux/windows)

在这里插入图片描述
无法访问。

查找原因

首先想到了是打包的问题

  • 缺少打包的依赖
  • 打包插件问题
  • 依赖版本问题

服务器配置问题

  • 核对tomcat/conf/server.xml

一番操作之后发现都没有用,然后就看tomcat的日志信息,如下:

在这里插入图片描述
如图所示,只是tomcat启动了,但是并没有加载项目。,这就是原因所在

解决

在网上对应一搜,找到一老大哥的文章https://www.pianshen.com/article/1265130159/ 解决了问题。

解决办法

在springboot项目的启动类(含main方法的类)中添加继承extends springApplicationBuilder,并重写方法:

@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder springApplicationBuilder) {
    
    
		return springApplicationBuilder.sources(DiagnosisCenterApplication.class);
	}

完整的启动类:

package com.jinshan.diagnosiscenter;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;


@SpringBootApplication
@EnableAutoConfiguration
@ServletComponentScan
public class DiagnosisCenterApplication extends SpringBootServletInitializer implements WebMvcConfigurer {
    
    
	
	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder springApplicationBuilder) {
    
    
		return springApplicationBuilder.sources(DiagnosisCenterApplication.class);
	}
	
	public static void main(String[] args) {
    
    
		SpringApplication.run(DiagnosisCenterApplication.class, args);
	}
	
	@Bean
	public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
    
    
		return new RestTemplate(factory);
	}
 
	@Bean
	public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
    
    
		SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
		factory.setReadTimeout(180000);//单位为ms
		factory.setConnectTimeout(5000);//单位为ms
		return factory;
	}
	

}

验证

重新打包并部署,查看日志:

在这里插入图片描述
如图所示,项目正常启动。

访问:
在这里插入图片描述
正常访问。

Guess you like

Origin blog.csdn.net/qq_29025955/article/details/120553801