Spring Boot Consul TongWeb适配
一、登录控制台
http://36.158.226.120:9060/console
二、排除默认的Tomcat
<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>
三、打war包
<packaging>war</packaging>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
四、重写启动类
重写启动类,继承 SpringBootServletInitializer 类,重写 configure 方法,否则无法检测到启动类。
public class StandardSystemApplication extends SpringBootServletInitializer
{
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(StandardSystemApplication.class);
}
public static void main(String[] args)
{
SpringApplication.run(StandardSystemApplication.class, args);
System.out.println("(♥◠‿◠)ノ゙ 系统模块启动成功 ლ(´ڡ`ლ)゙ ");
}
}
五、注册
如果使用的是基于 Consul 的微服务架构,除了上述步骤,还需要添加以下配置类,将服务注册至 Consul 注册中心,否则服务虽然正常启动,没有任何报错信息,但是并没有注册到 Consul。
package com.gientech.jep.service.sys.conf;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.cloud.consul.serviceregistry.ConsulAutoRegistration;
import org.springframework.cloud.consul.serviceregistry.ConsulAutoServiceRegistration;
import org.springframework.context.annotation.Configuration;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import javax.management.Query;
import java.lang.management.ManagementFactory;
import java.util.Set;
/**
-
ConsulApplicationRunner
-
@author houyinke
-
@date 2022/12/11 11:40
*/
@Configuration
public class ConsulApplicationRunner implements ApplicationRunner {@Autowired(required = false)
private ConsulAutoServiceRegistration serviceRegistration;@Autowired(required = false)
private ConsulAutoRegistration registration;@Value("${server.port}")
Integer port;@Override
public void run(ApplicationArguments args) {
if (registration != null && port != null) {
Integer tomcatPort = port;
try {
tomcatPort = new Integer(getTomcatPort());
} catch (Exception e) {
e.printStackTrace();
}
registration.getService().setPort(tomcatPort);
serviceRegistration.start();
}
}/**
- 获取外部tomcat端口
/
public String getTomcatPort() throws Exception {
MBeanServer beanServer = ManagementFactory.getPlatformMBeanServer();
Set< ObjectName > objectNames = beanServer.queryNames(new ObjectName(":type=Connector,*"), Query.match(Query.attr("protocol"), Query.value("HTTP/1.1")));
String port = objectNames.iterator().next().getKeyProperty("port");
return port;
}
}
- 获取外部tomcat端口
六、一个Web容器下部署多个服务
如果想通过在一个 TongWeb 下部署多个服务,有两种方案:
- 采用多通道结合多虚拟主机实现多服务部署;
-
增加多个域(具体操作参考官方安装部署手册);
• 多通道
image.png
• 多虚拟主机
image.png
七、通过 build
image.png八、依赖TongWeb 7.x
1、删除 TongWeb/lib/validation-api.jar,加入validation-api-2.0.1.Final到lib
2、项目依赖TongWeb/lib,IDEA。
5.3.2 微前端
1、 将build完成的VUE项目拷贝到文件夹中
2、 创建文件夹WEB-INF
3、 进入WEB-INF文件夹创建文件web.xml
内容如下:
<?xml version="1.0"?>
<web-app>
<error-page>
<error-code>404</error-code>
<location>/index.html</location>
</error-page>
</web-app>
4、 进行打包
输入jar -cvf sys.war * 进行打包。
打包完成之后会产生如下文件,将sys.war上传到TngWeb即可开始部署前端。