俊星的BLOG

          APACHE Geronimo 試用之JMS

          1、通過控制臺的ActiveMQ創(chuàng)建如下JMS準(zhǔn)備環(huán)境:
          Type     Name     Deployed As     State     Actions
          Connection Factory     jms/TestJMSFactory2     Server-wide     running     
          Queue     jms/TestJMSQueue2     Server-wide     running
          具體常見方法請參考:http://cwiki.apache.org/GMOxDOC21/web-application-for-jms-access.html

          2、創(chuàng)建AdminServlet:
          package webjms;

          import java.io.IOException;
          import java.io.PrintWriter;

          import javax.annotation.Resource;
          import javax.jms.Connection;
          import javax.jms.ConnectionFactory;
          import javax.jms.JMSException;
          import javax.jms.Message;
          import javax.jms.MessageConsumer;
          import javax.jms.Queue;
          import javax.jms.Session;
          import javax.jms.TextMessage;
          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          /**
           * Servlet implementation class for Servlet: AdminServlet
           * 
           
          */

          public class AdminServlet extends javax.servlet.http.HttpServlet implements
                  javax.servlet.Servlet 
          {
              @Resource(name 
          = "jms/TestJMSFactory2")
              
          private ConnectionFactory connectionFactory;

              @Resource(name 
          = "jms/TestJMSQueue2")
              
          private Queue queue;

              
          public AdminServlet() {
                  
          super();
              }


              
          protected void doGet(HttpServletRequest request,
                      HttpServletResponse response) 
          throws ServletException, IOException {
                  PrintWriter out 
          = response.getWriter();
                  
          if (connectionFactory == null{
                      out.println(
          "Connection Factory lookup has failed");
                      
          return;
                  }

                  
          if (queue == null{
                      out.println(
          "Queue lookup has failed");
                      
          return;
                  }

                  Connection connection 
          = null;
                  
          try {
                      connection 
          = connectionFactory.createConnection();
                      Session session 
          = connection.createSession(false,
                              Session.AUTO_ACKNOWLEDGE);
                      MessageConsumer consumer 
          = session.createConsumer(queue);
                      connection.start();
                      out
                              .println(
          "The following information has been received for updation\n");
                      
          while (true{
                          Message m 
          = consumer.receive();
                          
          if (m instanceof TextMessage) {
                              TextMessage message 
          = (TextMessage) m;
                              out.println(message.getText());
                          }
           else {
                              
          break;
                          }

                      }

                  }
           catch (JMSException e) {
                      e.printStackTrace();
                  }
           finally {
                      
          if (connection != null{
                          
          try {
                              connection.close();
                          }
           catch (JMSException e1) {
                          }

                      }

                  }

              }


              
          protected void doPost(HttpServletRequest request,
                      HttpServletResponse response) 
          throws ServletException, IOException {
                  doGet(request, response);
              }

          }

          3、創(chuàng)建UserServlet:
          package webjms;

          import java.io.IOException;
          import java.io.PrintWriter;
          import java.util.Enumeration;

          import javax.annotation.Resource;
          import javax.jms.Connection;
          import javax.jms.ConnectionFactory;
          import javax.jms.JMSException;
          import javax.jms.MessageProducer;
          import javax.jms.Queue;
          import javax.jms.Session;
          import javax.jms.TextMessage;
          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          public class UserServlet extends javax.servlet.http.HttpServlet implements
                  javax.servlet.Servlet 
          {
              @Resource(name 
          = "jms/TestJMSFactory2")
              
          private ConnectionFactory connectionFactory;
              @Resource(name 
          = "jms/TestJMSQueue2")
              
          private Queue queue;
              
          static final long serialVersionUID = 1L;

              
          public UserServlet() {
                  
          super();
              }


              
          protected void doGet(HttpServletRequest request,
                      HttpServletResponse response) 
          throws ServletException, IOException {
                  PrintWriter out 
          = response.getWriter();
                  
          if (connectionFactory == null{
                      out.println(
          "Connection Factory lookup has failed");
                      
          return;
                  }


                  
          if (queue == null{
                      out.println(
          "Queue lookup has failed");
                      
          return;
                  }


                  Connection connection 
          = null;
                  
          try {
                      connection 
          = connectionFactory.createConnection();
                      connection.start();
                      Session session 
          = connection.createSession(false,
                              Session.AUTO_ACKNOWLEDGE);
                      MessageProducer producer 
          = session.createProducer(queue);
                      TextMessage message 
          = session.createTextMessage();
                      Enumeration arr 
          = request.getParameterNames();
                      
          while (arr.hasMoreElements()) {
                          String fields 
          = (String) arr.nextElement();
                          String paramname[] 
          = request.getParameterValues(fields);
                          
          for (int i = 0; i < paramname.length; i++{
                              String s 
          = null;
                              s 
          = fields + ":" + paramname[i];
                              message.setText(s);
                              producer.send(message);
                          }


                      }

                      out.println(
          "Your request has been sent to administrator.");
                      producer.send(session.createMessage());
                  }
           catch (JMSException e) {
                      e.printStackTrace();
                  }
           finally {
                      
          if (connection != null{
                          
          try {
                              connection.close();
                          }
           catch (JMSException e1) {
                          }

                      }

                  }

              }


              
          protected void doPost(HttpServletRequest request,
                      HttpServletResponse response) 
          throws ServletException, IOException {
                  doGet(request, response);
              }

          }

          4、創(chuàng)建index.jsp文件:
          <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
              pageEncoding
          ="ISO-8859-1"
          %>
          <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
          <html>
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
          <title>Sample Web Application accessing JMS Resources</title>
          </head>
          <body>
          <form action="/WebJMS2/UserServlet">
          <h1>Please enter the updated information</h1>
          <table>
              
          <tr>
                  
          <td>UserName:</td>
                  
          <td><input type="text" name="username" size="30"></td>
              
          </tr>
              
          <tr>
                  
          <td>UserID:</td>
                  
          <td><input type="text" name="userid" size="30"></td>
              
          </tr>
              
          <tr>
                  
          <td>Old Address:</td>
                  
          <td><input type="text" name="oldaddress" size="30"></td>
              
          </tr>
              
          <tr>
                  
          <td>New Address:</td>
                  
          <td><input type="text" name="newaddress" size="30"></td>
              
          <tr>
          </table>
          <input type="submit" value="Submit"></form>
          </body>
          </html>

          5、geronimo-web.xml的配置:
          <?xml version="1.0" encoding="UTF-8"?>
          <web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.2" 
                   xmlns:nam
          ="http://geronimo.apache.org/xml/ns/naming-1.2" 
                   xmlns:sec
          ="http://geronimo.apache.org/xml/ns/security-1.1" 
                   xmlns:sys
          ="http://geronimo.apache.org/xml/ns/deployment-1.2">
            
          <sys:environment>
              
          <sys:moduleId>
                
          <sys:groupId>default</sys:groupId>
                
          <sys:artifactId>WebJMS2</sys:artifactId>
                
          <sys:version>1.0</sys:version>
                
          <sys:type>car</sys:type>
              
          </sys:moduleId>
              
          <sys:dependencies>
                      
          <sys:dependency>
                          
          <sys:groupId>org.apache.geronimo.configs</sys:groupId>
                          
          <sys:artifactId>activemq-ra</sys:artifactId>
                          
          <sys:version>2.1.4</sys:version>
                          
          <sys:type>car</sys:type>
                      
          </sys:dependency>
                  
          </sys:dependencies>
            
          </sys:environment>
            
          <context-root>/WebJMS2</context-root>
            
          <nam:resource-ref>
                  
          <nam:ref-name>jms/TestJMSFactory2</nam:ref-name>
                  
          <nam:pattern>
                      
          <nam:groupId>org.apache.geronimo.configs</nam:groupId>
                      
          <nam:artifactId>activemq-ra</nam:artifactId>
                      
          <nam:version>2.1.4</nam:version>
                      
          <nam:name>DefaultActiveMQConnectionFactory</nam:name>
                  
          </nam:pattern>
              
          </nam:resource-ref>
              
          <nam:resource-env-ref>
                  
          <nam:ref-name>jms/TestJMSQueue2</nam:ref-name>
                  
          <nam:pattern>
                      
          <nam:groupId>org.apache.geronimo.configs</nam:groupId>
                      
          <nam:artifactId>activemq-ra</nam:artifactId>
                      
          <nam:version>2.1.4</nam:version>
                      
          <nam:name>SendReceiveQueue</nam:name>
                  
          </nam:pattern>
              
          </nam:resource-env-ref>
          </web-app>

          6、web.xml文件的配置:
          <?xml version="1.0" encoding="UTF-8"?>
          <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xmlns
          ="http://java.sun.com/xml/ns/javaee" 
              xmlns:web
          ="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
              xsi:schemaLocation
          ="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
              id
          ="WebApp_ID" version="2.5">
              
          <display-name>WebJMS</display-name>
              
          <welcome-file-list>
                  
          <welcome-file>index.jsp</welcome-file>
              
          </welcome-file-list>
              
          <servlet>
                  
          <description></description>
                  
          <display-name>AdminServlet</display-name>
                  
          <servlet-name>AdminServlet</servlet-name>
                  
          <servlet-class>webjms.AdminServlet</servlet-class>
              
          </servlet>
              
          <servlet>
                  
          <description></description>
                  
          <display-name>UserServlet</display-name>
                  
          <servlet-name>UserServlet</servlet-name>
                  
          <servlet-class>webjms.UserServlet</servlet-class>
              
          </servlet>
              
          <servlet-mapping>
                  
          <servlet-name>AdminServlet</servlet-name>
                  
          <url-pattern>/AdminServlet</url-pattern>
              
          </servlet-mapping>
              
          <servlet-mapping>
                  
          <servlet-name>UserServlet</servlet-name>
                  
          <url-pattern>/UserServlet</url-pattern>
              
          </servlet-mapping>
          </web-app>

          7、發(fā)布及查看運(yùn)行結(jié)果:
          將WebJMS.war發(fā)布即可,具體請點(diǎn)擊此處下載,運(yùn)行結(jié)果的查看可通過下面的兩個URL實(shí)現(xiàn):
          http://localhost:8080/WebJMS2/
          http://localhost:8080/WebJMS2/AdminServlet

          posted on 2009-05-12 22:09 俊星 閱讀(378) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 白河县| 孟村| 郧西县| 夹江县| 毕节市| 新乡县| 漳平市| 调兵山市| 固安县| 宣武区| 科尔| 镇赉县| 兴山县| 本溪市| 乐陵市| 宁强县| 娱乐| 麟游县| 宣化县| 汉沽区| 东乌珠穆沁旗| 锦州市| 辽阳县| 新疆| 平南县| 大邑县| 宾阳县| 平武县| 攀枝花市| 乐至县| 岳阳县| 清丰县| 山西省| 民县| 防城港市| 滨州市| 临西县| 安龙县| 道真| 濮阳县| 常宁市|