weblogic JMS程序部署及开发

来源:互联网 发布:淘宝女式钱包 编辑:程序博客网 时间:2024/06/07 00:49
经过两天的寻找,终于找到一个好写的较完整的程序,可是没有相关配置描述,兄弟我在网上找的好苦
功夫不负有心人,终于还是让我给配通了
1,创建JMS服务器,如图1(按系统默认配置)
 
2,创建JMS模块,如图2(按系统默认配置)
3,创建连接工厂,如图3,注意起一个JNDI名称,其它用默认配罝
4,创建消息对列,如图3,注意起一个消息对列名,配置时一定要配子模块
 
目标为当前的服务器名
下面的程序是我从网上贴下来的,只是最初的发消息及收消息按照我自己的系统环境修改过的
最后注意,你需要把你自己电脑安装的weblogic下的weblogic.jar导入到你的工程,就要以在eclipse调试收发消息了,当然服务器是需要起动好的。
 
 
下面的程序只需要修改PROVIDER_URL,为你自己的服务器地址
QUEUE 修改成你创建的队列JNDI名子就可以用了。
/**
 *
 */
package com.weasel.jms;
/**
 * @author weasel
 * @create date 2008-9-10
 */
import java.io.BufferedReader;  
import java.io.IOException;  
import java.io.InputStreamReader;  
import java.util.Hashtable;  
 
import javax.jms.BytesMessage;  
import javax.jms.JMSException;  
import javax.jms.MapMessage;  
import javax.jms.ObjectMessage;  
import javax.jms.Queue;  
import javax.jms.QueueConnection;  
import javax.jms.QueueConnectionFactory;  
import javax.jms.QueueSender;  
import javax.jms.QueueSession;  
import javax.jms.Session;  
import javax.jms.StreamMessage;  
import javax.jms.TextMessage;  
import javax.naming.Context;  
import javax.naming.InitialContext;  
import javax.naming.NamingException;  
 
public class QueueSend {  
 
    // Defines the JNDI context factory.  
    public final static String JNDI_FACTORY = "weblogic.jndi.WLInitialContextFactory";  
 
    // Defines the JNDI provider url.  
    public final static String PROVIDER_URL = "t3://localhost:7105";  
 
    // Defines the JMS connection factory for the queue.  
    public final static String JMS_FACTORY = "javax.jms.QueueConnectionFactory";  
 
    // Defines the queue 用的是对应 QUEUE的JNDI名子
    public final static String QUEUE = "testqueue";  
 
    private QueueConnectionFactory qconFactory;  
 
    private QueueConnection qcon;  
 
    private QueueSession qsession;  
 
    private QueueSender qsender;  
 
    private Queue queue;  
 
    private TextMessage msg;  
 
    private StreamMessage sm;  
 
    private BytesMessage bm;  
 
    private MapMessage mm;  
 
    private ObjectMessage om;  
 
    /** 
     * Creates all the necessary objects for sending messages to a JMS queue. 
     *  
     * @param ctx 
     *            JNDI initial context 
     * @param queueName 
     *            name of queue 
     * @exception NamingException 
     *                if operation cannot be performed 
     * @exception JMSException 
     *                if JMS fails to initialize due to internal error 
     */ 
    public void init(Context ctx, String queueName) throws NamingException,  
            JMSException {  
        qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);  
        qcon = qconFactory.createQueueConnection();  
        qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);  
        queue = (Queue) ctx.lookup(queueName);  
        qsender = qsession.createSender(queue);  
 
        msg = qsession.createTextMessage();  
        sm = qsession.createStreamMessage();  
        bm = qsession.createBytesMessage();  
        mm = qsession.createMapMessage();  
        om = qsession.createObjectMessage();  
 
        qcon.start();  
    }  
 
    /** 
     * Sends a message to a JMS queue. 
     *  
     * @param message 
     *            message to be sent 
     * @exception JMSException 
     *                if JMS fails to send message due to internal error 
     */ 
    public void send(String message) throws JMSException {  
        // set TextMessage  
        msg.setText(message);  
 
        // set StreamMessage  
        sm.writeString("xmddl369");  
        sm.writeDouble(23.33);  
 
        // set BytesMessage  
        String name = "xmddl369";  
        byte[] block = name.getBytes();  
        bm.writeBytes(block);  
 
        // set MapMessage  
        mm.setString("name", "xmddl369");  
 
        // set ObjectMessage  
        UserInfo ui = new UserInfo();  
        ui.setName("xmddl369");  
        ui.setAddress("厦门");  
        ui.setAge(100);  
        om.setObject(ui);  
 
        // qsender.send(msg);  
        // qsender.send(sm);  
        // qsender.send(bm);  
        // qsender.send(mm);  
        qsender.send(om);  
    }  
 
    /** 
     * Closes JMS objects. 
     *  
     * @exception JMSException 
     *                if JMS fails to close objects due to internal error 
     */ 
    public void close() throws JMSException {  
        qsender.close();  
        qsession.close();  
        qcon.close();  
    }  
 
    public static void main(String[] args) throws Exception {  
        InitialContext ic = getInitialContext();  
        QueueSend qs = new QueueSend();  
        qs.init(ic, QUEUE);  
        readAndSend(qs);  
        qs.close();  
    }  
 
    private static void readAndSend(QueueSend qs) throws IOException,  
            JMSException {  
        BufferedReader msgStream = new BufferedReader(new InputStreamReader(  
                System.in));  
        String line = null;  
        boolean quitNow = false;  
        do {  
            System.out.print("Enter message (/"quit/" to quit): ");  
            line = msgStream.readLine();  
            if (line != null && line.trim().length() != 0) {  
                qs.send(line);  
                System.out.println("JMS Message Sent: " + line + "/n");  
                quitNow = line.equalsIgnoreCase("quit");  
            }  
        } while (!quitNow);  
 
    }  
 
    private static InitialContext getInitialContext() throws NamingException {  
        Hashtable env = new Hashtable();  
        env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);  
        env.put(Context.PROVIDER_URL, PROVIDER_URL);  
        return new InitialContext(env);  
    }  
==============================================================================================
/**
 *
 */
package com.weasel.jms;
/**
 * @author weasel
 * @create date 2008-9-10
 */
import java.util.Hashtable;  
import javax.jms.BytesMessage;  
import javax.jms.JMSException;  
import javax.jms.MapMessage;  
import javax.jms.Message;  
import javax.jms.MessageListener;  
import javax.jms.ObjectMessage;  
import javax.jms.Queue;  
import javax.jms.QueueConnection;  
import javax.jms.QueueConnectionFactory;  
import javax.jms.QueueReceiver;  
import javax.jms.QueueSession;  
import javax.jms.Session;  
import javax.jms.StreamMessage;  
import javax.jms.TextMessage;  
import javax.naming.Context;  
import javax.naming.InitialContext;  
import javax.naming.NamingException;  
 
/** 
 *  
 * @author Administrator 
 * <pre> 
 *      修改版本:  修改人:  修改日期:  修改内容:  
 * </pre> 
 */ 
public class QueueReceive implements MessageListener {  
    // Defines the JNDI context factory.  
    public final static String JNDI_FACTORY = "weblogic.jndi.WLInitialContextFactory";  
 
    // Defines the JNDI provider url.  
    public final static String PROVIDER_URL = "t3://localhost:7105";  
 
    // Defines the JMS connection factory for the queue.  
    public final static String JMS_FACTORY = "javax.jms.QueueConnectionFactory";  
 
    // Defines the queue 用的是对应 QUEUE的JNDI名子
    public final static String QUEUE = "testqueue";  
 
    private QueueConnectionFactory qconFactory;
 
    private QueueConnection qcon;  
 
    private QueueSession qsession;                                          
 
    private QueueReceiver qreceiver;  
 
    private Queue queue;  
 
    private boolean quit = false;  
 
    /** 
     * Message listener interface. 
     *  
     * @param msg 
     *            message 
     */ 
    public void onMessage(Message msg) {  
        try {  
            String msgText = "";  
            double d = 0;  
 
            if (msg instanceof TextMessage) {  
                msgText = ((TextMessage) msg).getText();  
            } else if (msg instanceof StreamMessage) {  
                msgText = ((StreamMessage) msg).readString();  
                d = ((StreamMessage) msg).readDouble();  
            } else if (msg instanceof BytesMessage) {  
                byte[] block = new byte[1024];  
                ((BytesMessage) msg).readBytes(block);  
                msgText = String.valueOf(block);  
            } else if (msg instanceof MapMessage) {  
                msgText = ((MapMessage) msg).getString("name");  
            } else if (msg instanceof ObjectMessage) {  
                UserInfo ui = (UserInfo) ((ObjectMessage) msg).getObject();  
                msgText = ui.getName();  
                d = ui.getAge();  
            }  
 
            System.out.println("Message Received: " + msgText + "/t" + d);  
 
            if (msgText.equalsIgnoreCase("quit")) {  
                synchronized (this) {  
                    quit = true;  
                    this.notifyAll(); // Notify main thread to quit  
                }  
            }  
        } catch (JMSException jmse) {  
            jmse.printStackTrace();  
        }  
    }  
 
    /** 
     * Creates all the necessary objects for receiving messages from a JMS 
     * queue. 
     *  
     * @param ctx 
     *            JNDI initial context 
     * @param queueName 
     *            name of queue 
     * @exception NamingException 
     *                if operation cannot be performed 
     * @exception JMSException 
     *                if JMS fails to initialize due to internal error 
     */ 
    public void init(Context ctx, String queueName) throws NamingException,  
            JMSException {  
        qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);  
        qcon = qconFactory.createQueueConnection();  
        qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);  
        queue = (Queue) ctx.lookup(queueName);  
        qreceiver = qsession.createReceiver(queue);  
        qreceiver.setMessageListener(this);  
        qcon.start();  
    }  
 
    /** 
     * Closes JMS objects. 
     *  
     * @exception JMSException 
     *                if JMS fails to close objects due to internal error 
     */ 
    public void close() throws JMSException {  
        qreceiver.close();  
        qsession.close();  
        qcon.close();  
    }  
 
    /** 
     * main() method. 
     *  
     * @param args 
     *            WebLogic Server URL 
     * @exception Exception 
     *                if execution fails 
     */ 
 
    public static void main(String[] args) throws Exception {  
 
        InitialContext ic = getInitialContext();  
        QueueReceive qr = new QueueReceive();  
        qr.init(ic, QUEUE);  
 
        System.out  
                .println("JMS Ready To Receive Messages (To quit, send a /"quit/" message).");  
 
        // Wait until a "quit" message has been received.  
        synchronized (qr) {  
            while (!qr.quit) {  
                try {  
                    qr.wait();  
                } catch (InterruptedException ie) {  
                    ie.printStackTrace();  
                }  
            }  
        }  
        qr.close();  
    }  
 
    private static InitialContext getInitialContext() throws NamingException {  
        Hashtable env = new Hashtable();  
        env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);  
        env.put(Context.PROVIDER_URL, PROVIDER_URL);  
        return new InitialContext(env);  
    }  
 
    public String getEncoding() throws Exception {  
        return "Hello World!";  
    }  
 
=========================================================================
/**
 *
 */
package com.weasel.jms;
/**
 * @author weasel
 * @create date 2008-9-10
 */
import java.io.Serializable;
public class UserInfo implements Serializable {
 /**
  *
  */
 private static final long serialVersionUID = 1L;
 private String name;
 private String address;
 private double age;
 public String getAddress() {
  return address;
 }
 public void setAddress(String address) {
  this.address = address;
 }
 public double getAge() {
  return age;
 }
 public void setAge(double age) {
  this.age = age;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
}

原创粉丝点击