hk2000c技術(shù)專欄

          技術(shù)源于哲學(xué),哲學(xué)來(lái)源于生活 關(guān)心生活,關(guān)注健康,關(guān)心他人

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            111 隨筆 :: 1 文章 :: 28 評(píng)論 :: 0 Trackbacks

          郁悶了三天,今天終于把JMS弄出來(lái)了,就是發(fā)送消息,然后消息監(jiān)聽(tīng)器接收到了消息后發(fā)送郵件給管理員

          先看web.xml里面關(guān)于activemq的invoke

          <!--調(diào)用activemq -->
              <context-param >
               <param-name>brokerURI </param-name >
               <param-value>/WEB-INF/activemq.xml </param-value >
              </context-param>
             
              <listener>
                 <listener-class>org.activemq.web.SpringBrokerContextListener</listener-class>
              </listener>


          郁悶了三天,今天終于把JMS弄出來(lái)了,就是發(fā)送消息,然后消息監(jiān)聽(tīng)器接收到了消息后發(fā)送郵件給管理員

          先看web.xml里面關(guān)于activemq的invoke

          <!--調(diào)用activemq -->
              <context-param >
               <param-name>brokerURI </param-name >
               <param-value>/WEB-INF/activemq.xml </param-value >
              </context-param>
             
              <listener>
                 <listener-class>org.activemq.web.SpringBrokerContextListener</listener-class>
              </listener>

          然后是在上下文中定義的JmsTemplate和activemq監(jiān)聽(tīng)

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "
          http://www.springframework.org/dtd/spring-beans.dtd">
          <beans>

          <!--JMS Template-->
              <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
                  <property name="connectionFactory">
                <bean class="org.activemq.ActiveMQConnectionFactory">
                 <property name="brokerURL">
                  <value>tcp://localhost:61616</value>
                 </property>
                </bean>
               </property>
               
                <property name="defaultDestinationName" value="Hello.Queue"/>
              </bean>

             <bean id="activeMQContainer" class="org.activemq.jca.JCAContainer">
               <property name="workManager">
                 <bean id="workManager" class="org.activemq.work.SpringWorkManager"/>
               </property>

               <property name="resourceAdapter">
                 <bean id="activeMQResourceAdapter"
                     class="org.activemq.ra.ActiveMQResourceAdapter">
                   <property name="serverUrl" value="tcp://localhost:61616"/>
                 </bean>
               </property>
             </bean>
           

            <!--監(jiān)聽(tīng) Message 的Message Driven POJO-->
              <bean id="HelloPlaceBean" class="com.officetao.jms.HelloMDP" autowire="byName"/>

            <bean id="HelloMDP" factory-method="addConnector" factory-bean="activeMQContainer">
               <property name="activationSpec">
                 <bean class="org.activemq.ra.ActiveMQActivationSpec">
                   <property name="destination" value="Hello.Queue"/>
                   <property name="destinationType" value="javax.jms.Queue"/>
                 </bean>
               </property>
               <property name="ref" value="HelloBean" />
             </bean>

          </beans>

          建立一個(gè)模擬的發(fā)送消息的bean,內(nèi)容如下

          final String mailContent = "新增單號(hào)為0000的訂單, 金額";
            try {
                      if (jmsTemplate != null)
                          jmsTemplate.send(new MessageCreator() {
                              public Message createMessage(Session session)
                                      throws JMSException {
                                  Message message = session.createMessage();
                                  message.setStringProperty("content", mailContent);
                                  return message;
                              }
                          });
                  }
                  catch (Exception e) {
                      logger.error("JMS error when place order:", e);
                  }

          最后就是監(jiān)聽(tīng)消息然后采取行動(dòng)的bean


          public class HelloMDP implements MessageListener {


           
           public void onMessage(javax.jms.Message arg0) {
            
            try   {  
                      subAuthenticator   subauth   =   new   subAuthenticator("郵箱登陸名","密碼");//smtp驗(yàn)證   authenticator  
                      props.put("mail.smtp.host","smtp.163.com");  
                      props.put("mail.smtp.auth","true");  
                      session   =   Session.getInstance(props,subauth);  
                      MimeMessage   message   =   new   MimeMessage(session);  
                      message.setRecipient(Message.RecipientType.TO,new   InternetAddress("
          接收郵件的郵箱"));  
                      message.setFrom(new   InternetAddress("
          自己的郵箱"));  
                      message.setSubject("ok");  
                      message.setText("if you see it,it works!");  
                      Transport.send(message);
                  }  
                  catch(AuthenticationFailedException   e1){  
                      System.out.println("SMTP認(rèn)證出錯(cuò)!");  
                  }  
                  catch   (MessagingException   e)   {  
                      e.printStackTrace();
                  }  
           
          }

          public   static   Properties   props   =   System.getProperties();
          public   static   Session   session   =   null;  

          /**  
          *此內(nèi)部類定義了smtp認(rèn)證方法  
          */  
          public   class   subAuthenticator   extends   Authenticator{  
          private   String   userName;  
          private   String   password;  
          public   subAuthenticator(String   user,String   pass){  
              userName=user;  
              password=pass;  
          }  
          public   PasswordAuthentication   getPasswordAuthentication(){  
              return   new   PasswordAuthentication(userName,password);  
          }  

          posted on 2007-11-16 16:49 hk2000c 閱讀(1122) 評(píng)論(0)  編輯  收藏 所屬分類: JMS
          主站蜘蛛池模板: 丽江市| 嘉义县| 苍山县| 中阳县| 华坪县| 酉阳| 永登县| 浪卡子县| 和政县| 汕尾市| 韶山市| 台安县| 边坝县| 平利县| 崇仁县| 正镶白旗| 九寨沟县| 新建县| 聂拉木县| 资兴市| 稷山县| 清涧县| 北安市| 松潘县| 申扎县| 前郭尔| 客服| 齐河县| 泰安市| 剑河县| 开江县| 天水市| 广河县| 凤翔县| 永昌县| 十堰市| 安阳市| 行唐县| 陕西省| 奉新县| 丰县|