Weblogic JMS 客户端 RESTful 接口代码示例 - 使用 Java 发送消息
以下是基于 Weblogic JMS 客户端编写 RESTful 的接口代码,并提供详细的注释:
import javax.jms.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.Properties;
@Path("/jms")
public class JMSResource {
private static final String JMS_FACTORY = "jms/ConnectionFactory"; // JMS 连接工厂的 JNDI 名称
private static final String QUEUE = "jms/Queue"; // JMS 队列的 JNDI 名称
@POST
@Path("/send")
@Consumes(MediaType.TEXT_PLAIN)
public Response sendMessage(String message) {
try {
Context ctx = getInitialContext(); // 获取 JNDI 上下文
ConnectionFactory connectionFactory = (ConnectionFactory) ctx.lookup(JMS_FACTORY); // 获取 JMS 连接工厂
Queue queue = (Queue) ctx.lookup(QUEUE); // 获取 JMS 队列
Connection connection = connectionFactory.createConnection(); // 创建 JMS 连接
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 创建 JMS 会话
MessageProducer producer = session.createProducer(queue); // 创建 JMS 消息生产者
TextMessage textMessage = session.createTextMessage(message); // 创建 JMS 文本消息
producer.send(textMessage); // 发送 JMS 消息
connection.close(); // 关闭 JMS 连接
return Response.status(Response.Status.OK).build(); // 返回成功响应
} catch (NamingException | JMSException e) {
e.printStackTrace();
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); // 返回错误响应
}
}
private Context getInitialContext() throws NamingException {
Properties props = new Properties();
props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); // 指定 Weblogic JNDI 上下文工厂
props.setProperty(Context.PROVIDER_URL, "t3://localhost:7001"); // 指定 Weblogic JNDI 服务 URL
return new InitialContext(props); // 返回 JNDI 上下文
}
}
注释:
@Path("/jms"):指定访问该资源的路径为/jms。@POST:指定该资源支持 HTTP POST 方法。@Path("/send"):指定访问该资源的路径为/jms/send。@Consumes(MediaType.TEXT_PLAIN):指定该资源接受的请求体类型为文本类型。public Response sendMessage(String message):定义一个名为sendMessage的方法,该方法接受一个名为message的字符串参数,并返回一个Response对象。Context ctx = getInitialContext();:获取 JNDI 上下文。ConnectionFactory connectionFactory = (ConnectionFactory) ctx.lookup(JMS_FACTORY);:获取 JMS 连接工厂。Queue queue = (Queue) ctx.lookup(QUEUE);:获取 JMS 队列。Connection connection = connectionFactory.createConnection();:创建 JMS 连接。Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);:创建 JMS 会话。MessageProducer producer = session.createProducer(queue);:创建 JMS 消息生产者。TextMessage textMessage = session.createTextMessage(message);:创建 JMS 文本消息。producer.send(textMessage);:发送 JMS 消息。connection.close();:关闭 JMS 连接。return Response.status(Response.Status.OK).build();:返回成功响应。return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();:返回错误响应。private Context getInitialContext() throws NamingException:定义一个名为getInitialContext的私有方法,该方法返回一个 JNDI 上下文对象。props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");:指定 Weblogic JNDI 上下文工厂。props.setProperty(Context.PROVIDER_URL, "t3://localhost:7001");:指定 Weblogic JNDI 服务 URL。return new InitialContext(props);:返回 JNDI 上下文对象。
原文地址: http://www.cveoy.top/t/topic/kzvJ 著作权归作者所有。请勿转载和采集!