以下是基于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上下文
    }
}

注释:

  1. @Path("/jms"):指定访问该资源的路径为/jms
  2. @POST:指定该资源支持HTTP POST方法。
  3. @Path("/send"):指定访问该资源的路径为/jms/send
  4. @Consumes(MediaType.TEXT_PLAIN):指定该资源接受的请求体类型为文本类型。
  5. public Response sendMessage(String message):定义一个名为sendMessage的方法,该方法接受一个名为message的字符串参数,并返回一个Response对象。
  6. Context ctx = getInitialContext();:获取JNDI上下文。
  7. ConnectionFactory connectionFactory = (ConnectionFactory) ctx.lookup(JMS_FACTORY);:获取JMS连接工厂。
  8. Queue queue = (Queue) ctx.lookup(QUEUE);:获取JMS队列。
  9. Connection connection = connectionFactory.createConnection();:创建JMS连接。
  10. Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);:创建JMS会话。
  11. MessageProducer producer = session.createProducer(queue);:创建JMS消息生产者。
  12. TextMessage textMessage = session.createTextMessage(message);:创建JMS文本消息。
  13. producer.send(textMessage);:发送JMS消息。
  14. connection.close();:关闭JMS连接。
  15. return Response.status(Response.Status.OK).build();:返回成功响应。
  16. return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();:返回错误响应。
  17. private Context getInitialContext() throws NamingException:定义一个名为getInitialContext的私有方法,该方法返回一个JNDI上下文对象。
  18. props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");:指定Weblogic JNDI上下文工厂。
  19. props.setProperty(Context.PROVIDER_URL, "t3://localhost:7001");:指定Weblogic JNDI服务URL。
  20. return new InitialContext(props);:返回JNDI上下文对象
基于Weblogic JMS客户端编写restful的接口代码并提供详细的注释

原文地址: http://www.cveoy.top/t/topic/dcfR 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录