隨筆-109  評論-187  文章-25  trackbacks-0
            2007年8月15日
          利用免費的英語角把英語練好

          北京  也樂英語為了滿足廣大英語愛好者的需要特推出周末免費英語角服務,

          北京英語角的組織形式如下:

              1:由也樂英語派出一名外教和一名助理負責組織英語角的活動。

              2: 英語角每周組織一次活動,也樂英語培訓學校提供一間教室為大家的活動場所。

              3:英語愛好者可以免費參加英語角的活動,不收取任何費用,此活動是公益活動,也樂英

          語不收取任何費用,也不限制參加次數。

              4:也樂英語免費提供給英語愛好者茶水、咖啡、以及活動所采用的書籍報紙。

              5:每周一到2個話題,由外教提前一周告訴大家,大家可以簡單準備,以便在課堂上
                  跟外教以及同學交流。
             
              6:外教會糾正大家的發音、語法、詞匯上的錯誤,會形成一些總結,也希望大家能夠暢所

          欲言,大膽的說英語。

               7:所有參加英語角的愛好者,請您在交流期間把手機調為靜音。

               也樂英語地址:北京豐臺區馬家堡西路15號 時代風帆大廈2區1901
               交通狀況:地鐵四號線角門西站A口上樓即可。 51、501、54、529、698、646、707 嘉園

          二里東門下車
               聯系電話:010-58423871  15330275871

                此活動由于報名數量眾多,所以需要大家提前預約。
                也樂英語網站:www.yellenglish.com
                也樂英語 爭做北京最好的英語角.
          posted @ 2011-06-19 09:35 小小程序程序員混口飯吃 閱讀(2137) | 評論 (0)編輯 收藏
          我認為最大的沖擊莫過于 惠普,oracle跟惠普的直接競爭會加大,從合作變為競爭,我認為惠普如果不收購redhat來對抗,未來肯定落下風!
          posted @ 2009-04-22 09:56 小小程序程序員混口飯吃 閱讀(644) | 評論 (0)編輯 收藏
               摘要: 上篇文章講述了jacorb 的配置,本章講敘其應用,隨后的幾篇文章會重點講述corba的開發   JACORB開發以及corba的請求方式:    JacORB的應用開發一般分為以下五步: 1.寫IDL接口定義 2.編譯IDL接口定義生成Java類 3.實現步驟2中生成的接口 4.寫服務器啟動類,并注冊到ORB 5.寫客戶端去獲取服務對象引用 &nb...  閱讀全文
          posted @ 2007-11-22 10:41 小小程序程序員混口飯吃 閱讀(8315) | 評論 (2)編輯 收藏

                             how to setup jacorb dev env
          1:download JacORB_2_2

                 http://www.jacorb.org/download.html
            download ant
                 http://ant.apache.org/bindownload.cgi

          2:extact JacORB_2_2.jar to d:\JacORB_2_2

          3:setup sys environment

                 set ANT_HOME=
                 set JAVA_HOME=
                 set JACORB_HOME=d:\JacORB_2_2
                 set PATH=%PATH%;%ANT_HOME%\bin;%JAVA_HOME%\bin;%JACORB_HOME%\bin;
                 set CLASSPAHT=.;%CLASSPAHT%;%ANT_HOME%\lib\ant.jar;%JACORB_HOME%\lib\jarorb.jar;%JACORB_HOME%\lib\idl.jar\;%JACORB_HOME%\lib\logkit-1.2.jar

          4:rename %JACORB_HOME%\etc\jacorb_properties.template to %JACORB_HOME%\etc\jacorb.properties
            and modify the 50th line to 53th line to
           
                 #ORBInitRef.NameService=file:/y:/nsiona.ref
                
          ORBInitRef.NameService=file://d://test//NS_Ref
                
          #ORBInitRef.NameService=http://www.x.y.z/~user/NS_Ref
                
          #ORBInitRef.TradingService=http://www.x.y.z/~user/TraderRef
           
            modify 618th line to
                 jacorb.naming.ior_filename=d://test//NS_Ref

          5:rename  %JACORB_HOME%\jacotemplate.bat to %JACORB_HOME%\jaco.bat
           
            and modify related env variable
           
            rename   %JACORB_HOME%\idltemplate.bat to %JACORB_HOME%\idl.bat
            
            and modify related env variable

           

          6:  use ant compile and build idl and java


               cd  %JACORB_HOME%\demo\grid  

               run ant
             
               the generate class file in %JACORB_HOME%\classes  and generated java file in %JACORB_HOME%\demo\grid


          7: open a new cmd window:
                    cd %JACORB_HOME%   ns
           
             you can see the following result:   
                 [ configuration jacorb loaded from file %JAORB_HOME%\etc\jacorb.properties]

             open a new cmd window:
                    cd %JACORB_HOME%   jaco demo.grid.Server
            you can see the following result:   
            [ configuration jacorb loaded from file %JAORB_HOME%\etc\jacorb.properties]
            
            open a new cmd window:
                    cd %JACORB_HOME%   jaco demo.grid.client
              you can see the following result:   
           
            [ configuration jacorb loaded from file D:\work\nj\JACORB\etc\jacorb.properties]
             Height = 31
             Width = 14
             Old value at (30,13): 0.21
             Setting (30,13) to 470.11
             New value at (30,13): 470.11
             MyException, reason: This is only a test exception, no harm done :-)
             done.

          posted @ 2007-11-21 10:36 小小程序程序員混口飯吃 閱讀(4264) | 評論 (4)編輯 收藏
           
          oracle的分析函數over 及開窗函數
          一:分析函數over
          Oracle從8.1.6開始提供分析函數,分析函數用于計算基于組的某種聚合值,它和聚合函數的不同之處是
          對于每個組返回多行,而聚合函數對于每個組只返回一行。
          下面通過幾個例子來說明其應用。                                       
          1:統計某商店的營業額。        
               date       sale
               1           20
               2           15
               3           14
               4           18
               5           30
              規則:按天統計:每天都統計前面幾天的總額
              得到的結果:
              DATE   SALE       SUM
              ----- -------- ------
              1      20        20           --1天           
              2      15        35           --1天+2天           
              3      14        49           --1天+2天+3天           
              4      18        67            .          
              5      30        97            .
               
          2:統計各班成績第一名的同學信息
              NAME   CLASS S                         
              ----- ----- ----------------------
              fda    1      80                     
              ffd    1      78                     
              dss    1      95                     
              cfe    2      74                     
              gds    2      92                     
              gf     3      99                     
              ddd    3      99                     
              adf    3      45                     
              asdf   3      55                     
              3dd    3      78              
             
              通過:   
              --
              select * from                                                                       
              (                                                                            
              select name,class,s,rank()over(partition by class order by s desc) mm from t2
              )                                                                            
              where mm=1
              --
              得到結果:
              NAME   CLASS S                       MM                                                                                        
              ----- ----- ---------------------- ----------------------
              dss    1      95                      1                      
              gds    2      92                      1                      
              gf     3      99                      1                      
              ddd    3      99                      1          
             
              注意:
              1.在求第一名成績的時候,不能用row_number(),因為如果同班有兩個并列第一,row_number()只返回一個結果          
              2.rank()和dense_rank()的區別是:
                --rank()是跳躍排序,有兩個第二名時接下來就是第四名
                --dense_rank()l是連續排序,有兩個第二名時仍然跟著第三名
               
               
          3.分類統計 (并顯示信息)
              A   B   C                      
              -- -- ----------------------
              m   a   2                      
              n   a   3                      
              m   a   2                      
              n   b   2                      
              n   b   1                      
              x   b   3                      
              x   b   2                      
              x   b   4                      
              h   b   3
             select a,c,sum(c)over(partition by a) from t2                
             得到結果:
             A   B   C        SUM(C)OVER(PARTITIONBYA)      
             -- -- ------- ------------------------
             h   b   3        3                        
             m   a   2        4                        
             m   a   2        4                        
             n   a   3        6                        
             n   b   2        6                        
             n   b   1        6                        
             x   b   3        9                        
             x   b   2        9                        
             x   b   4        9                        
            
             如果用sum,group by 則只能得到
             A   SUM(C)                            
             -- ----------------------
             h   3                      
             m   4                      
             n   6                      
             x   9                      
             無法得到B列值       
            
          =====

          select * from test

          數據:
          A B C
          1 1 1
          1 2 2
          1 3 3
          2 2 5
          3 4 6


          ---將B欄位值相同的對應的C 欄位值加總
          select a,b,c, SUM(C) OVER (PARTITION BY B) C_Sum
          from test

          A B C C_SUM
          1 1 1 1
          1 2 2 7
          2 2 5 7
          1 3 3 3
          3 4 6 6



          ---如果不需要已某個欄位的值分割,那就要用 null

          eg: 就是將C的欄位值summary 放在每行后面

          select a,b,c, SUM(C) OVER (PARTITION BY null) C_Sum
          from test

          A B C C_SUM
          1 1 1 17
          1 2 2 17
          1 3 3 17
          2 2 5 17
          3 4 6 17

           

          求個人工資占部門工資的百分比

          SQL> select * from salary;

          NAME DEPT SAL
          ---------- ---- -----
          a 10 2000
          b 10 3000
          c 10 5000
          d 20 4000

          SQL> select name,dept,sal,sal*100/sum(sal) over(partition by dept) percent from salary;

          NAME DEPT SAL PERCENT
          ---------- ---- ----- ----------
          a 10 2000 20
          b 10 3000 30
          c 10 5000 50
          d 20 4000 100

          二:開窗函數           
                開窗函數指定了分析函數工作的數據窗口大小,這個數據窗口大小可能會隨著行的變化而變化,舉例如下:
          1:     
             over(order by salary) 按照salary排序進行累計,order by是個默認的開窗函數
             over(partition by deptno)按照部門分區
          2:
            over(order by salary range between 5 preceding and 5 following)
             每行對應的數據窗口是之前行幅度值不超過5,之后行幅度值不超過5
             例如:對于以下列
               aa
               1
               2
               2
               2
               3
               4
               5
               6
               7
               9
             
             sum(aa)over(order by aa range between 2 preceding and 2 following)
             得出的結果是
                      AA                       SUM
                      ---------------------- -------------------------------------------------------
                      1                       10                                                      
                      2                       14                                                      
                      2                       14                                                      
                      2                       14                                                      
                      3                       18                                                      
                      4                       18                                                      
                      5                       22                                                      
                      6                       18                                                                
                      7                       22                                                                
                      9                       9                                                                 
                       
             就是說,對于aa=5的一行 ,sum為   5-1<=aa<=5+2 的和
             對于aa=2來說 ,sum=1+2+2+2+3+4=14     ;
             又如 對于aa=9 ,9-1<=aa<=9+2 只有9一個數,所以sum=9    ;
                        
          3:其它:
               over(order by salary rows between 2 preceding and 4 following)
                    每行對應的數據窗口是之前2行,之后4行
          4:下面三條語句等效:           
               over(order by salary rows between unbounded preceding and unbounded following)
                    每行對應的數據窗口是從第一行到最后一行,等效:
               over(order by salary range between unbounded preceding and unbounded following)
                     等效
               over(partition by null)
          posted @ 2007-11-13 13:33 小小程序程序員混口飯吃 閱讀(50041) | 評論 (13)編輯 收藏

          由于一些原因,最近要復習一些東西,所以就把JMS的東西再復習一遍,以下便是例子

          jms 中最重要的幾個概念destination,ACKNOWLEDGE,subscribe,durable subscribe

          destination:topic queque
            queue簡單點說就是1:1 一個消息只能由一個consumer去消費,別的consumer來消費的時候已經沒了,先到先得
          topic簡單點說就是1:N 一個消息可以由多個consumer來消費,誰來消費都有
           subscribe,拿topic來說如果當前訂閱不是持久訂閱,只有再訂閱后生產者生產得消息才能被consumer得到,持久訂閱只要沒有被consumer消費,早晚會消費這個消息
           
           
           
           一下是幾個例子
           
           queuesend:queque消息產生
           queuereceive:queque消息得消費
           topicsend :topic消息得產生
           topicreceive1:topic消息的非訂閱
           topicrecieve2:topic消息的持久訂閱
           
           這個例子實在WEBLOGIC814上測試過的,當然要定義JMSSERVER,FACTORY,DESTINATION。
           
           
           
           QueueSend
           
           import java.io.BufferedReader;
          import java.io.IOException;
          import java.io.InputStreamReader;
          import java.util.Hashtable;

          import javax.jms.JMSException;
          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 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:7001";

           // Defines the JMS connection factory for the queue.
           public final static String JMS_FACTORY = "SendJMSFactory";

           // Defines the queue.
           public final static String QUEUE = "SendJMSQueue";

           private QueueConnectionFactory qconFactory;

           private QueueConnection qcon;

           private QueueSession qsession;

           private QueueSender qsender;

           private Queue queue;

           private TextMessage msg;

           /**
            * 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();
            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 {
            msg.setText(message);
            qsender.send(msg);
           }

           /**
            * 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();
           }

           /**
            * main() method.
            *
            * @param args
            *            WebLogic Server URL
            * @exception Exception
            *                if operation fails
            */
           public static void main(String[] args) throws Exception {
            try {
             InitialContext ic = getInitialContext();
             QueueSend qs = new QueueSend();
             qs.init(ic, QUEUE);
             readAndSend(qs);
             qs.close();
            } catch (Exception e) {
             e.printStackTrace();
            }
           }

           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);
           }

          }


          QueueReceive

          import java.util.Hashtable;

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

          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:7001";

           // Defines the JMS connection factory for the queue.
           public final static String JMS_FACTORY = "SendJMSFactory";

           // Defines the queue.
           public final static String QUEUE = "SendJMSQueue";

           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;
             if (msg instanceof TextMessage) {
              msgText = ((TextMessage) msg).getText();
             } else {
              msgText = msg.toString();
             }

             System.out.println("Message Received: " + msgText);

          //   if (msgText.equalsIgnoreCase("123")) {
          //    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) {
             System.out.println("111111111111");
             while (!qr.quit) {
              try {
               System.out.println("2222222222");
               qr.wait();
               System.out.println("333333333");
              } catch (InterruptedException ie) {
              }
             }
            }
            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);
           }

          }

           

          TopicSend

          import java.io.BufferedReader;
          import java.io.IOException;
          import java.io.InputStreamReader;
          import java.util.Hashtable;

          import javax.jms.JMSException;
          import javax.jms.Session;
          import javax.jms.TextMessage;
          import javax.jms.Topic;
          import javax.jms.TopicConnection;
          import javax.jms.TopicConnectionFactory;
          import javax.jms.TopicSession;
          import javax.naming.Context;
          import javax.naming.InitialContext;
          import javax.naming.NamingException;
          import javax.jms.TopicPublisher;
          public class TopicSend {
           // 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:7001";

           // Defines the JMS connection factory for the queue.
           public final static String JMS_FACTORY = "SendJMSFactory";

           // Defines the queue.
           public final static String TOPIC = "SendJMSTopic";

           private TopicConnectionFactory tconFactory;

           private TopicConnection tcon;

           private TopicSession tsession;

           private TopicPublisher tsender;

           private Topic topic;

           private TextMessage msg;
           public static InitialContext ic ;

           /**
            * 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 {
            tconFactory = (TopicConnectionFactory) ctx.lookup(JMS_FACTORY);
            tcon = tconFactory.createTopicConnection();
            tsession = tcon.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
            System.out.println(topic);
            topic = (Topic) ctx.lookup(queueName);
            System.out.println(topic);
            tsender = tsession.createPublisher(topic);
            msg = tsession.createTextMessage();
            tcon.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 ,NamingException{
            System.out.println(topic+"-----------");
            msg.setText(message);
            tsender.publish(msg);
           }

           /**
            * Closes JMS objects.
            *
            * @exception JMSException
            *                if JMS fails to close objects due to internal error
            */
           public void close() throws JMSException {
            tsender.close();
            tsession.close();
            tcon.close();
           }

           /**
            * main() method.
            *
            * @param args
            *            WebLogic Server URL
            * @exception Exception
            *                if operation fails
            */
           public static void main(String[] args) throws Exception {
            try {
             ic= getInitialContext();
             TopicSend ts = new TopicSend();
             ts.init(ic, TOPIC);
             readAndSend(ts);
             ts.close();
            } catch (Exception e) {
             e.printStackTrace();
            }
           }

           private static void readAndSend(TopicSend ts) throws IOException,
             JMSException,NamingException {
            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) {
              ts.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);
           }

          }

           

          TopicReceive1

          import java.util.Hashtable;

          import javax.jms.JMSException;
          import javax.jms.Message;
          import javax.jms.MessageListener;
          import javax.jms.Session;
          import javax.jms.TextMessage;
          import javax.jms.Topic;
          import javax.jms.TopicConnection;
          import javax.jms.TopicConnectionFactory;
          import javax.jms.TopicSession;
          import javax.jms.TopicSubscriber;
          import javax.naming.Context;
          import javax.naming.InitialContext;
          import javax.naming.NamingException;


          public class TopicReceive1 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:7001";

           // Defines the JMS connection factory for the queue.
           public final static String JMS_FACTORY = "SendJMSFactory";

           // Defines the queue.
           public final static String TOPIC = "SendJMSTopic";

           private TopicConnectionFactory tconFactory;

           private TopicConnection tcon;

           private TopicSession tsession;

           private TopicSubscriber tsubscriber;

           private Topic topic;

           private boolean quit = false;

           /**
            * Message listener interface.
            *
            * @param msg
            *            message
            */
           public void onMessage(Message msg) {
            System.out.println("===================");
            try {
             String msgText;
             if (msg instanceof TextMessage) {
              msgText = ((TextMessage) msg).getText();
             } else {
              msgText = msg.toString();
             }

             System.out.println("Message Received: " + msgText);

          //   if (msgText.equalsIgnoreCase("123")) {
          //    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 {
            tconFactory = (TopicConnectionFactory) ctx.lookup(JMS_FACTORY);
            tcon = tconFactory.createTopicConnection();
            tsession = tcon.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
            topic = (Topic) ctx.lookup(queueName);
            tsubscriber = tsession.createSubscriber(topic);
            //System.out.println("12");
            //Message msg = treceiver.receive();
            //msg.acknowledge();
            //tsubscriber = tsession.createSubscriber(topic);Message msg = tsubscriber.receive();msg.acknowledge();
            //System.out.println(msg);
            tsubscriber.setMessageListener(this);
            tcon.start();
           }

           /**
            * Closes JMS objects.
            *
            * @exception JMSException
            *                if JMS fails to close objects due to internal error
            */
           public void close() throws JMSException {
            tsubscriber.close();
            tsession.close();
            tcon.close();
           }

           /**
            * main() method.
            *
            * @param args
            *            WebLogic Server URL
            * @exception Exception
            *                if execution fails
            */

           public static void main(String[] args) throws Exception {

            InitialContext ic = getInitialContext();
            TopicReceive1 tr1 = new TopicReceive1();
            tr1.init(ic, TOPIC);

            System.out
              .println("JMS Ready To Receive Messages (To quit, send a \"quit\" message).");
            
            

            // Wait until a "quit" message has been received.
          //  synchronized (tr1) {
          //   System.out.println("111111111111");
          //   while (!tr1.quit) {
          //    try {
          //     System.out.println("2222222222");
          //     tr1.wait();
          //     System.out.println("333333333");
          //    } catch (InterruptedException ie) {
          //    }
          //   }
          //  }
            tr1.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);
           }

          }


          TopicReceive2


          import java.util.Hashtable;

          import javax.jms.JMSException;
          import javax.jms.Session;
          import javax.jms.TextMessage;
          import javax.jms.Topic;
          import javax.jms.TopicConnection;
          import javax.jms.TopicConnectionFactory;
          import javax.jms.TopicSession;
          import javax.jms.TopicSubscriber;
          import javax.naming.Context;
          import javax.naming.InitialContext;
          import javax.naming.NamingException;


          public class TopicReceive2 {
           // 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:7001";

           // Defines the JMS connection factory for the queue.
           public final static String JMS_FACTORY = "SendJMSFactory";

           // Defines the queue.
           public final static String TOPIC = "SendJMSTopic";

           private TopicConnectionFactory tconFactory;

           private TopicConnection tcon;

           private TopicSession tsession;

           private TopicSubscriber tsubscriber;

           private Topic topic;

           private boolean quit = false;


           /**
            * 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,InterruptedException {
            tconFactory = (TopicConnectionFactory) ctx.lookup(JMS_FACTORY);
            tcon = tconFactory.createTopicConnection();
            tcon.setClientID("IP10.200.7.104");
            tcon.start();
            
            tsession = tcon.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
            System.out.println("333333333333");
            topic = (Topic) ctx.lookup(queueName);
            //tsubscriber = tsession.createSubscriber(topic);
            tsubscriber= tsession.createDurableSubscriber(topic,"88888");
             for (int i=0; i<3; i++) {
                       //
                       TextMessage message = (TextMessage) tsubscriber.receive();
                       System.out.println("message["+i+"]: " + message.getText());
                   }
                    Thread.sleep(10000);
            //System.out.println("12");
            //Message msg = treceiver.receive();
            //msg.acknowledge();
            //tsubscriber = tsession.createSubscriber(topic);Message msg = tsubscriber.receive();msg.acknowledge();
            //System.out.println(msg);

           }

           /**
            * Closes JMS objects.
            *
            * @exception JMSException
            *                if JMS fails to close objects due to internal error
            */
           public void close() throws JMSException {
            tsubscriber.close();
            tsession.close();
            tcon.close();
           }

           /**
            * main() method.
            *
            * @param args
            *            WebLogic Server URL
            * @exception Exception
            *                if execution fails
            */

           public static void main(String[] args) throws Exception {

            InitialContext ic = getInitialContext();
            TopicReceive2 tr2 = new TopicReceive2();
            tr2.init(ic, TOPIC);

            System.out
              .println("JMS Ready To Receive Messages (To quit, send a \"quit\" message).");
            
            

            // Wait until a "quit" message has been received.
          //  synchronized (tr1) {
          //   System.out.println("111111111111");
          //   while (!tr1.quit) {
          //    try {
          //     System.out.println("2222222222");
          //     tr1.wait();
          //     System.out.println("333333333");
          //    } catch (InterruptedException ie) {
          //    }
          //   }
          //  }
            tr2.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);
           }

          }

          posted @ 2007-08-15 09:20 小小程序程序員混口飯吃 閱讀(1174) | 評論 (0)編輯 收藏
          主站蜘蛛池模板: 呼玛县| 武川县| 阿克苏市| 葵青区| 如东县| 天津市| 石嘴山市| 塘沽区| 玛纳斯县| 彰化市| 峨边| 孝义市| 勃利县| 唐海县| 普安县| 常德市| 嫩江县| 安康市| 章丘市| 库伦旗| 西昌市| 镇远县| 汾阳市| 犍为县| 外汇| 安丘市| 贺州市| 苏尼特右旗| 岑巩县| 东丽区| 桐乡市| 泰宁县| 兴安县| 万盛区| 英超| 墨脱县| 凭祥市| 双流县| 平邑县| 耒阳市| 乐平市|