当前位置: 首页 > news >正文

甘肃网站制作公司网站建设维护学什么科目

甘肃网站制作公司,网站建设维护学什么科目,腾讯网页版wordpress,银川森淼生态园Spring Boot 构建war 部署到tomcat下无法在Nacos中注册服务 1. 问题2. 分析3. 解决方案参考 1. 问题 使用Nacos作为注册中心的Spring Boot项目#xff0c;以war包形式部署到服务器上#xff0c;启动项目发现该服务无法在Nacos中注册。 2. 分析 SpringCloud 项目打 war 包部… Spring Boot 构建war 部署到tomcat下无法在Nacos中注册服务 1. 问题2. 分析3. 解决方案参考 1. 问题 使用Nacos作为注册中心的Spring Boot项目以war包形式部署到服务器上启动项目发现该服务无法在Nacos中注册。 2. 分析 SpringCloud 项目打 war 包部署时也就是使用外部 Tomcat 部署其启动命令、端口等是由外部容器 Tomcat 配置的而 Nacos 或者其他服务注册方式需要当前项目的端口号用于注册微服务。 以 Nacos 为例其自动注册微服务的类是 NacosAutoServiceRegistration我们看一下它的源码 public class NacosAutoServiceRegistration extends AbstractAutoServiceRegistrationRegistration {private NacosRegistration registration;Deprecatedpublic void setPort(int port) {this.getPort().set(port);}protected NacosRegistration getRegistration() {if (this.registration.getPort() 0 this.getPort().get() 0) {this.registration.setPort(this.getPort().get());}Assert.isTrue(this.registration.getPort() 0, service.port has not been set);return this.registration;} 我们看到 NacosAutoServiceRegistration 使用了 this.registration.setPort(this.getPort().get()); 来设置端口号。 而端口号是从其父类 AbstractAutoServiceRegistration 中的方法获取的 public abstract class AbstractAutoServiceRegistrationR extends Registrationimplements AutoServiceRegistration, ApplicationContextAware,ApplicationListenerWebServerInitializedEvent {private AtomicInteger port new AtomicInteger(0);Deprecatedpublic void bind(WebServerInitializedEvent event) {ApplicationContext context event.getApplicationContext();if (context instanceof ConfigurableWebServerApplicationContext) {if (management.equals(((ConfigurableWebServerApplicationContext) context).getServerNamespace())) {return;}}this.port.compareAndSet(0, event.getWebServer().getPort());this.start();} 这段代码监听了内置容器启动完成事件监听获取到容器端口后向注册中心注册服务。 因此当使用外部容器时如此处的 Tomcat 来部署项目AbstractAutoServiceRegistration 就不能监听到容器启动事件了也就不会尝试向服务注册中心注册当前这个微服务那么注册就失败了并且也就没有异常信息了。 3. 解决方案 自定义获取获取外部容器端口的方法 然后监听应用启动事件当应用被启动时获取外部容器启动的端口号然后将这个 port 设置到 NacosAutoServiceReigistration 中。 具体操作流程 Spring Boot提供了ApplicationRunner接口是在应用起好之后执行一些初始化动作。通过这个接口我们可以实现启动项目后注册服务。使用这种方法需要在配置文件中配置端口号如果一个应用部署很多端口每个应用都要配置很不方便。故可获取外部tomcat自动设置端口。经测试方法可行。 在启动类同级目录复制下面代码即可不需要修改直接构建war即可 import java.lang.management.ManagementFactory; import java.util.Set;import javax.management.MBeanServer; import javax.management.ObjectName; import javax.management.Query;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.stereotype.Component;import com.alibaba.cloud.nacos.registry.NacosAutoServiceRegistration; import com.alibaba.cloud.nacos.registry.NacosRegistration;import lombok.extern.slf4j.Slf4j;/*** 项目打包war情况下部署外部tomcat需该方式注册nacos*/ Component Slf4j public class NacosRegisterOnWar implements ApplicationRunner {Autowiredprivate NacosRegistration registration;Autowiredprivate NacosAutoServiceRegistration nacosAutoServiceRegistration;Value(${server.port})Integer port;Overridepublic void run(ApplicationArguments args) throws Exception {if (registration ! null port ! null) {Integer tomcatPort port;try {tomcatPort new Integer(getTomcatPort());} catch (Exception e) {log.warn(获取外部Tomcat端口异常, e);}registration.setPort(tomcatPort);nacosAutoServiceRegistration.start();}}/*** 获取外部tomcat端口*/public String getTomcatPort() throws Exception {MBeanServer beanServer ManagementFactory.getPlatformMBeanServer();SetObjectName objectNames beanServer.queryNames(new ObjectName(*:typeConnector,*), Query.match(Query.attr(protocol), Query.value(HTTP/1.1)));String port objectNames.iterator().next().getKeyProperty(port);return port;} }提示: 在部署项目要注意版本问题如Spring Boot 2.0.6应该部署在tomcat8以上版本 参考 Spring Boot 构建war 部署到tomcat下无法在Nacos中注册服务
http://www.dnsts.com.cn/news/202890.html

相关文章:

  • 网站建设方案选择实现方式中山有网站建设公司吗
  • 网站开发设计哪家好培训机构有哪些
  • 做爰全过程免费的视网站博罗企业网站建设
  • 网站 支持建设单位上海医疗网站建设
  • 网站建设金思扬网络it外包的收益主要有哪些
  • 榆林做网站的公司美食网站建设策划书
  • 自己的网站怎么做网盘3 建设营销型网站流程
  • 有没有一种app类似网站建设个人备案的网站可以做淘宝客吗
  • 可以做照片书的网站google官方版下载
  • 泉州建设银行网站网站开发设计报告书怎么写
  • 重庆市建设考试报名网站网站ui设计公司
  • 网站设配色网络组建与维护试题
  • 做k12网站wordpress 获取模板路径
  • 举报的网站是国外的域名和空间广西麒铭建设有限公司网站
  • 二维码导航网站源码网站代理工具
  • 营销网站文章去那找怎样做免费企业网站
  • 网站假备案举报net做网站
  • 太原搭建网站的公司哪家好网站建设与管理是课程
  • 国内优秀网站设计欣赏家在龙岗
  • 网站jsp充值和体现系统怎么做wordpress静态页没有标题
  • 同一虚拟空间做两个网站东莞市国外网站建设哪家好
  • 给企业做网站前景做网站的成本在哪
  • 呼和浩特网站网站建设wordpress随机
  • 网站美术视觉效果布局设计微信的官方网站怎么做
  • 天津网站制作计划建材建设网站
  • 表格做的网站影响收录现代简约客厅
  • 智能建网站软件怎么往网站里做游戏
  • 怎样用ps做网站的效果图动漫设计招聘信息
  • 个人博客网站模板免费商务网站建设试题
  • 潍坊住房和城乡建设厅网站电商培训内容