如何从Spring Java应用向WebLogic的JMS队列发送消息并配置端口
解决Spring应用向WebLogic特定队列发送消息的配置问题
一、查找WebLogic的JMS连接端口
WebLogic的JMS服务不为单个队列分配独立端口,所有JMS连接都通过目标服务器的监听端口建立,查找方式如下:
- 通过WebLogic控制台查看:
- 登录WebLogic管理控制台
- 左侧域结构中点击「环境」→「服务器」
- 选择部署了目标JMS模块的服务器
- 切换到「监听端口」标签页,记录
tcp协议对应的端口(默认通常为7001,SSL端口默认7002)
- 通过配置文件查看:
找到WebLogic域目录下的config/config.xml,搜索<listen-port>标签,标签内的数值即为服务器监听端口。
二、修改Spring应用配置(替换原有ActiveMQ配置)
原配置针对ActiveMQ设计,连接WebLogic JMS需调整依赖和配置:
1. 添加WebLogic JMS客户端依赖(Maven示例)
<dependency> <groupId>com.oracle.weblogic</groupId> <artifactId>wlfullclient</artifactId> <version>12.2.1.4.0</version> <!-- 需与你的WebLogic版本匹配 --> <scope>provided</scope> <!-- 若WebLogic服务器已内置该依赖,可设为provided --> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jms</artifactId> </dependency>
2. 配置文件替换(application.properties)
# WebLogic JMS连接配置 spring.jms.weblogic.url=tcp://<WebLogic服务器IP>:<上述找到的监听端口> spring.jms.weblogic.user=<WebLogic授权用户名> spring.jms.weblogic.password=<对应密码> # 目标队列的JNDI名称(需从WebLogic控制台获取) spring.jms.template.default-destination=<队列的JNDI名称>
3. 获取队列的JNDI名称
- 登录WebLogic控制台
- 左侧域结构点击「服务」→「消息传递」→「JMS模块」
- 找到你的JMS模块,点击进入后选择目标队列
- 切换到「JNDI」标签页,复制对应的JNDI名称(格式通常为
jms/XXXQueue)
三、发送消息代码示例
import org.springframework.jms.core.JmsTemplate; import org.springframework.stereotype.Component; @Component public class QueueSender { private final JmsTemplate jmsTemplate; // 构造注入JmsTemplate public QueueSender(JmsTemplate jmsTemplate) { this.jmsTemplate = jmsTemplate; } // 发送消息到默认队列 public void sendToDefaultQueue(String content) { jmsTemplate.convertAndSend(content); } // 发送消息到指定队列(传入目标队列JNDI名称) public void sendToSpecificQueue(String queueJndi, String content) { jmsTemplate.convertAndSend(queueJndi, content); } }
注意事项
- 确保WebLogic服务器的监听地址设置为可远程访问的IP(而非仅localhost),否则Spring应用无法连接
- 检查WebLogic用户是否拥有JMS消息发送的权限,可在控制台「安全」→「策略」中配置对应权限
- 客户端依赖版本必须与WebLogic服务器版本一致,避免兼容性问题
内容的提问来源于stack exchange,提问作者Julian Gomez
相关产品推荐
相关产品推荐

