# Weblogic JMS消息中间件集群起停平台化操作的探索

> 作者/来源: UCloud 运营管理员
> 发布时间: 2023-01-11T05:20:00.000Z
> 分类: 其他
> 标签: AI, 数据库, Java
> 原文链接: http://117.50.162.249:3000/yun/articles/798

---

# Weblogic JMS消息中间件集群起停平台化操作的探索

> 来源: https://www.ucloud.cn/yun/130095.html
> 作者: IT那活儿
> 发布日期: 发布于2023-01-11 13:20

Weblogic JMS消息中间件集群起停平台化操作的探索

JMS（JavaMessagingService）是Java平台上有关面向消息中间件的技术规范，它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发，翻译为Java消息服务。

JMS是一种与厂商无关的API，用来访问消息收发系统。它类似于JDBC(JavaDatabase Connectivity)：这里，JDBC是可以用来访问许多不同关系数据库的API，而 JMS则提供同样与厂商无关的访问方法，以访问消息收发服务。许多厂商目前都支持JMS，包括IBM 的MQSeries、BEA的Weblogic JMS service和Progress 的SonicMQ。

对于WeblogicJMSservice的使用可以分为两部分，一部分是Weblogic作为服务端发布对应的JMS服务为客户端程序提供服务，一部分是我们的应用程序作为客户端发布消息到JMS服务端或从JMS服务端获取消息进行消费。

我们今天要说是WeblogicJMS service消息中间件集群起停平台化的实现探索：

[

一、集群常规起停方式

]

在日常运维JMS消息中间件集群时，如果需要起停服务，我们通常的做法是：

1、起集群

（1）登录管理Server的主机将AdminServer进程启动

（2）登录集群中所有的主机将对应主机的节点管理器进程启动

（3）登录JMS服务器管理后台，将所有的被管server启动

方法：域-环境-服务器-服务器概要-控制，勾选除AdminServer的所有被管Server，然后选择启动。

2、停集群

与起集群的操作顺序刚好反过来。

但是，这种人工手动登录控制台起停集群的方式，无法实现平台化操作。

[

二、集群平台化起停方式

]

### 

### 探索方式1：编写shell脚本起停集群

（1）编写AdminServer起停脚本

start9001.sh

|  |
| --- |
| export PORT="9001"  export USER\_MEM\_ARGS="-Xms256m -Xmx256m -Djava.security.egd=file:/dev/./urandom"  nohup sh ./bin/startWebLogic.sh >./console9001.log &  tail -f ./console9001.log |

（2）编写节点管理器起停脚本

startNode5556.sh

|  |
| --- |
| nohup sh ./bin/startNodeManager.sh >./node5556.log &  tail -f ./node5556.log |

（3）编写被管server起停脚本

如：start11001.sh

|  |
| --- |
| export PORT="11001"  export USER\_MEM\_ARGS="-Xms512m -Xmx512m -Dweblogic.threadpool.MinPoolSize=100 -Dweblogic.threadpool.MaxPoolSize=200 -Djava.security.egd=file:/dev/./urandom"  nohup sh ./bin/startManagedWebLogic.sh bossServer1 http://192.168.44.61:9001 >./console11001.log &  tail -f ./console11001.log |

准备拉起集群，AdminServer和节点管理器正常起动，但是被管server起动失败：

![](https://ucloud-blog.cn-bj.ufileos.com/articles/130095/images/130095_000.png)

根据提示”<2020-11-1 上午10时30分34秒CST>   ”分析，服务器必须由NodeManager启动。于是我就开始第二阶段的探索，查到了nmStart()函数。

### 探索方式2：通过nmStart()函数起停集群

通过nmStart()函数起停集群，则就要用到weblogic自带的wlst.sh脚本进行域的连接，Weblogic10.3.6版本该脚本通常在${WLS\_HOME}/common/bin/wlst.sh位置。

（1）我们通过如下步骤成功的连接到域：

WLS\_HOME="/weblogic/Oracle/Middleware/wlserver\_10.3"

${WLS\_HOME}/common/bin/wlst.sh

connect(weblogic,weblogic!123,t3://192.168.44.61:9001)

![](https://ucloud-blog.cn-bj.ufileos.com/articles/130095/images/130095_009.png)

（2）在连接到节点管理器

nmConnect(weblogic,weblogic!123,192.168.44.61,5556,bossdomain,/bossapp/domains/bossdomain,plain)

![](https://ucloud-blog.cn-bj.ufileos.com/articles/130095/images/130095_002.png)

根据连接报错提示，分析结果是需要在节点管理器的/bossapp/domains/bossdomain/config/nodemanager/nm\_password.properties文件中配置控制台登录用户名和密码即可：

![](https://ucloud-blog.cn-bj.ufileos.com/articles/130095/images/130095_003.png)

成功连接：

![](https://ucloud-blog.cn-bj.ufileos.com/articles/130095/images/130095_004.png)

（3）下一步通过nmStart()函数起动被管server

![](https://ucloud-blog.cn-bj.ufileos.com/articles/130095/images/130095_005.png)

![](https://ucloud-blog.cn-bj.ufileos.com/articles/130095/images/130095_006.png)

能起动成功，但是几分钟之后就会报错”<2020-11-1 上午11时00分44秒CST>

Reason: Server isnot in the majority cluster partition>”，

server状态就会转为FAILED状态：

![](https://ucloud-blog.cn-bj.ufileos.com/articles/130095/images/130095_007.png)

![](https://ucloud-blog.cn-bj.ufileos.com/articles/130095/images/130095_008.png)

提SR咨询，未分析到具体原因，但反馈可以使用start()函数起动被管server。

### 探索方式3：通过start()函数起停集群

连接域的步骤同方式2，但不需要执行方式2的第（2）步，否则会报错。

（1）我们通过如下步骤成功的连接到域：

WLS\_HOME="/weblogic/Oracle/Middleware/wlserver\_10.3"

${WLS\_HOME}/common/bin/wlst.sh

connect(weblogic,weblogic!123,t3://192.168.44.61:9001)

![](https://ucloud-blog.cn-bj.ufileos.com/articles/130095/images/130095_009.png)

（2）下一步通过start()函数起动被管server

被管server起动成功：

![](https://ucloud-blog.cn-bj.ufileos.com/articles/130095/images/130095_010.png)

![](https://ucloud-blog.cn-bj.ufileos.com/articles/130095/images/130095_011.png)

![](https://ucloud-blog.cn-bj.ufileos.com/articles/130095/images/130095_012.png)

![](https://ucloud-blog.cn-bj.ufileos.com/articles/130095/images/130095_013.png)

![](https://ucloud-blog.cn-bj.ufileos.com/articles/130095/images/130095_014.png)

state()函数查server状态：

![](https://ucloud-blog.cn-bj.ufileos.com/articles/130095/images/130095_015.png)

shutdown()函数，停server：

![](https://ucloud-blog.cn-bj.ufileos.com/articles/130095/images/130095_016.png)

[

三、总结

]

结果多次尝试探索之后，确认通过start()函数、shutdown()函数、state()函数对被管server起动、停止、查看状态是可行的，然后我们就可将上述函数进行脚本封装。针对AdminServer和节点管理器的起停操作脚本，参考方式1即可。如此，我们即可实现WeblogicJMS消息中间件集群起停平台化操作。