我可以从应用程序服务器外部将消息发送到JMS队列吗?

西蒙·尼克森(Simon Nickerson):

据我了解,需要J2EE容器才能包含JMS提供程序。一个独立的Java应用程序是否可以将消息发送到容器提供的JMS队列?如果是这样,我如何从容器外部访问JNDI查找?

(如果有任何区别,我正在尝试与Geronimo一起使用,但是我希望有一种标准的方法来执行此操作。)

pjp:

您应该能够在Geronimo中创建一个使用JNDI服务器InitialContext然后,您可以使用它来查找JMS连接工厂和队列。

下面的示例改编自http://forums.sun.com/thread.jspa?threadID=5283256以使用Geronimo JNDI Factory。

Context                  jndiContext = null;
ConnectionFactory   connectionFactory = null;
Connection             connection = null;
Session                  session = null;
Queue                    queue = null;
MessageProducer     messageProducer = null;   

try
{
    //[1] Create a JNDI API InitialContext object.
    Hashtable properties = new Hashtable(2);

    // CHANGE these to match Geronimos JNDI service

    properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
    properties.put(Context.PROVIDER_URL, "ejbd://127.0.0.1:4201");
    jndiContext = new InitialContext(properties);

    //[2] Look up connection factory and queue.
    connectionFactory = (ConnectionFactory)jndiContext.lookup("jms/ConnectionFactory");
    queue = (Queue)jndiContext.lookup("jms/Queue");

    //[3]
    // - Create connection
    // - Create session from connection; false means session is not transacted.
    // - Create sender and text message.
    // - Send messages, varying text slightly.
    connection = connectionFactory.createConnection();
    session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    messageProducer = session.createProducer(queue);

   //send a message
   TextMessage message = session.createTextMessage(this.jTextSend.getText()); 
   messageProducer.send(message); 

   //example for send some object
   //ObjectMessage message = session.createObjectMessage();
   //MyObj myObj = new MyObj ("Name"); //this class must be serializable 
   //message.setObject(myObj );
   //messageProducer.send(message);
}
catch(Exception ex)
{
   LOG.error(ex);
}
finally
{
     if(connection !=null)
     {
         try
         {
             connection.close();
         }
         catch(JMSException e)
         {
              LOG.error(e);
         }
     }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

向应用程序发送静默推送通知,更新位置并在后台发送到服务器

如何从我的Android应用程序将JSON对象发送到服务器

我需要将图像文件发送到Clarifai服务器以进行图像分类,但是我不断收到“跳帧,应用程序执行过多工作”

Spring Websocket-从Websocket服务器外部将消息发送到用户目标

尝试将数据从Spring应用程序发送到远程服务器上的mongodb时出错

我可以使用ViewModel将数据发送到服务器吗?

我可以将两个播放器发送到一台专用服务器吗?

在应用程序崩溃时将堆栈跟踪信息从android应用程序发送到后端服务器

我可以直接将打印作业从python程序发送到CUPS打印服务器的IP地址吗?

在android中,我可以从Mozilla将选定的文本发送到我的应用程序吗?

我可以将Intent发送到另一个应用程序吗

Android应用程序将图片发送到Web服务器并且图片旋转

如何将Windows Phone 8应用程序数据发送到服务器

使用生产服务器证书将推送通知发送到开发应用程序

Android应用程序:使用该应用程序将文件发送到服务器

在我的Android购物车应用程序中将JSON数组发送到服务器

如何触发应用程序将数据发送到我的服务器?

如何将OTP从服务器发送到我的android应用程序?

苹果是否允许我们将用户的信用卡信息从应用程序发送到服务器以进行支付?

在 jhipster 应用程序中将 .docx 文件从服务器发送到客户端

通过 HTTP 从 android 应用程序发送到 nodejs 服务器后,我的 JSON 看起来不同

如何在 Ruby on Rails 中将 get 发送到服务器并在我的应用程序中等待 get

将 JMS 消息从 Java EE 应用程序发送到 Java SE 应用程序

如何将应用程序名称发送到身份服务器 4

将命令从服务器发送到 swift 应用程序

如何在 post 方法中将数据从 android 应用程序发送到服务器?

我可以从外部将 json 数据发送到 Mithril 路由吗

是否可以将用户位置从 iOS 应用程序发送到网络服务器?

如何将数据从 Web 服务器发送到另一个应用程序