1. 程式人生 > >weblogic 與jms事例配置

weblogic 與jms事例配置

als light ati table ram val 事先 else if null

1.在WEBLOGIC12中配置JMS服務器

參考鏈接:http://blog.csdn.net/gxlstone/article/details/41378949

2.創建java project編寫測試代碼

(1) 創建一個java project(不是web項目)

(2) 將weblogic安裝目錄中的wlclient.jar加入classpath中(註意:weblogic老版本的話使用weblogic.jar), 具體路徑:$Weblogic_HOME\wlserver_10.3\server\lib。

(3) 需要將javaee.jar加入到classpath,因為我們建的是java project項目,不會自動添加javaee包。註意:從官網下載javaee sdk,安裝後lib中有這個包。

package com.jms;

import java.util.Hashtable;  

import javax.jms.JMSException;  
import javax.jms.Message;  
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.TextMessage;
import javax.naming.Context;  
import javax.naming.InitialContext;  
import javax.naming.NamingException;

  
//生產者   
public class JMSSender {  
	public static final String JNDI_FACTORY = "weblogic.jndi.WLInitialContextFactory";
	private static QueueConnectionFactory qconFactory;
	private static QueueConnection qcon;
	private static QueueSession qsession;
	private static QueueSender qsender;
	private static Queue queue;
	private static TextMessage msg;
	public static void init() throws NamingException, JMSException {
		   //init JNDI context  
        String JNDIFactory = "weblogic.jndi.WLInitialContextFactory";//define JNDI context factory  
        String providerUrl = "t3://localhost:7001"; //define weblogic JMS url  
        Hashtable env = new Hashtable();  
        env.put(Context.INITIAL_CONTEXT_FACTORY, JNDIFactory);  
        env.put(Context.PROVIDER_URL, providerUrl);  
        Context ctx = new InitialContext(env);  
        String queueName = "SevenQueue";//生成者隊列
        String connFactoryJNDI = "myJMSConnectionFactory";//工廠
		//獲取一個JMS連接工廠是為了獲取與服務器的連接。前題是這個JMS工廠一定要事先創建好,註:查詢的是連接工廠的JNDI的名字,不是連接工廠的名字。
		qconFactory = ((QueueConnectionFactory) ctx.lookup(connFactoryJNDI));
		//  創建一個列隊或主題連接是為了獲取與JMS會話的Session 	
		qcon = qconFactory.createQueueConnection();
		// 創建會話Session 是為了創建一個消息的發送者和發送內容類型。
		qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
		//創建一個列隊來存儲消息,是消息的存方的物理地址,前題是這個隊列需要在weblogic裏創建後。
		queue = ((Queue) ctx.lookup(queueName));
		///創建一個消息的發送者
		qsender = qsession.createSender(queue);
		//創建一個發送內容類型(Stream,byte,map,text,object)。
		msg = qsession.createTextMessage();//一個字符串對象
		//打開連接,設置發送文本內容。
		qcon.start();
		ctx = null;
	}

	public static void send(String message) throws JMSException {
		msg.setText(message);//設置發送內容
		qsender.send(msg);
	}
	public static void close() throws JMSException {
		if (qsender != null) {
			qsender.close();
		}
		if (qsession != null) {
			qsession.close();
		}
		if (qcon != null)
			qcon.close();
	}
    /** 
     * @param args 
     * @throws NamingException  
     * @throws JMSException  
     */  
    public static void main(String[] args) throws NamingException, JMSException {  
       init();
       send("haha");
       close();
    }  
  
}  

  

package com.jms;

import java.util.Hashtable;
import java.util.Map;

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;

import org.dom4j.Element;

import com.utils.BASE64;
import com.utils.XmlHelper;  
  
//消費者  
public class JMSReceiver {  
    public static void main(String[] args) throws NamingException, JMSException {  
       
    	//init JNDI context  
        String JNDIFactory = "weblogic.jndi.WLInitialContextFactory";//define JNDI context factory  
        String providerUrl = "t3://localhost:7001"; //define weblogic JMS url  
        Hashtable env = new Hashtable();  
        env.put(Context.INITIAL_CONTEXT_FACTORY, JNDIFactory);  
        env.put(Context.PROVIDER_URL, providerUrl);  
        Context ctx = new InitialContext(env);  
          
        //find connection factory  
        String connFactoryJNDI = "myJMSConnectionFactory"; //jms connectionFactory JNDI name  
        QueueConnectionFactory connFactory = (QueueConnectionFactory) ctx.lookup(connFactoryJNDI);  
        //create queue connection  
        QueueConnection qConn = (QueueConnection) connFactory.createConnection();  
        //create session  
        QueueSession qSession = qConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);  
        //find queue by JNDI lookup  
        Queue queue = (Queue) ctx.lookup("SevenQueue");  
          
        //create receiver  
        QueueReceiver qReceiver = qSession.createReceiver(queue);  
        //create message listener  
        qReceiver.setMessageListener(new MessageListener() {  
  
            public void onMessage(Message msg) {  
            	
                String msgText = "";  
                double d = 0;  
                 try {  
                    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");     
                        }   
                	
                } catch (JMSException e) {  
                    // TODO Auto-generated catch block  
                    e.printStackTrace();  
                }    
                  
                System.out.println(msgText + " " + d);  
            }});  
  
        qConn.start();  
          
    }  
      
}  

  

weblogic 與jms事例配置