使用tomcat10不兼容,接口无法访问,更换tomcat9后丝滑流畅,一部成功
经测试,tomcat10就是不行,tomcat9完全没问题
java打包war包步骤
1.pom.xml文件下,设置打包格式为war
1 2 3 4
| <artifactId>cesiumAdmin</artifactId> <version>1</version> <packaging>war</packaging> <name>springboot_cylgis</name>
|
2.移除内置的tomcat容器(若依好像不用移除也可以,没测试,此处springboot项目需要)
1 2 3 4 5 6 7 8 9 10 11
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency>
|
3.springboot项目需要确保提供外部tomcat依赖
1 2 3 4 5 6
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
|
4.springboot项目设置复写SpringBootServletInitializer启动类,在对应的自己的SpringbootCylgisApplication启动类下
1 2 3 4 5 6 7 8 9 10 11
| @SpringBootApplication public class SpringbootCylgisApplication extends SpringBootServletInitializer{
public static void main(String[] args) { SpringApplication.run(SpringbootCylgisApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(SpringbootCylgisApplication.class); } }
|
如果报错alt+shite+enter提示创建新的java类文件,无妨。(需要maven插件进行打包,一般构建项目选择自动有)
1 2 3 4 5 6 7 8
| <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
|
配置好之后直接打包即可
tomcat9配置
server.xml配置
在底部host标签下添加如下配置,其中/prod-api为后面前端打包配置的代理路径,需要对应。(不能配置未真实存在的docBase路径,不然会闪退)
1 2
| <Context docBase="dist" path="" reloadable="false"/> <Context docBase="ruoyi-admin" path="/prod-api" reloadable="false"/>
|
打包前端项目方文件夹进行重新向,刷新之后不会404
dist文件夹下新建WEB-INF文件夹,下面新建web.xml文件,内容如下
1 2 3 4 5 6 7 8 9 10 11 12
| <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1" metadata-complete="true"> <display-name>/</display-name> <error-page> <error-code>404</error-code> <location>/index.html</location> </error-page> </web-app>
|
前端打包部署(若依项目)
使用vue3前端项目,elementplus+vite+ts
配置代理,vite.config.js,配置打包盒生成环境,其中10.174.207.130是ip地址,8082为后端java项目启动配置的数据接口,需要保持一致。其中VITE_APP_BASE_API配置为"/prod-api" ,部署时需要和上述serve.xml的path对应,在.env.production文件中配置更改。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| server: { port: 80, host: true, open: true, proxy: { '/dev-api': { target: 'http://10.174.207.130:8082',
changeOrigin: true, rewrite: (p) => p.replace(/^\/dev-api/, '') }, [process.env.VITE_APP_BASE_API]: { target: 'http://10.174.207.130:8082',
changeOrigin: true, pathRewrite: { ['^' + process.env.VITE_APP_BASE_API]: '' }, } } }
|
- 如果项目部署在tomcat的webapps目录下,如前端打包部署名称为‘project’文件夹放在webapps目录下,通过tomcat的访问路径+/project进行访问,修改vue.config.js中的pubicPath的名称与路由的bast路径。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
publicPath: process.env.NODE_ENV === "production" ? "/project" : "/", outputDir: 'project',
export default new Router({ mode: 'history', base: '/project/', scrollBehavior: () => ({ y: 0 }), routes: constantRoutes })
|
部署完成后,启动tomcat9,访问loaclhost:8080直接即可访问文件,记录一下配置代码
更新主要事项
部署完成后,默认的8080直接访问,会导致其他资源重定向到此项目,访问失败,需要配置默认的其他端口。
配置静态资源访问时,除了配置tomcat的server.xml的路线,需要将web.xml的org.apache.catalina.servlets.DefaultServlet
的listings设置为true,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
|