«September 2025»
123456
78910111213
14151617181920
21222324252627
282930


公告

我近期在研究Maven、Turbine、EJB,如果有朋友想一起交流学习,请加我的MSN:moshco_zhu@hotmail.com!

   你为什么来,你何必来,叫我怎么见你!

--《小城之春》


我的分类(专题)

首页(19)
04 创想思考(1)
01 技术文档(8)
03 诗歌散文(1)
02 人生感悟(2)


最新日志
关于Java之父戈斯林离职的愤怒
在Weblogic 10中做EJB3的开
在Weblogic 10中做EJB3的开
在Weblogic 10中做EJB3的开
在Weblogic 10中做EJB3的开
在Weblogic 10中做EJB3的开
在Weblogic 10中做EJB3的开
在Weblogic 10中做EJB3的开
在Weblogic 10中做EJB3的开
用Maven2管理EJB项目

最新回复
回复:在Weblogic 10中做EJB
回复:在Weblogic 10中做EJB
回复:在Weblogic 10中做EJB
回复:用Maven2管理EJB项目
回复:在Weblogic 10中做EJB
回复:使用Continuum配置定时打包
回复:在Weblogic 10中做EJB
回复:在Weblogic 10中做EJB
回复:在Weblogic 10中做EJB
回复:在Weblogic 10中做EJB

留言板
签写新留言



链接




本站首页    管理页面    写新日志    退出

[01 技术文档]在Weblogic 10中做EJB3的开发 之基础开发 (3)
moshco zhu 发表于 2007/11/5 10:13:44

在Weblogic 10中做EJB3的开发    之基础开发 (3) --------------------------------------------------------------------------- 下面用jsp实现表示层,还是两个,一个是有状态会话Bean的业务,一个是无状态会话Bean的业务。  文件地址:[WebContext/JavaSource/com/mh/servlet/test/ejb3statefull/AccountMoneyStatelessSV.java] 包名:[com.mh.servlet.test.ejb3statefull] 名称:[AccountMoneyStatelessSV] 内容如下: ---------------------------------------------------------------------- <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage=""%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>测试-使用有状态会话Bean</title> </head> <script language="javascript" type="text/javascript">   /**   * 函数名:  getSysAliasAss   * 功能描述: 获取运行系统别名(辅助)   */  function getSysAliasAss(){      //读取系统当前请求的pathName   var strPathName = window.location.pathname;      //以字符串"/"分割到数组   var oAryTmp = strPathName.split("/");   //系统别名   var strSysAlias = "/" + oAryTmp[1];      //返回函数值   return strSysAlias;     }        /**   * 函数名: isInitAccount   * 功能描述: 是否已经初始化   */  function isInitAccount(){     //创建Ajax对象   var xmlHttpReq = new ActiveXObject("MSXML2.XMLHTTP.3.0");      //确定请求的Url   var strUrl = getSysAliasAss() + "/sv/AccountMoneySV.do?dowith=isInitAccount";        //发出请求   xmlHttpReq.open("GET", strUrl, false);   xmlHttpReq.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=UTF-8;");   xmlHttpReq.send();        //读取数据   var strIsInitAccount = xmlHttpReq.responseText;      //返回函数值   return strIsInitAccount;  }     /**   * 函数名: initAccount   * 功能描述: 初始化账户   */  function initAccount(){     //账户是否已经初始化   var strIsInitAccount = isInitAccount();   if(strIsInitAccount != null && strIsInitAccount == "yes"){    alert("账户已经初始化!不能重复初始化!");    return false;   }     //创建Ajax对象   var xmlHttpReq = new ActiveXObject("MSXML2.XMLHTTP.3.0");        //确定请求的Url   var strUrl = getSysAliasAss() + "/sv/AccountMoneySV.do?dowith=initAccount";        //发出请求   xmlHttpReq.open("GET", strUrl, false);   xmlHttpReq.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=UTF-8;");   xmlHttpReq.send();        //读取数据   var strMessage = xmlHttpReq.responseText;   outMessage.innerHTML = strMessage;      //刷新账户状态   refreshState();      //返回函数值   return true;  }        /**   * 函数名: delAccount   * 功能描述: 删除账户   */  function delAccount(){     //账户是否已经初始化   var strIsInitAccount = isInitAccount();   if(strIsInitAccount != null && strIsInitAccount == "no"){    alert("账户还没有初始化!");    return false;   }     //创建Ajax对象   var xmlHttpReq = new ActiveXObject("MSXML2.XMLHTTP.3.0");        //确定请求的Url   var strUrl = getSysAliasAss() + "/sv/AccountMoneySV.do?dowith=delAccount";        //发出请求   xmlHttpReq.open("GET", strUrl, false);   xmlHttpReq.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=UTF-8;");   xmlHttpReq.send();        //读取数据   var strMessage = xmlHttpReq.responseText;   outMessage.innerHTML = strMessage;      //刷新账户状态   refreshState();      //返回函数值   return true;  }      /**   * 函数名: charge   * 功能描述: 给账户冲值   */  function charge(){      //创建Ajax对象   var xmlHttpReq = new ActiveXObject("MSXML2.XMLHTTP.3.0");      //获取账户   var strAccountCharge = accountCharge.value;   //金额   var fMoney = chargeMoney.value;      //确定请求的Url   var strUrl = getSysAliasAss() + "/sv/AccountMoneySV.do?dowith=charge&account=" + strAccountCharge + "&money=" + fMoney;        //发出请求   xmlHttpReq.open("GET", strUrl, false);   xmlHttpReq.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=UTF-8;");   xmlHttpReq.send();        //读取数据   var strMessage = xmlHttpReq.responseText;   outMessage.innerHTML = strMessage;      //返回函数值   return true;  }        /**   * 函数名: pay   * 功能描述: 账户扣款   */  function pay(){      //创建Ajax对象   var xmlHttpReq = new ActiveXObject("MSXML2.XMLHTTP.3.0");      //获取账户   var strAccountPay = accountPay.value;   //金额   var fMoney = payMoney.value;      //确定请求的Url   var strUrl = getSysAliasAss() + "/sv/AccountMoneySV.do?dowith=pay&account=" + strAccountPay + "&money=" + fMoney;        //发出请求   xmlHttpReq.open("GET", strUrl, false);   xmlHttpReq.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=UTF-8;");   xmlHttpReq.send();        //读取数据   var strMessage = xmlHttpReq.responseText;   outMessage.innerHTML = strMessage;      //返回函数值   return true;  }      /**   * 函数名: refreshState   * 功能描述: 刷新账户状态   */  function refreshState(){      //创建Ajax对象   var xmlHttpReq = new ActiveXObject("MSXML2.XMLHTTP.3.0");      //确定请求的Url   var strUrl = getSysAliasAss() + "/sv/AccountMoneySV.do?dowith=isInitAccount";        //发出请求   xmlHttpReq.open("GET", strUrl, false);   xmlHttpReq.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=UTF-8;");   xmlHttpReq.send();        //读取数据   var strIsInitAccount = xmlHttpReq.responseText;   if(strIsInitAccount != null && strIsInitAccount == "no"){    accountState.innerHTML = "<font color='red'>没有初始化</font>";   }else if(strIsInitAccount != null && strIsInitAccount == "yes"){    accountState.innerHTML = "<font color='blue'>激活</font>";   }      //返回函数值   return true;  }        /**   * 函数名: account   * 功能描述: 获取账户余额   */  function account(){     //账户是否已经初始化   var strIsInitAccount = isInitAccount();   if(strIsInitAccount != null && strIsInitAccount == "no"){    alert("账户还没有初始化!");    return false;   }      //创建Ajax对象   var xmlHttpReq = new ActiveXObject("MSXML2.XMLHTTP.3.0");      //确定请求的Url   var strUrl = getSysAliasAss() + "/sv/AccountMoneySV.do?dowith=account";        //发出请求   xmlHttpReq.open("GET", strUrl, false);   xmlHttpReq.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=UTF-8;");   xmlHttpReq.send();        //读取数据   var strMessage = xmlHttpReq.responseText;   outMessage.innerHTML = strMessage;      //返回函数值   return true;  }  </script>  <body> <p>账户管理:<br> <hr width="100%" size="1" /> </p> <table width="600" border="0" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">  <tr>   <td bgcolor="#FFFFFF">   <table width="600" border="0" cellspacing="1" cellpadding="0">    <tr>     <td height="20" bgcolor="#CCCCCC">有状态会话Bean测试</td>    </tr>    <tr>     <td height="20">     <hr width="100%" size="1" />     </td>    </tr>    <tr>      <td height="20">     <input name="initAccount" type="button" id="initAccount" value="账户初始化" onclick="initAccount();" />&nbsp;   <input type="button" name="Submit" value="删除账户A、B" onclick="delAccount();" />&nbsp;&nbsp;&nbsp;      账户当前状态:<span id="accountState"></span>     <input name="refreshState" type="button" id="refreshState" value="刷新" onclick="refreshState()" />    </td>    </tr>    <tr>     <td height="20">选择一个账户:       <select name="accountCharge" id="accountCharge">         <option>选择一个账户</option>         <option value="A">A</option>         <option value="B">B</option>         <option value="ALL">All</option>          </select>       冲值金额:          <input name="chargeMoney" type="text" id="chargeMoney" size="10" /> 元 <input      name="charge" type="button" id="charge" value="冲值" onclick="charge();" /></td>    </tr>    <tr>     <td height="20">选择一个账户:     <select name="accountPay" id="accountPay">       <option>选择一个账户</option>       <option value="A">A</option>       <option value="B">B</option>       <option value="ALL">All</option>     </select> 扣款金额:  <input name="payMoney" type="text" id="payMoney" size="10" /> 元 <input name="pay"      type="button" id="pay" value="扣款" onclick="pay();" /></td>    </tr>    <tr>     <td height="20">     <input name="account" type="button" id="account" value="账户余额" onclick="account();" />     </td>    </tr>    <tr>     <td height="40"><span id="outMessage"></span></td>    </tr>   </table>   </td>  </tr> </table> </body> </html> ---------------------------------------------------------------------- 这个是实现有状态会话Bean。  文件地址:[WebContext/account_stateless.jsp] ---------------------------------------------------------------------- <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage=""%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>测试-使用无状态会话Bean</title> </head> <script language="javascript" type="text/javascript">   /**   * 函数名:  getSysAliasAss   * 功能描述: 获取运行系统别名(辅助)   */  function getSysAliasAss(){      //读取系统当前请求的pathName   var strPathName = window.location.pathname;      //以字符串"/"分割到数组   var oAryTmp = strPathName.split("/");   //系统别名   var strSysAlias = "/" + oAryTmp[1];      //返回函数值   return strSysAlias;     }        /**   * 函数名: isInitAccount   * 功能描述: 是否已经初始化   */  function isInitAccount(){     //创建Ajax对象   var xmlHttpReq = new ActiveXObject("MSXML2.XMLHTTP.3.0");      //确定请求的Url   var strUrl = getSysAliasAss() + "/sv/AccountMoneyStatelessSV.do?dowith=isInitAccount";        //发出请求   xmlHttpReq.open("GET", strUrl, false);   xmlHttpReq.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=UTF-8;");   xmlHttpReq.send();        //读取数据   var strIsInitAccount = xmlHttpReq.responseText;      //返回函数值   return strIsInitAccount;  }     /**   * 函数名: initAccount   * 功能描述: 初始化账户   */  function initAccount(){     //账户是否已经初始化   var strIsInitAccount = isInitAccount();   if(strIsInitAccount != null && strIsInitAccount == "yes"){    alert("账户已经初始化!不能重复初始化!");    return false;   }     //创建Ajax对象   var xmlHttpReq = new ActiveXObject("MSXML2.XMLHTTP.3.0");        //确定请求的Url   var strUrl = getSysAliasAss() + "/sv/AccountMoneyStatelessSV.do?dowith=initAccount";        //发出请求   xmlHttpReq.open("GET", strUrl, false);   xmlHttpReq.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=UTF-8;");   xmlHttpReq.send();        //读取数据   var strMessage = xmlHttpReq.responseText;   outMessage.innerHTML = strMessage;      //刷新账户状态   refreshState();      //返回函数值   return true;  }        /**   * 函数名: delAccount   * 功能描述: 删除账户   */  function delAccount(){     //账户是否已经初始化   var strIsInitAccount = isInitAccount();   if(strIsInitAccount != null && strIsInitAccount == "no"){    alert("账户还没有初始化!");    return false;   }     //创建Ajax对象   var xmlHttpReq = new ActiveXObject("MSXML2.XMLHTTP.3.0");        //确定请求的Url   var strUrl = getSysAliasAss() + "/sv/AccountMoneyStatelessSV.do?dowith=delAccount";        //发出请求   xmlHttpReq.open("GET", strUrl, false);   xmlHttpReq.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=UTF-8;");   xmlHttpReq.send();        //读取数据   var strMessage = xmlHttpReq.responseText;   outMessage.innerHTML = strMessage;      //刷新账户状态   refreshState();      //返回函数值   return true;  }      /**   * 函数名: charge   * 功能描述: 给账户冲值   */  function charge(){      //创建Ajax对象   var xmlHttpReq = new ActiveXObject("MSXML2.XMLHTTP.3.0");      //获取账户   var strAccountCharge = accountCharge.value;   //金额   var fMoney = chargeMoney.value;      //确定请求的Url   var strUrl = getSysAliasAss() + "/sv/AccountMoneyStatelessSV.do?dowith=charge&account=" + strAccountCharge + "&money=" + fMoney;        //发出请求   xmlHttpReq.open("GET", strUrl, false);   xmlHttpReq.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=UTF-8;");   xmlHttpReq.send();        //读取数据   var strMessage = xmlHttpReq.responseText;   outMessage.innerHTML = strMessage;      //返回函数值   return true;  }        /**   * 函数名: pay   * 功能描述: 账户扣款   */  function pay(){      //创建Ajax对象   var xmlHttpReq = new ActiveXObject("MSXML2.XMLHTTP.3.0");      //获取账户   var strAccountPay = accountPay.value;   //金额   var fMoney = payMoney.value;      //确定请求的Url   var strUrl = getSysAliasAss() + "/sv/AccountMoneyStatelessSV.do?dowith=pay&account=" + strAccountPay + "&money=" + fMoney;        //发出请求   xmlHttpReq.open("GET", strUrl, false);   xmlHttpReq.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=UTF-8;");   xmlHttpReq.send();        //读取数据   var strMessage = xmlHttpReq.responseText;   outMessage.innerHTML = strMessage;      //返回函数值   return true;  }      /**   * 函数名: refreshState   * 功能描述: 刷新账户状态   */  function refreshState(){      //创建Ajax对象   var xmlHttpReq = new ActiveXObject("MSXML2.XMLHTTP.3.0");      //确定请求的Url   var strUrl = getSysAliasAss() + "/sv/AccountMoneyStatelessSV.do?dowith=isInitAccount";        //发出请求   xmlHttpReq.open("GET", strUrl, false);   xmlHttpReq.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=UTF-8;");   xmlHttpReq.send();        //读取数据   var strIsInitAccount = xmlHttpReq.responseText;   if(strIsInitAccount != null && strIsInitAccount == "no"){    accountState.innerHTML = "<font color='red'>没有初始化</font>";   }else if(strIsInitAccount != null && strIsInitAccount == "yes"){    accountState.innerHTML = "<font color='blue'>激活</font>";   }      //返回函数值   return true;  }        /**   * 函数名: account   * 功能描述: 获取账户余额   */  function account(){     //账户是否已经初始化   var strIsInitAccount = isInitAccount();   if(strIsInitAccount != null && strIsInitAccount == "no"){    alert("账户还没有初始化!");    return false;   }      //创建Ajax对象   var xmlHttpReq = new ActiveXObject("MSXML2.XMLHTTP.3.0");      //确定请求的Url   var strUrl = getSysAliasAss() + "/sv/AccountMoneyStatelessSV.do?dowith=account";        //发出请求   xmlHttpReq.open("GET", strUrl, false);   xmlHttpReq.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=UTF-8;");   xmlHttpReq.send();        //读取数据   var strMessage = xmlHttpReq.responseText;   outMessage.innerHTML = strMessage;      //返回函数值   return true;  }  </script>  <body> <p>账户管理:<br> <hr width="100%" size="1" /> </p> <table width="600" border="0" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">  <tr>   <td bgcolor="#FFFFFF">   <table width="600" border="0" cellspacing="1" cellpadding="0">    <tr>     <td height="20" bgcolor="#CCCCCC">无状态会话Bean测试</td>    </tr>    <tr>     <td height="20">     <hr width="100%" size="1" />     </td>    </tr>    <tr>      <td height="20">     <input name="initAccount" type="button" id="initAccount" value="账户初始化" onclick="initAccount();" />&nbsp;   <input type="button" name="Submit" value="删除账户A、B" onclick="delAccount();" />&nbsp;&nbsp;&nbsp;      账户当前状态:<span id="accountState"></span>     <input name="refreshState" type="button" id="refreshState" value="刷新" onclick="refreshState()" />    </td>    </tr>    <tr>     <td height="20">选择一个账户:       <select name="accountCharge" id="accountCharge">         <option>选择一个账户</option>         <option value="A">A</option>         <option value="B">B</option>         <option value="ALL">All</option>          </select>       冲值金额:          <input name="chargeMoney" type="text" id="chargeMoney" size="10" /> 元 <input      name="charge" type="button" id="charge" value="冲值" onclick="charge();" /></td>    </tr>    <tr>     <td height="20">选择一个账户:     <select name="accountPay" id="accountPay">       <option>选择一个账户</option>       <option value="A">A</option>       <option value="B">B</option>       <option value="ALL">All</option>     </select> 扣款金额:  <input name="payMoney" type="text" id="payMoney" size="10" /> 元 <input name="pay"      type="button" id="pay" value="扣款" onclick="pay();" /></td>    </tr>    <tr>     <td height="20">     <input name="account" type="button" id="account" value="账户余额" onclick="account();" />     </td>    </tr>    <tr>     <td height="40"><span id="outMessage"></span></td>    </tr>   </table>   </td>  </tr> </table> </body> </html> ---------------------------------------------------------------------- 这个是实现无状态会话Bean。  上面两个表示层使用了Ajx技术,据微软说Ajax是一种老调重谈的技术,但是我很纳闷,为什么以前我一直想要实现这样的效果就从来没有人跟我说呢?!所以,我觉得AJax是一门新技术,而且应该再次基础上发展,它应该是很有潜质的。  接下来要在欢迎页面[WebContext/index.jsp]中加入下面的部分: ---------------------------------------------------------------------- <p> <center> EJB3测试:有状态会话Bean与无状态会话Bean的差别<br> <a href="<%=request.getContextPath() %>/account.jsp" target="_blank">账户管理:有状态会话Bean实现</a><br> <a href="<%=request.getContextPath() %>/account_stateless.jsp" target="_blank">账户管理:无状态会话Bean实现</a> </center> </p> ----------------------------------------------------------------------   最后使用[build.xml]来构建发布程序吧!  测试效果的时候,你会发现,有状态的两个账户[A、B]的金额是无不关连互不影响的,但是,无状态就会出现,A账户增加减少金额,会反应在A、B上,而且删除账户后,再从新创建账户,账户的金额会反应在新创建的账户上。这就就说明,无状态会话Bean是可以被重复利用,并不会因为一个用户不使用就从容器中删除,而是由容器来合理配置,继续提供给下一个用户使用;而用状态会话Bean它只与一个用户保持关联,每个用户的调用,都是一个新的Bean对象。    

阅读全文(2885) | 回复(-1) | 编辑 | 精华


发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.234 second(s), page refreshed 144793433 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号