WebLogic在Ubuntu上的JMS队列如何管理
导读:WebLogic在Ubuntu上的JMS队列管理指南 一、前置准备:Ubuntu环境配置 在Ubuntu上管理WebLogic的JMS队列前,需完成以下基础准备: 安装WebLogic Server:通过Oracle官方安装包在Ubunt...
WebLogic在Ubuntu上的JMS队列管理指南
一、前置准备:Ubuntu环境配置
在Ubuntu上管理WebLogic的JMS队列前,需完成以下基础准备:
- 安装WebLogic Server:通过Oracle官方安装包在Ubuntu上部署WebLogic Domain(建议选择“典型安装”模式,简化配置流程)。
- 启动WebLogic服务:使用
./startWebLogic.sh
脚本启动Domain的AdminServer,确保服务正常运行(可通过http://< Ubuntu_IP> :7001/console
访问管理控制台)。 - 配置JDK环境:WebLogic依赖JDK 8或更高版本,需提前安装并配置
JAVA_HOME
环境变量(如export JAVA_HOME=/usr/lib/jvm/java-8-oracle
)。
二、JMS队列管理核心步骤
1. 配置持久化存储(必选)
持久化存储是JMS队列消息落地的关键,Ubuntu环境下推荐File Store(单节点)或JDBC Store(集群):
- File Store配置(适用于单节点):
- 登录WebLogic控制台,导航至Services → JDBC → Persistent Stores。
- 点击“New”,选择“File Store”,输入Name(如
MyFileStore
)。 - 指定Directory(如
/u01/weblogic/jms_store
,需提前创建目录并赋予WebLogic用户读写权限:chown -R weblogic:weblogic /u01/weblogic/jms_store
)。 - 点击“Finish”完成配置。
- JDBC Store配置(适用于集群):
- 先创建JDBC数据源(如
jdbc/JmsDataSource
),指向Ubuntu上的数据库(如MySQL、Oracle)。 - 导航至Persistent Stores → New → JDBC Store,选择上述数据源,设置Table Prefix(如
WLS_JMS_STORE
)。 - 绑定到集群中的多个Managed Server,确保高可用。
- 先创建JDBC数据源(如
2. 创建JMS服务器
JMS服务器是管理队列、主题的容器:
- 导航至Services → Messaging → JMS Servers,点击“New”。
- 输入Name(如
MyJMSServer
),选择上一步创建的Persistent Store(如MyFileStore
)。 - 点击“Next”,选择目标服务器(单节点选
AdminServer
,集群选对应的Managed Server)。 - 点击“Finish”完成创建。
3. 配置JMS模块与子部署
JMS模块是队列、连接工厂等资源的逻辑容器,子部署用于将资源关联到具体服务器:
- 导航至Services → Messaging → JMS Modules,点击“New”。
- 输入Name(如
MyJMSModule
),选择目标JMS服务器(如MyJMSServer
)。 - 点击“Finish”创建模块。
- 进入JMS模块详情,点击“Subdeployments → New”:
- 输入Name(如
MySubdeployment
)。 - 选择目标服务器(如
AdminServer
或集群中的Managed Server),切勿选择AdminServer作为子部署目标(避免单点故障)。 - 点击“Finish”完成子部署。
- 输入Name(如
4. 创建JMS队列(核心操作)
队列用于**点对点(PTP)**消息模型,以下是详细步骤:
- 进入上一步创建的JMS模块(如
MyJMSModule
),点击“New → Queue”。 - 输入Name(如
MyQueue
),JNDI Name(如jms/MyQueue
,需全局唯一,应用程序通过此名称查找队列)。 - 点击“Next”,选择已创建的Subdeployment(如
MySubdeployment
)。 - 点击“Finish”完成队列创建。
5. 创建连接工厂(客户端必备)
连接工厂用于客户端获取JMS连接,需与队列关联:
- 进入JMS模块(如
MyJMSModule
),点击“New → Connection Factory”。 - 输入Name(如
MyConnectionFactory
),JNDI Name(如jms/MyConnectionFactory
,需唯一)。 - 点击“Next”,选择目标服务器(如
AdminServer
或集群)。 - 点击“Finish”完成创建。
三、JMS队列管理操作
1. 查看与编辑队列
- 查看队列:在JMS模块详情页,点击“Queues”标签,可查看所有队列的状态(如“Running”“Stopped”)、消息数量等。
- 编辑队列:选中队列后点击“Edit”,可修改JNDI Name、子部署目标、消息选择器(Selector)等属性。
2. 删除队列
- 进入JMS模块的“Queues”标签,选中目标队列。
- 点击“Delete”,确认后即可删除队列(注意:删除前需确保队列无未消费消息,否则可能导致数据丢失)。
3. 监控队列状态
通过控制台的“Monitoring”标签,可实时查看队列的关键指标:
- Messages Pending:待处理消息数。
- Messages Current:当前队列中的消息总数。
- Consumers Current:当前消费者数量。
- Pending User Messages:用户待处理消息数(排除系统消息)。
四、客户端连接与测试(Ubuntu环境)
在Ubuntu上编写Java客户端代码,通过JNDI查找队列并发送/接收消息:
import javax.jms.*;
import javax.naming.*;
import java.util.Hashtable;
public class JMSQueueTest {
public static void main(String[] args) throws Exception {
// 1. 配置JNDI环境
Hashtable<
String, String>
env = new Hashtable<
>
();
env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
env.put(Context.PROVIDER_URL, "t3://<
Ubuntu_IP>
:7001");
// 替换为Ubuntu服务器IP
env.put(Context.SECURITY_PRINCIPAL, "weblogic");
// WebLogic管理员用户名
env.put(Context.SECURITY_CREDENTIALS, "welcome1");
// WebLogic管理员密码
// 2. 获取初始上下文
Context ctx = new InitialContext(env);
// 3. 查找连接工厂和队列
ConnectionFactory cf = (ConnectionFactory) ctx.lookup("jms/MyConnectionFactory");
Queue queue = (Queue) ctx.lookup("jms/MyQueue");
// 4. 创建连接与会话
Connection conn = cf.createConnection();
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 5. 创建生产者并发送消息
MessageProducer producer = session.createProducer(queue);
TextMessage message = session.createTextMessage("Hello, WebLogic JMS on Ubuntu!");
producer.send(message);
System.out.println("Message sent: " + message.getText());
// 6. 创建消费者并接收消息
MessageConsumer consumer = session.createConsumer(queue);
conn.start();
TextMessage receivedMsg = (TextMessage) consumer.receive(5000);
// 等待5秒
if (receivedMsg != null) {
System.out.println("Message received: " + receivedMsg.getText());
}
else {
System.out.println("No message received.");
}
// 7. 关闭资源
consumer.close();
producer.close();
session.close();
conn.close();
}
}
注意事项:
- 替换
< Ubuntu_IP>
为实际服务器IP。 - 确保Ubuntu防火墙开放7001端口(
sudo ufw allow 7001/tcp
)。 - 客户端需添加WebLogic客户端库(
wlthint3client.jar
)到classpath(路径通常为< WebLogic_Home> /wlserver/server/lib
)。
五、常见问题排查
- JNDI查找失败:检查JNDI Name是否拼写正确,控制台“Services → Messaging → JMS Modules”中确认队列是否存在。
- 连接拒绝:检查WebLogic服务是否启动(
ps -ef | grep weblogic
),PROVIDER_URL
是否正确,防火墙是否放行端口。 - 权限不足:确保客户端使用的用户(如
weblogic
)具有JMS资源的访问权限(控制台→Security Realms→myrealm→Roles and Policies)。
通过以上步骤,可在Ubuntu上完成WebLogic JMS队列的全生命周期管理,满足企业级异步消息需求。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: WebLogic在Ubuntu上的JMS队列如何管理
本文地址: https://pptw.com/jishu/716475.html