⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 traderservlet.java

📁 weblogic应用全实例
💻 JAVA
字号:
//声明这个类定义在包examples.jms.trader中
package examples.jms.trader;
//声明这个类引入的其它类或包
import java.io.*;
import javax.naming.*;
import javax.jms.*;
import javax.servlet.*;
import javax.servlet.http.*;

/**
 * 向一个消息主题发送买或卖消息。 
 * 客户端TraderReceive接收消息并调用EJBean处理消息
 */
public class TraderServlet extends HttpServlet
{
/**
 * 定义JMS连接构造器
 */
  public final static String JMS_FACTORY="jms.connection.traderFactory";
/**
 * 定义JMS主题
 */
  public final static String TOPIC="weblogic.examples.jms.exampleTopic";

 /**
   * service()方法
   * @参数 req	HTTP servlet 请求对象
   * @参数 res	HTTP servlet 响应对象
   * @异常 IOException I/O 操作发生错误
   * @异常 ServletException servlet操作发生错误
  */
   
  public void service(HttpServletRequest req, HttpServletResponse res)
       throws IOException, ServletException
  {
  //定义变量
    String custName;
    String tradeType;
    String symbol;
    int shares;
    try {
      if (req.getMethod().equals("GET")) {
      	//如果是“GET“方法
        PrintWriter pw = new PrintWriter(res.getOutputStream(),true);
        //打印from页,返回到客户端
        printForm(pw);
      } else {
      	//否则,该是post方法
      	//获取请求参数
      	//用户名
        custName = req.getParameterValues("custname")[0];
        //交易类型
        tradeType = req.getParameterValues("tradetype")[0];
        //股票类型
        symbol = req.getParameterValues("symbol")[0];
        //交易数量
        shares = Integer.parseInt(req.getParameterValues("shares")[0]);
	//sendTopicMessage是本类定义的方法,向主题发送消息。
        sendTopicMessage(custName, tradeType, symbol, shares);
        //下面生成返回客户端的html页面
        //设置类型
        res.setContentType("text/html");
        //设置头参数
        res.setHeader("Pragma", "no-cache");
        PrintWriter pw = new PrintWriter(res.getOutputStream(),true);
        //返回html页面
        pw.println("<HTML><HEAD><TITLE>Message Status</TITLE></HEAD>");
        pw.println("<BODY><img src=images/BEA_Button_Final_web.gif align=right>");
	pw.println("Message Submitted");
        pw.println("</BODY></HTML>");
        pw.close();
        return;
      }
    }
    catch (Exception e) {e.printStackTrace();
    }

  }
 /**
   * 表单
   * @参数 pw print writer
   * @异常 Exception 有问题时抛出的异常
  */

  public void printForm(PrintWriter pw) 
       throws Exception
  {
  //下面向客户端返回html页面,包括一个表单
    pw.println("<HTML><HEAD><TITLE>Message Status</TITLE></HEAD>");
    pw.println("<BODY>");
    pw.println("<p><img src=images/BEA_Button_Final_web.gif align=right>");
    pw.println("<FORM METHOD=\"POST\" ACTION=\"./jmstrader\">");
    pw.println("<TABLE>");
    pw.println("<TR><TD>Customer Name:</TD><TD><INPUT NAME=\"custname\" SIZE=40></TD></TR>");
    pw.println("<TR><TD>Trade:</TD>");
    pw.println("<TD><select name=tradetype>");
    pw.println("<option value=buy selected>Buy");
    pw.println("<option value=sell>Sell");
    pw.println("</select>");
    pw.println("</TR>");
    pw.println("<TR><TD>Stock:</TD>");
    pw.println("<TD><select name=symbol>");
    pw.println("<option value=WEBL selected>BEA Systems");
    pw.println("<option value=INTL>Intel Corp");
    pw.println("</select>");
    pw.println("</TR>");
    pw.println("<TR><TD>Number of Shares:</TD><TD><INPUT NAME=\"shares\" SIZE=10></TD></TR>");
    pw.println("<TR><TD></TD><TD><INPUT TYPE=\"submit\" VALUE=\"Send Message\"></TD></TR>");
    pw.println("</TABLE>");
    pw.println("</FORM>");
    pw.println("</BODY></HTML>");
    pw.close();
  }
 /**
   * 发送主题消息
   * @参数 customerName 顾客名
   * @参数 tradeType	 交易类型
   * @参数 symbol	 股票代号
   * @参数 shares	 股票数量
   * @异常 NamingException JNDI错误
   * @异常 JMSException JMS错误
  */

  public void sendTopicMessage(String customerName, String tradeType, 
                               String symbol, int shares)
       throws NamingException, JMSException
  {
  //创建名称服务上下文
    Context ctx = new InitialContext();
    //声明主题消息连接构造器
    TopicConnectionFactory tconFactory;
    //声明主题消息连接
    TopicConnection connection;
    //声明主题消息会话
    TopicSession session;
    //声明主题消息发布器
    TopicPublisher publisher;
    //声明主题消息
    Topic topic;
    //声明消息
    MapMessage msg;
    //通过JNDI查找主题消息连接构造器
    tconFactory = (TopicConnectionFactory) ctx.lookup(JMS_FACTORY);
    //通过主题消息连接构造器创建连接
    connection = tconFactory.createTopicConnection();
    //通过主题消息连接创建主题会话
    session = connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
    //通过JNDI查找主题消息
    topic = (Topic) ctx.lookup(TOPIC);
    //通过主题会话创建消息发布器
    publisher = session.createPublisher(topic);
    //通过主题会话创建消息
    msg = session.createMapMessage();
    //设置消息对象属性
    msg.setString("CustomerName", customerName);
    msg.setString("TradeType", tradeType);
    msg.setString("Symbol", symbol);
    msg.setInt("Shares", shares);
    msg.setBooleanProperty("tracing", true);
    //发布消息
    publisher.publish(msg, DeliveryMode.PERSISTENT, 9, 0);
    //关闭对象
    publisher.close();
    session.close();
    connection.close();
  }
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -