使用JMS连接到大型机

时间:2009-02-03 10:12:42

标签: java jms mainframe

我们目前正在使用WebSphere MQ从大型机获取数据,有时还面临MQ方面的问题。

我想知道是否存在绕过MQ并使用JMS代替从大型机获取数据的方法。我们使用WebSphere Application Server 6.0.2。

3 个答案:

答案 0 :(得分:3)

很抱歉,JMS只是一个驱动程序接口,而不是队列管理器实现。

在JMS和队列管理器之间,与JDBC和数据库之间存在相同的区别。

LLP,Andrea

答案 1 :(得分:1)

当然,您可以在java端使用JMS,这将最终包装对MQ的调用。您只需要小心邮件标题。 将MQ替换为另一个消息传递基础架构取决于大型机可以与之通信的内容,因为我认为您对此没有多少控制权,对吧?通常选择MQ是因为它得到了IBM大型机系统的支持。

格雷格

答案 2 :(得分:0)

请找到逻辑,

  1. 我们必须使用建立与服务器的连接 ConnectionFactory,连接和会话

  2. 我们需要使用Queue

  3. 创建队列引用
  4. 需要为我们计划使用TextMessage发送到队列的Message创建一个对象

  5. 我们必须创建与Queue交互的对象。这里,MessageProducer用于发送我们在步骤3创建的消息,MessageConsumer用于接收响应

  6. 请查看以下实施代码,

    //Instantiate a Sun Java(tm) System Message Queue ConnectionFactory 
    ConnectionFactory myConnFactory = new com.sun.messaging.ConnectionFactory();
    
    String h = "HOSTNAME";
    String p = "PORTNO";
    
    // Set imqAddressList property
    ((com.sun.messaging.ConnectionFactory)myConnFactory).setProperty(
    com.sun.messaging.ConnectionConfiguration.imqAddressList,
    new StringBuffer().append("mq://").append(h).append(":").append(p).append("/jms").toString());
    
    //Create a connection to the Sun Java(tm) System Message Queue Message Service.
    Connection myConn = myConnFactory.createConnection();
    
    //Start the Connection created in step 3.
    myConn.start();
    
    //Create a session within the connection.
    Session mySess = myConn.createSession(false, Session.AUTO_ACKNOWLEDGE);
    
    //Instantiate a Sun Java(tm) System Message Queue Destination administered object.
    Queue myQueue = new com.sun.messaging.Queue("<MODULENAME>");
    
    //Create a message producer.
    MessageProducer myMsgProducer = mySess.createProducer(myQueue);
    
    //Create and send a message to the queue.
    TextMessage myTextMsg = mySess.createTextMessage();
    myTextMsg.setText("<message>");
    
    System.out.println("Sending Message: " + myTextMsg.getText());
    myMsgProducer.send(myTextMsg);
    
    //Create a message consumer.
    MessageConsumer myMsgConsumer = mySess.createConsumer(myQueue);
    
    //Start the Connection created in step 3.
    myConn.start();
    
    //Receive a message from the queue.
    Message msg = myMsgConsumer.receive();
    
    //Retreive the contents of the message.
    if (msg instanceof TextMessage) {
    TextMessage txtMsg = (TextMessage) msg;
    System.out.println("Read Message: " + txtMsg.getText());
    }
    
    //Close the session and connection resources.
    mySess.close();
    myConn.close();