背景

java开发的程序有很多进行配置的方式
可以通过 yaml文件或者是xml文件
也可以通过环境变量的方式.
1. 容器的话可以使用 -e 或者是env进行注入
2. K8S的话可以通过 configmap 或者是 env 方式进入注入
需要注意, 环境变量的注入可能是明文, configmap貌似也是用base64做了一次编码
如果实现加密还是需要用ENC等方式来实现.

摘要

自己一些测试环境, 比如端口监听等, 其实不同的目录启动,想用不同的端口
来解决端口冲突的问题.
之前的解决方式是通过sed的方式动态修改 yaml 文件来实现.
但是这一点容易被研发通过检查配置文件的hash值来堵死.
基于此 想通过其他方式来规避这个问题
想到的是 通过 -D的方式来指定端口等来解决.

处理方式

修改启动脚本:
最好的方法是在前面增加一个私有化配置:
MSUConfig="-Dserver.port=5203 -Dmsu.serviceName=zhaobshtest" 然后将这个配置节添加进具体的启动脚本: $JAVA_HOME/bin/java $MSUConfig -jar xxx.jar

配置文件的处理方式

-D 的含义为:
Set a system property value. If value is a string that contains spaces,
you must enclose the string in double quotes: 需要注意着里面有两个注释事项:
(1)需要设置的是JVM参数而不是program参数
(2)使用此参数的参数优先级最高,会覆盖项目中配置的此项

结果验证

除非是系统内部自己进行了端口声明, 核心业务的端口是可以通过这种方式进行暴露和修改的. 

后续可以设置不同的启动文件.启动多个服务.  

这里有一个需要优化的点:

如果这样启动, 除了日志文件 是否可以实现应用目录的重用?
是否会有其他影响? 样例处理:
MSUConfig="-Dserver.port=5201 -Dmsu.serviceName=zhaobshtest -Dlogging.config=$IGIX_SERVER_HOME/runtime/logback-spring5201.xml "

java -D的一些学习和使用的更多相关文章

  1. 【Java线程池快速学习教程】

    1. Java线程池 线程池:顾名思义,用一个池子装载多个线程,使用池子去管理多个线程. 问题来源:应用大量通过new Thread()方法创建执行时间短的线程,较大的消耗系统资源并且系统的响应速度变 ...

  2. java concurrent包的学习(转)

    java concurrent包的学习(转) http://my.oschina.net/adwangxiao/blog/110188 我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常 ...

  3. java 动态代理深度学习(Proxy,InvocationHandler),含$Proxy0源码

    java 动态代理深度学习, 一.相关类及其方法: java.lang.reflect.Proxy,Proxy 提供用于创建动态代理类和实例的静态方法.newProxyInstance()返回一个指定 ...

  4. JAVA的反射机制学习笔记(二)

    上次写JAVA的反射机制学习笔记(一)的时候,还是7月22号,这些天就瞎忙活了.自己的步伐全然被打乱了~不能继续被动下去.得又一次找到自己的节奏. 4.获取类的Constructor 通过反射机制得到 ...

  5. 2017面向对象程序设计(Java)第二周学习总结

    2017面向对象程序设计(Java)第二周学习总结 直系学妹学弟们好!额...不要问我为什么把学妹放前面,我也不知道!我只是你们和蔼可亲的学长一枚而已.也不要问为什么是第二周学习总结而不是第一周,因为 ...

  6. 201521044152<java程序设计>第一周学习总结

    本周学习总结 java开发时间虽然很短,但是发展迅速,已成为现在非常流行的一门语言,很开心能有幸学习java.第一周学习了java的平台,运行环境jdk以及jrt等等新名词,还了解了eclipse的基 ...

  7. JAVA入门(1.JAVA平台应用 2.核心概念:JVM,JDK,JRE 3.搭建JAVA开发环境 4.学习JAVA的原则)

    主要内容: 1.JAVA平台应用 2.核心概念:JVM,JDK,JRE 3.搭建JAVA开发环境 4.学习JAVA的原则 JAVA的平台应用 JAVA的平台应用分为3个部分: 一.JAVA SE,主要 ...

  8. java网络爬虫基础学习(三)

    尝试直接请求URL获取资源 豆瓣电影 https://movie.douban.com/explore#!type=movie&tag=%E7%83%AD%E9%97%A8&sort= ...

  9. 杨其菊201771010134《面向对象程序设计(java)》第四周学习总结

    <面向对象程序设计(java)> 第四周学习总结 第一部分:理论知识 1.类与对象 a.类(class)是构造对象的模板或蓝图.由类构造对象的过程称为创建类的实例: java中类声明的格式 ...

  10. 对于“2017面向对象程序设计(JAVA)第四周学习总结”存在问题的反馈

    对于“2017面向对象程序设计(JAVA)第四周学习总结”存在问题的反馈 “这部分同学博文总结没有写,实验作业没有提交.”——1.关于博文作业.实验作业教学功能的正解:学习知识.暴露问题.衔接课上.2 ...

随机推荐

  1. 干货分享丨轻松玩转 Huawei LiteOS 传感框架

    摘要:LiteOS传感框架将物联网终端设备上不同类型的传感器统一管理,通过抽象不同类型传感器接口,屏蔽其硬件细节,做到"硬件"无关性,非常方便于物联网设备的开发.维护和功能扩展. ...

  2. 【玩转鲲鹏DevKit系列】如何快速迁移软件包?

    本文分享自华为云社区<[玩转鲲鹏DevKit系列]如何快速迁移软件包?>,作者: 华为云社区精选 . 软件包含各种不同格式的文件,如RPM包通常包含二进制文件.SO 库文件.JAR包.配置 ...

  3. 云图说|云数据库GaussDB如何做到卓越性能

    摘要:对于数据库来说,性能一直被视为最关键的部分.GaussDB作为华为自主创新研发的分布式关系型数据库,那么华为云数据库GaussDB在提升数据库性能方面都有哪些黑科技呢? 本文分享自华为云社区&l ...

  4. 带你学会区分Scheduled Thread Pool Executor 与Timer

    摘要:本文简单介绍下Scheduled Thread Pool Executor类与Timer类的区别,Scheduled Thread Pool Executor类相比于Timer类来说,究竟有哪些 ...

  5. 用 docker 部署 folkmq 消息中间件

    docker run -p 18602:18602 -p 8602:8602 noearorg/folkmq-server:1.0.19

  6. Solon 在 jdk 各版本反射权限问题的处理指南

    jdk17 如果出现反射权限问题.可添加jvm参数:--add-opens (取消了 illegal-access 参数) #示例: java --add-opens java.base/java.l ...

  7. Educational Codeforces Round 93 (Rated for Div. 2)

    Educational Codeforces Round 93 (Rated for Div. 2) A. Bad Triangle input 3 7 4 6 11 11 15 18 20 4 10 ...

  8. 换架 3D 飞机,继续飞呀飞

    相信大多数图扑 HT 用户都曾见过这个飞机的 Demo,在图扑发展的这十年,这个 Demo 是许多学习 HT 用户一定会参考的经典 Demo 之一. 这个 Demo 用简洁的代码生动地展示了 OBJ ...

  9. 11、SpringBoot-mybatis-plus-druid多源数据事务

    系列导航 springBoot项目打jar包 1.springboot工程新建(单模块) 2.springboot创建多模块工程 3.springboot连接数据库 4.SpringBoot连接数据库 ...

  10. 一、Mycat实战---为什么要用mycat

    系列导航 一.Mycat实战---为什么要用mycat 二.Mycat安装 三.mycat实验数据 四.mycat垂直分库 五.mycat水平分库 六.mycat全局自增 七.mycat-ER分片 本 ...