weblogic为同一domain下的不同server添加不同参数

一、背景

今天应用提需求说:现有一应用部署在多个server上,该应用会使用Ddubbo.protocol.port参数指定的端口去启动dubbo,现在想要做到的效果是为每个server的Ddubbo.protocol.port配不同的值,当访问不同server时应用会调用不同的端口去启动dubbo。

dubbo这东西之前都没听过,不是像数据库一样自己启动监听好等应用去调用反是应用利用指定的端口去启动,这种模式开始是有些懵的;然后去看了一下又是些什么分布式的东西,这一时半会也不会看得懂。

缓过神来想想,弄懂这是什么东西不是必须的,这就是一个weblogic怎么带自定义参数的问题,不管叫dubbo还是bubbo不管是做什么的,只要参数能带上需求就解决了。

二、解决办法探索

如果是同domain下的所有server都添加同一参数,那直接在setDomainEnv.sh中的JAVA_OPTIONS=后追加即可,但现在的需求是不同server参数值不同,所以此路不通。

不懂先百度,有说控制台--服务器--配置--服务器启动--参数中配置即可,在配置后到config.xml中看到参数被放到<server-start>标签中似乎有戏,但经反复启动还是命令没带上配置的参数,而且细看似乎是说另外的东西,在控制台也看到另外的有像配置启动参数的地方就放弃了继续在控制台摆弄。

再想平时启动是使用自己生成的startman.sh,其内容如下:

到startManagedWebLogic.sh追溯一下其如何处理传入的参数,可能有机会插入参数。

按usage看其只接受受控server名和控制台地址两个参数,但就相当于源码的东西可以自己改所以不是完全没有机会

继续往下看内容不是很多但也没一句句研究什么用途,拉到末尾看到了令人振奋的一句代码:${DOMAIN_HOME}/bin/startWebLogic.sh $1 $2 $3 $4 $5 $6 $7 $8 $9

也就是说startManagedWebLogic.sh直接将其接收到的参数不加处理一齐丢给了startWebLogic.sh,shell脚本一般不会去判断哪个参数是什么用,很大可能就是直接拼接到启动命令后边去启动,事实也证明确实如此。

三、解决办法

直接在startman.sh中追加要添加的-Ddubbo.protocol.port参数,如下(startman.sh是我们为了方便自己建的受控服务器脚本,实际也就是在受控服务器启动的末尾追加):

启动后可以看到myApp11和myApp12成功带上了不同值的-Ddubbo.protocol.port参数:

 对于控制台,也一样在启动命令(startWeblogic.sh)后追加参数即可。

原文地址:https://www.cnblogs.com/lsdb/p/7687435.html