SpringBoot项⽬迁移到tongweb
Spring Boot版本:2.1.3
Tongweb版本:7.0.4.2
数据库:达梦V8
第⼀步:排除内置Tomcat,在pom中更改此依赖,其他⽅式可⾃⾏百度
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 去除内嵌tomcat -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
第⼆步:将打包⽅式更改为 war
<packaging>war</packaging>
第三步:修改启动类
使启动类继承 SpringBootServletInitializer 类,并重写 configure ⽅法
@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(DemoApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
注意:
react router 方法1、使⽤Tomcat部署没有问题,但是在TongaWeb下出现
java.lang.NoSuchMethodError:javax.validation.ValueExtractors()Ljava/util/Set; Caused by: java.lang.ClassNotFoundException: javax.validation.ParameterNameProvider
因为tomcat不带javax.validation,⽽TongWeb带javax.validation,使⽤版本不⼀致导致。
解决⽅式:把TongWeb安装⽬录lib下的validation-api删除替换为应⽤中的validation-api,我的是validation-
api-2.0.1.Final.jar
2、⼀个容器中部署多个应⽤出现
Caused by: org.port.UnableToRegisterMBeanException: Unable to register MBean
[org.t.environment.EnvironmentManager@3ebe27fc] with key
'environmentManager'; nested exception is javax.management.InstanceAlreadyExistsException:
org.t.environment:name=environmentManager,type=EnvironmentManager
原因:spring.jmx是默认打开的,所以有两种解决办法
办法1:abled=false
办法2:在application中各⾃配置
spring.jmx.default-domain=project1
spring.jmx.default-domain=project2
以保证domain是两个不⼀样的
后端部署的时候注意后缀改成前端做配置的后缀
前端将之前的zip包后缀名改为war部署即可,注意前端⽂件直接打成zip后改名,不可将外层的⽂件夹打成zip
包
达梦数据库踩坑:
1、 tongweb不⽀持log4jdbc,以下写法连不上数据库(我没到解决⽅法)
datasource:
url: jdbc:log4jdbc:dm://127.0.0.1:5236/SYSDBA?
useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
username: SYSDBA
password: SYSDBA
driver-class-name: net.sf.log4jdbc.DriverSpy
2、将达梦数据库驱动包作为lib放在项⽬⽂件夹⾥⾯,并在pom添加依赖,这种做法会导致报驱动类
classNotFound错误
3、正确做法:将jar包安装⾄本地maven仓库
mvn install:install-file -Dfile=电脑本地⽬录\DmJdbcDriver18.jar -DgroupId=com.dm -
DartifactId=DmJdbcDriver18 -Dversion=1.8 -Dpackaging=jar
pom添加
<dependency>
<groupId>com.dm</groupId>
<artifactId>DmJdbcDriver18</artifactId>
<version>1.8</version>
</dependency>
数据库配置
datasource:
driver-class-name: dm.jdbc.driver.DmDriver
url: jdbc:dm://127.0.0.1:5236/SYSDBA?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
username: SYSDBA
password: SYSDBA
4、前端页⾯刷新404问题
原因解析:
之所以你在浏览器内可以由⾸页跳转到其他路由地址,是因为这是由前端⾃⾏渲染的,你在React Router定义了对应的路由,脚本并没有刷新⽹页访问后台,是JS动态更改了location。
当你刷新时,你⾸先是访问的后台地址,然后返回的页⾯内加载了React代码,最后在浏览器内执⾏;也就是说如果这个时候报404,是因为你后台并没有针对这个路由给出返回HTML内容,也谈不上执⾏React Router了。
之前⽤的是nginx,在nginx中配置了try_files。
现在解决⽅式为在tongweb的安装⽬录conf/ l中添加
<error-page>
<error-code>404</error-code>
<location>/index.html</location>
</error-page>
5、前端项⽬部署的时候有前缀导致访问404,此处需要前端同学打包的时候base设置为相同的前缀名。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论