ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>精品成人私密视频,亚洲精品成人一区,最近中文字幕在线http://www.aygfsteel.com/xuechen0721/category/12468.html<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;——â€?amp;nbsp;å…µäÍ城下&nbsp;&nbsp;猫科动物zh-cnWed, 28 Feb 2007 23:48:28 GMTWed, 28 Feb 2007 23:48:28 GMT60关于实例变量和静态变é‡?/title><link>http://www.aygfsteel.com/xuechen0721/archive/2007/01/25/96031.html</link><dc:creator>å…µäÍ城下</dc:creator><author>å…µäÍ城下</author><pubDate>Thu, 25 Jan 2007 12:29:00 GMT</pubDate><guid>http://www.aygfsteel.com/xuechen0721/archive/2007/01/25/96031.html</guid><wfw:comment>http://www.aygfsteel.com/xuechen0721/comments/96031.html</wfw:comment><comments>http://www.aygfsteel.com/xuechen0721/archive/2007/01/25/96031.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xuechen0721/comments/commentRss/96031.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xuechen0721/services/trackbacks/96031.html</trackback:ping><description><![CDATA[           åQˆä»¥ä¸‹æ‰€˜q°åªåœ¨WEB½E‹åºä¸­ï¼‰<br />          ˜q‘期在项目调试时遇到一个关于Servlet的实例变量的问题åQŒç”±äºŽServlet是多¾U¿ç¨‹çš„,所以Servlet的实例变量是非线½E‹å®‰å…¨çš„åQŒåœ¨™å¹ç›®è°ƒè¯•中出现多¾U¿ç¨‹çš„同步问题ã€?br />         ç”׃ºŽWeb容器¾l´æŠ¤çš„Servlet在容器中只会创徏一个实例,也就单例模式。Servlet多线½E‹è¿è¡Œï¼Œåˆ™å®žä¾‹å˜é‡æ˜¯å¤šçº¿½E‹å…±äº«çš„åQŒå­˜åœ¨é𐿂£ï¼Œä½†å¾ˆéš‘֏‘玎ͼ<br />         下面来说一下这个问题,比较¼›Õd¥‡åQ?br />         原先的jsp™åµé¢ä¸­ï¼Œå­˜åœ¨ä¸€ä¸ªHiddençš„Iframe来实现页面上菜单联动的功能,一直运行良好。最˜q‘把iframeåŽÀLŽ‰äº†ï¼Œæ”¹ç”¨ajax来实现。在下拉菜单onchangeæ—Óž¼ŒåŒæ—¶å‘出三个è¯äh±‚åQŒè°ƒç”¨åŒä¸€ä¸ªservletåQŒåœ¨˜q™ä¸ªServlet中存在一个实例变量来˜q”回数据åQŒç”±äºŽçº¿½E‹å˜é‡æ˜¯éžçº¿½E‹å®‰å…¨çš„åQŒæ‰€ä»¥å‡ºçŽîCº†bugåQŒè¿™ä¸ªbug很隐¿U˜ï¼Œä¸æ˜¯æ¯æ¬¡éƒ½èƒ½‹¹‹è¯•出来ã€?br />         在这里我不想讨论iframeå’Œajax的好坏,只是惌™®¨è®ÞZ¸€ä¸‹å®žä¾‹å˜é‡å’Œé™æ€å˜é‡ã€?br />Â Â Â Â Â Â Â Â Â é™æ€å˜é‡å¤§å®¶è‚¯å®šæ¯”è¾ƒç†Ÿæ‚‰ï¼Œä½¿ç”¨é™æ€å˜é‡å°±æ˜¯äØ“äº†ç»´æŠ¤ä¸€ä¸ªçŠ¶æ€ï¼Œä½¿å¾—å¯ä»¥è®©å¤šå®žä¾‹å…׃ín˜q™ä¸ªå˜é‡åQŒæˆ‘们可以用它来实现一些类似缓存的功能。现在如果这个类的实现是一个单例的模式åQŒé‚£ä¹ˆé™æ€å˜é‡å°±å¤±åŽ»äº†ä¼˜åŠÑ€‚单例,那就意味着只能多线½E‹ä‹É用,那么多线½E‹ä¸­å®žä¾‹å˜é‡ž®±æ˜¯å¤šçº¿½E‹å…±äº«çš„åQˆéž¾U¿ç¨‹å®‰å…¨åQ‰ï¼Œæ­¤æ—¶å®žä¾‹å˜é‡çš„作用类ä¼égºŽé™æ€å˜é‡äº†ã€?br />         是不是可以这栯‚¯´åQŒå•例模式中可以用实例变量来实现静态变量的功能呢?åQŸÂ çŽ°åœ¨Spring中默认的都是单例模式åQˆsingletonåQ‰ã€?br />         但是个äh观点åQŒä¸æå€¡ä‹É用实例变量,毕竟非线½E‹å®‰å…¨ã€‚如果一定要使用的话åQŒä¸ªäºø™§‚点只用实例变量来¾l´æŠ¤ä¸€äº›web资源åQˆç¼“存功能,如xml资源½{‰ç­‰åQŒå…¬å”R¡¹ç›®ä¸­æœ‰å¾ˆå¤šè¿™æ ïLš„æƒ…况åQ‰ï¼Œä¸èƒ½åœ¨è¿™ä¸ªç±»ä¸­é¢‘¾Jä‹É用它åQŒä¸å®‰å…¨åQˆæˆ‘遇到的就是这样一个问题)ã€?br />         ¾U¯å±žä¸ªäh观点åQŒæ¬¢˜qŽå¤§å®¶å‘表意见,讨论一下!<img src ="http://www.aygfsteel.com/xuechen0721/aggbug/96031.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xuechen0721/" target="_blank">å…µäÍ城下</a> 2007-01-25 20:29 <a href="http://www.aygfsteel.com/xuechen0721/archive/2007/01/25/96031.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVAæ–‡äšg上传http://www.aygfsteel.com/xuechen0721/archive/2006/12/24/89731.htmlå…µäÍ城下兵äÍ城下Sun, 24 Dec 2006 03:30:00 GMThttp://www.aygfsteel.com/xuechen0721/archive/2006/12/24/89731.htmlhttp://www.aygfsteel.com/xuechen0721/comments/89731.htmlhttp://www.aygfsteel.com/xuechen0721/archive/2006/12/24/89731.html#Feedback0http://www.aygfsteel.com/xuechen0721/comments/commentRss/89731.htmlhttp://www.aygfsteel.com/xuechen0721/services/trackbacks/89731.html      废话不多è¯ß_¼Œç›´æŽ¥çœ‹ç¨‹åºï¼š
      Web端:
<form method = "post" id = "upload" action ="servlet/UploadServlet" enctype="multipart/form-data">
<input type = "file" id = "uploadFile" name = "uploadFile">
<input type="text" name ="text1">
<input type = "submit" value = "UPLOAD">
</form>

      Servlet端:
 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  Map parameters = new HashMap();
  try {
      FileItemFactory factory = new DiskFileItemFactory();
      ServletFileUpload fu = new ServletFileUpload(factory);
  
      fu.setSizeMax(4194304);

      // 得到所有的文äšgåQŒä»¥åŠå…¶å®ƒè¯·æ±‚参敎ͼš
       List fileItems = fu.parseRequest(request);
       Iterator i = fileItems.iterator();
       // 依次处理每一个文ä»Óž¼Œä»¥åŠè¯äh±‚参数åQ?br />       while(i.hasNext()) {
           FileItem fi = (FileItem)i.next();

           // 如果是文仉™¡¹åQŒåˆ™ä¿å­˜æ–‡äšgåˆîC¸Šä¼ ç›®å½?br />           if (!fi.isFormField()) {
               // 获得文äšg名,˜q™ä¸ªæ–‡äšg名包括èµ\径:
               String fileName = fi.getName();

               long filesize = fi.getSize();
               System.out.println("上传的文件名�!!"+fileName + " size : " + filesize);

               // 写入文äšg
               fileName = fileName.substring(fileName.lastIndexOf("\\"));
               String conPath = getServletContext().getRealPath("");
               fi.write(new File(conPath + "http://uploadFolder//" +fileName));
           }
           else { //如果是请求参敎ͼŒåˆ™ä¿å­˜åˆ°HashMapä¸?br />               String name = fi.getFieldName();
               String value = fi.getString();
               parameters.put(name, value);
               System.out.println(parameters);
           }
       }

  }
  catch(Exception ex) {
      System.out.println("上传文äšg时出é”?!!");
      ex.printStackTrace();
  }

 }

外加导入两个包:org.apache.commons.fileupload、org.apache.commons.io



å…µäÍ城下 2006-12-24 11:30 发表评论
]]>
java store procedure çš„ä‹É用(DB2åQ?/title><link>http://www.aygfsteel.com/xuechen0721/archive/2006/12/15/87954.html</link><dc:creator>å…µäÍ城下</dc:creator><author>å…µäÍ城下</author><pubDate>Fri, 15 Dec 2006 07:30:00 GMT</pubDate><guid>http://www.aygfsteel.com/xuechen0721/archive/2006/12/15/87954.html</guid><wfw:comment>http://www.aygfsteel.com/xuechen0721/comments/87954.html</wfw:comment><comments>http://www.aygfsteel.com/xuechen0721/archive/2006/12/15/87954.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xuechen0721/comments/commentRss/87954.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xuechen0721/services/trackbacks/87954.html</trackback:ping><description><![CDATA[½Hç„¶è¢«è¦æ±‚写一个测试程序,‹¹‹è¯•java存储˜q‡ç¨‹å’Œsql的执行效率,以前没写˜q‡å­˜å‚¨è¿‡½E‹ï¼Œå•ƒäº†ä¸€ŒD‰|—¶é—ß_¼Œè®°å½•如下åQ?br />使用的数据库为DB2åQŒé¦–先在db2中徏立一个procedureåQ?br /><span><font face="Courier New" color="#0000ff" point-size="9">CREATE </font><font face="Courier New" color="#000000" point-size="9"></font><font face="Courier New" color="#0000ff" point-size="9">PROCEDURE</font><font face="Courier New" color="#000000" point-size="9"> SQLTEST (</font><font face="Courier New" color="#0000ff" point-size="9">IN</font><font face="Courier New" color="#000000" point-size="9"> tables </font><font face="Courier New" color="#0000ff" point-size="9">VARCHAR</font><font face="Courier New" color="#000000" point-size="9">(200),</font><font face="Courier New" color="#0000ff" point-size="9">IN</font><font face="Courier New" color="#000000" point-size="9"> num </font><font face="Courier New" color="#0000ff" point-size="9">INTEGER</font><font face="Courier New" color="#000000" point-size="9">)</font><div><font face="Courier New" color="#000000" point-size="9"></font><font face="Courier New" color="#0000ff" point-size="9">SPECIFIC</font><font face="Courier New" color="#000000" point-size="9"> JDBC_SQLTEST</font></div><div><font face="Courier New" color="#000000" point-size="9"></font><font face="Courier New" color="#0000ff" point-size="9">DYNAMIC </font><font face="Courier New" color="#000000" point-size="9"></font><font face="Courier New" color="#0000ff" point-size="9">RESULT</font><font face="Courier New" color="#000000" point-size="9"> SETS 0</font></div><div><font face="Courier New" color="#000000" point-size="9"></font><font face="Courier New" color="#0000ff" point-size="9">DETERMINISTIC</font><font face="Courier New" color="#000000" point-size="9"></font></div><div><font face="Courier New" color="#000000" point-size="9"></font><font face="Courier New" color="#0000ff" point-size="9">LANGUAGE </font><font face="Courier New" color="#000000" point-size="9"></font><font face="Courier New" color="#0000ff" point-size="9">JAVA</font><font face="Courier New" color="#000000" point-size="9"></font></div><div><font face="Courier New" color="#000000" point-size="9"></font><font face="Courier New" color="#0000ff" point-size="9">PARAMETER </font><font face="Courier New" color="#000000" point-size="9"></font><font face="Courier New" color="#0000ff" point-size="9">STYLE</font><font face="Courier New" color="#000000" point-size="9"></font><font face="Courier New" color="#0000ff" point-size="9">JAVA</font><font face="Courier New" color="#000000" point-size="9"></font></div><div><font face="Courier New" color="#000000" point-size="9"></font><font face="Courier New" color="#0000ff" point-size="9">NO</font><font face="Courier New" color="#000000" point-size="9"></font><font face="Courier New" color="#0000ff" point-size="9">DBINFO</font><font face="Courier New" color="#000000" point-size="9"></font></div><div><font face="Courier New" color="#000000" point-size="9"></font><font face="Courier New" color="#0000ff" point-size="9">FENCED</font><font face="Courier New" color="#000000" point-size="9"></font></div><div><font face="Courier New" color="#000000" point-size="9">THREADSAFE</font></div><div><font face="Courier New" color="#000000" point-size="9"></font><font face="Courier New" color="#0000ff" point-size="9">MODIFIES </font><font face="Courier New" color="#000000" point-size="9"></font><font face="Courier New" color="#0000ff" point-size="9">SQL</font><font face="Courier New" color="#000000" point-size="9"></font><font face="Courier New" color="#0000ff" point-size="9">DATA</font><font face="Courier New" color="#000000" point-size="9"></font></div><div><font face="Courier New" color="#000000" point-size="9"></font><font face="Courier New" color="#0000ff" point-size="9">PROGRAM </font><font face="Courier New" color="#000000" point-size="9"></font><font face="Courier New" color="#0000ff" point-size="9">TYPE</font><font face="Courier New" color="#000000" point-size="9"> SUB</font></div><div><font face="Courier New" color="#000000" point-size="9"></font><font face="Courier New" color="#0000ff" point-size="9">EXTERNAL </font><font face="Courier New" color="#000000" point-size="9"></font><font face="Courier New" color="#0000ff" point-size="9">NAME</font><font face="Courier New" color="#000000" point-size="9"></font><font face="Courier New" color="#ff0000" point-size="9">'SQLTEST.procedureTest'<br /><br /><font color="#000000">其中SQLTEST为java çš„calss名,</font><font color="#000000">procedureTest为方法名åQˆè¯¦è§å¦‚下程序)åQ?br /></font></font></div><div><font face="Courier New" color="#ff0000" point-size="9"><font color="#000000">import java.util.StringTokenizer;<br />import java.sql.Connection;<br />import java.sql.Statement;<br />import java.sql.DriverManager;</font></font></div><font face="Courier New" color="#ff0000" point-size="9"><font color="#000000"><div><br />import javax.naming.Context;<br />import javax.naming.InitialContext;<br />import javax.sql.DataSource;<br /><br />public class SQLTEST {<br /> <br /> public static void procedureTest(String tables,int num) {<br />  try{<br />   Connection conn = DriverManager.getConnection("jdbc:default:connection");<br />   Statement stmt = conn.createStatement();<br />   StringTokenizer stk = new StringTokenizer(tables,",");<br />   while(stk.hasMoreTokens()) {<br />    String table = stk.nextToken();<br />    String sql = "SELECT * FROM " + table;<br />    for(int i=0;i<num;i++) {<br />     stmt.executeQuery(sql);<br />     <br />    }<br />   }<br />   stmt.close();<br />   conn.close();<br />  }catch(Exception e) {<br />   e.printStackTrace();<br />  }</div><div> }<br />}<br />ž®†æ­¤class¾~–译后拷贝到DB2安装目录的function目录下ã€?br /><br />再用servlet来调用它åQ?br />package com.test;</div><div>import java.io.IOException;<br />import java.util.StringTokenizer;<br />import java.sql.*;</div><div>import javax.sql.DataSource;<br />import javax.naming.InitialContext;<br />import javax.servlet.ServletException;</div><div>import javax.servlet.http.HttpServlet;<br />import javax.servlet.http.HttpServletRequest;<br />import javax.servlet.http.HttpServletResponse;</div><div>public class SQLServlet extends HttpServlet {</div><div> public void doGet(HttpServletRequest req, HttpServletResponse resp)<br />  throws ServletException, IOException {<br />   doPost(req,resp);</div><div> }</div><div> public void doPost(HttpServletRequest req, HttpServletResponse resp)<br />  throws ServletException, IOException {<br />   CallableStatement callStmt = null;<br />   Connection conn = null;<br />   Statement stmt = null;<br />   String tables = "shgt_auth,shgt_master,trx_inbox";<br />   long start = 0;<br />   long end = 0;<br />   long lastTime = 0;<br />   int num = 100;<br />   try {<br />    <br />    //存储˜q‡ç¨‹è°ƒç”¨<br />    conn = getConnection("CET","eximtrx","Standard00");<br />    String procName = "SQLTEST";<br />    String sql = "CALL " + procName + "(?,?)";<br />    callStmt = conn.prepareCall(sql);<br />    callStmt.setString(1,tables);<br />    callStmt.setInt(2,num);<br />    start = System.currentTimeMillis();<br />    callStmt.execute();<br />    end = System.currentTimeMillis();<br />    lastTime = end - start;<br />    System.out.println("###########java store procedure Last time : " + lastTime/1000  + "s" + lastTime%1000 + "ms");<br />    <br />    <br />    <br />    //SQL 调用<br />    conn = getConnection("CET","eximtrx","Standard00");<br />    stmt = conn.createStatement();<br />    StringTokenizer strTok = new StringTokenizer(tables,",");<br />    start = System.currentTimeMillis();<br />    while(strTok.hasMoreTokens()) {<br />     String table = strTok.nextToken();<br />     String sql2 = "select * from " + table;<br />     for(int i=0;i<num;i++){<br />      stmt.executeQuery(sql2);<br />     }<br />    }<br />    end = System.currentTimeMillis();<br />    lastTime = end - start;<br />    System.out.println("###########SQL Last time : " + lastTime/1000  + "s" + lastTime%1000 + "ms");</div><div>   } catch (Exception e) {<br />    e.printStackTrace();<br />   }</div><div> }</div><div> private Connection getConnection(String ds, String user, String pwd)<br />  throws Exception {<br />   Connection con = null;<br />   InitialContext ctx = new InitialContext();<br />   DataSource fDS = (DataSource)ctx.lookup(ds);<br />   con = fDS.getConnection(user, pwd);<br />   return con;<br /> }<br />}<br /><br />˜qè¡Œæ­¤servletž®±å¯æˆåŠŸè°ƒç”¨å­˜å‚¨˜q‡ç¨‹ã€?br />其中有个注意点,ž®±æ˜¯å¤§å°å†™çš„问题åQŒåˆšå¼€å§‹æ—¶å»ºå­˜å‚¨è¿‡½E‹æ˜¯˜q™æ ·<span><font face="Courier New" color="#0000ff" point-size="9">CREATE</font><font face="Courier New" color="#000000" point-size="9"></font><font face="Courier New" color="#0000ff" point-size="9">PROCEDURE</font><font face="Courier New" color="#000000" point-size="9"> SQLT<font color="#ff0000">est</font>(</font><font face="Courier New" color="#0000ff" point-size="9">IN</font><font face="Courier New" color="#000000" point-size="9"> tables </font><font face="Courier New" color="#0000ff" point-size="9">VARCHAR</font><font face="Courier New" color="#000000" point-size="9">(200),</font><font face="Courier New" color="#0000ff" point-size="9">IN</font><font face="Courier New" color="#000000" point-size="9"> num </font><font face="Courier New" color="#0000ff" point-size="9">INTEGER</font><font face="Courier New" color="#000000" point-size="9">)</font> åQŒjava class也用的是SQLT<font color="#ff0000">eståQ?/font><font color="#000000">但是在调存储˜q‡ç¨‹æ—¶ä¼šæŠ±é”™åQŒè¯´æ‰¾ä¸åˆ°SQLTEST.</font><font color="#000000">procedureTestæ–ÒŽ³•åQŒåŽŸæ¥æ•°æ®åº“åœ¨åˆ›å»ºå­˜å‚¨è¿‡½E‹æ—¶åQŒå³ä½¿ä½ ä½¿ç”¨SQLT<font color="#ff0000">est</font></font><font color="#000000">åQŒä½†ä¹Ÿä¼šè¢«æ‰§è¡ŒäØ“SQLTEST,所以只有都æ”ÒŽˆå¤§å†™ã€?br /><br />但有ç‚ÒŽ„å¤–的是,通过˜q™ä¸ª‹¹‹è¯•出来的数据,存储˜q‡ç¨‹æ—¢ç„¶æ¯”sqlè·‘å¾—æ…¢ï¼Œä¸çŸ¥é“äØ“ä»€ä¹ˆï¼ŒéšùN“½E‹åºæœ‰é—®é¢˜ï¼Ÿè¯·å¤§å®¶çœ‹ä¸€ä¸?/font></span><br /><br /></div></font></font></span><img src ="http://www.aygfsteel.com/xuechen0721/aggbug/87954.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xuechen0721/" target="_blank">å…µäÍ城下</a> 2006-12-15 15:30 <a href="http://www.aygfsteel.com/xuechen0721/archive/2006/12/15/87954.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Filter servler çš„ä‹Éç”?/title><link>http://www.aygfsteel.com/xuechen0721/archive/2006/12/12/87125.html</link><dc:creator>å…µäÍ城下</dc:creator><author>å…µäÍ城下</author><pubDate>Tue, 12 Dec 2006 01:11:00 GMT</pubDate><guid>http://www.aygfsteel.com/xuechen0721/archive/2006/12/12/87125.html</guid><wfw:comment>http://www.aygfsteel.com/xuechen0721/comments/87125.html</wfw:comment><comments>http://www.aygfsteel.com/xuechen0721/archive/2006/12/12/87125.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xuechen0721/comments/commentRss/87125.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xuechen0721/services/trackbacks/87125.html</trackback:ping><description><![CDATA[创徏filter的类åQˆå¼•用自<a href="/leishiran/">T-shirt</a>åQ?br />package testfilterservlet; <p>import java.io.IOException;</p><p>import javax.servlet.Filter;<br />import javax.servlet.FilterChain;<br />import javax.servlet.FilterConfig;<br />import javax.servlet.RequestDispatcher;<br />import javax.servlet.ServletException;<br />import javax.servlet.ServletRequest;<br />import javax.servlet.ServletResponse;</p><p>public class MyFirstFilter implements Filter {</p><p> private FilterConfig config;</p><p> public void init(FilterConfig filterConfig) throws ServletException {<br />  this.config = filterConfig;<br />  System.out.println("MyFirstFilter init!");<br /> }<br /> public void doFilter(ServletRequest request, ServletResponse response,<br />   FilterChain chain) throws IOException, ServletException { <br />  String myName = (String)request.getParameter("name");<br />  if(myName.equals("lsr")){<br />   System.out.print("lsr");<br />   chain.doFilter(request,response); //¾l§ç®‹å“åº”下一个filter或者servlet<br />  }else{<br />   System.out.print("not lsr");<br />   RequestDispatcher dispatcher = request.getRequestDispatcher("/testForm/testform1.html");<br />   dispatcher.forward(request,response);<br />  }<br /> }<br /> public void destroy() {<br />  // TODO 自动生成æ–ÒŽ³•存根<br />  <br />  System.out.println("MyFirstFilter destroy!");<br /> }<br />}</p><p>然后注册(½Ž€å†?<br /><web-app><br />        <filter><br />  <filter-name>MyFirstFilter</filter-name><br />  <filter-class>testfilterservlet.MyFirstFilter</filter-class><br /> </filter><br /> <filter-mapping><br />  <filter-name>MyFirstFilter</filter-name><br />  <servlet-name>PrintLog</servlet-name> //˜q™é‡Œå¯ä»¥ä½¿ç”¨ url-pattern<br /> </filter-mapping></p><p> <servlet><br />  <description></description><br />  <display-name>PrintLog</display-name><br />  <servlet-name>PrintLog</servlet-name><br />  <servlet-class>testservlet.PrintLog</servlet-class><br />  <init-param><br />   <param-name>des</param-name><br />   <param-value>this is a test</param-value><br />  </init-param><br /> </servlet><br /> <servlet-mapping><br />  <servlet-name>PrintLog</servlet-name><br />  <url-pattern>/PrintLog</url-pattern><br /> </servlet-mapping><br /></web-app></p><img src ="http://www.aygfsteel.com/xuechen0721/aggbug/87125.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xuechen0721/" target="_blank">å…µäÍ城下</a> 2006-12-12 09:11 <a href="http://www.aygfsteel.com/xuechen0721/archive/2006/12/12/87125.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>singleton的一点疑é—?/title><link>http://www.aygfsteel.com/xuechen0721/archive/2006/11/29/84354.html</link><dc:creator>å…µäÍ城下</dc:creator><author>å…µäÍ城下</author><pubDate>Wed, 29 Nov 2006 07:07:00 GMT</pubDate><guid>http://www.aygfsteel.com/xuechen0721/archive/2006/11/29/84354.html</guid><wfw:comment>http://www.aygfsteel.com/xuechen0721/comments/84354.html</wfw:comment><comments>http://www.aygfsteel.com/xuechen0721/archive/2006/11/29/84354.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xuechen0721/comments/commentRss/84354.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xuechen0721/services/trackbacks/84354.html</trackback:ping><description><![CDATA[一般Singleton模式通常有几¿UåÅžå¼?<br />½W¬ä¸€¿UåÅžå¼?span lang="EN-US">:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:p></o:p></span><br /><table style="WIDTH: 100%; mso-cellspacing: 2.2pt; mso-padding-alt: 2.25pt 2.25pt 2.25pt 2.25pt" cellspacing="3" cellpadding="0" width="100%" border="0"><tbody><tr><td style="PADDING-RIGHT: 2.25pt; PADDING-LEFT: 2.25pt; BACKGROUND: #cccccc; PADDING-BOTTOM: 2.25pt; PADDING-TOP: 2.25pt"><p><span lang="EN-US">public class Singleton {<o:p></o:p></span></p><p>  <span lang="EN-US">private Singleton(){}</span></p><p>  <span lang="EN-US">private static Singleton instance = new Singleton();<o:p></o:p></span></p><p><span lang="EN-US">  public static Singleton getInstance() {<br />    return instance;   <br />   } <br />} <o:p></o:p></span></p></td></tr></tbody></table><p>½W¬äºŒ¿UåÅžå¼?span lang="EN-US">:<o:p></o:p></span></p><table style="WIDTH: 100%; mso-cellspacing: 2.2pt; mso-padding-alt: 2.25pt 2.25pt 2.25pt 2.25pt" cellspacing="3" cellpadding="0" width="100%" border="0"><tbody><tr><td style="PADDING-RIGHT: 2.25pt; PADDING-LEFT: 2.25pt; BACKGROUND: #cccccc; PADDING-BOTTOM: 2.25pt; PADDING-TOP: 2.25pt"><p class="MsoNormal"><span lang="EN-US" style="FONT-SIZE: 10.5pt">public class Singleton { <o:p></o:p></span></p><p>  <span lang="EN-US">private static Singleton instance = null;<span lang="EN-US"><br /></span><span lang="EN-US">         <br />        private Singleton(){}<br /><o:p></o:p></span><br />  public static synchronized Singleton getInstance() {<br /><br />  if (instance==null)<br />    instanceåQnew Singleton();<br />  return instance;   } <o:p></o:p></span></p><p><span lang="EN-US">} <o:p></o:p></span></p></td></tr></tbody></table>都说½W¬äºŒ¿UåŞ式是<span lang="EN-US">lazy initializationåQŒä¹Ÿž®±æ˜¯è¯´ç¬¬ä¸€‹Æ¡è°ƒç”¨æ—¶åˆå§‹SingletonåQŒä¸ç”¨æ¯‹Æ¡éƒ½˜q›è¡Œç”Ÿæˆå¯¹è±¡å®žä¾‹åQŒæé«˜äº†æ•ˆçއã€?br /><o:p>我的疑问是:½W¬ä¸€¿UåŞ式每‹Æ¡é€šè¿‡Singleton.getInstance()ž®×ƒ¼šå¤šæ¬¡ç”Ÿæˆå®žä¾‹å—?instance 不是static的吗åQŒä¹Ÿåªåˆå§‹åŒ–一‹Æ¡å•ŠåQ?br />˜q˜æœ‰½W¬äºŒ¿UåŞ式中的synchronized ä¸ÞZ»€ä¹ˆæ˜¯å¿…须的?不明白,望指点!</o:p></span><img src ="http://www.aygfsteel.com/xuechen0721/aggbug/84354.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xuechen0721/" target="_blank">å…µäÍ城下</a> 2006-11-29 15:07 <a href="http://www.aygfsteel.com/xuechen0721/archive/2006/11/29/84354.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>学习Taglibhttp://www.aygfsteel.com/xuechen0721/archive/2006/11/25/83461.htmlå…µäÍ城下兵äÍ城下Sat, 25 Nov 2006 08:36:00 GMThttp://www.aygfsteel.com/xuechen0721/archive/2006/11/25/83461.htmlhttp://www.aygfsteel.com/xuechen0721/comments/83461.htmlhttp://www.aygfsteel.com/xuechen0721/archive/2006/11/25/83461.html#Feedback0http://www.aygfsteel.com/xuechen0721/comments/commentRss/83461.htmlhttp://www.aygfsteel.com/xuechen0721/services/trackbacks/83461.html

Taglib原理和实çŽîC¹‹å¾ªçŽ¯çš„Tag

作者:WalkingWithJava Java研究¾l„织 (2005-04-21 14:13:39)
  1、问题:在request里的 People 对象åQŒæœ‰ä¸ªå±žæ€§å« men åQŒmen 是一个Collection åQŒæœ‰è®¸å¤šä¸ªman 。现在,æŠ?collection里的man的名字都昄¡¤ºå‡ºæ¥ã€?br />
  昄¡„¶åQŒè¿™æ˜¯ä¸€ä¸ªåµŒå¥—Tag的问题。有三个Tag互相作用åQšæœ€å¤–å±‚çš„Tag扑ֈ°People对象åQŒä¸­é—´çš„Tag取得CollectionåQŒå­Tag负责打印ã€?br />
  例如:


åQœdiego:withObject value="${people}"åQ?br /> åQœdiego:withCollection property="men"åQ?br />  åQœdiego:elementout property="name"/åQ?
 åQ?diego:withCollectionåQ?br />åQ?diego:withObjectåQ?/td>

  思èµ\如下:

  1) ¾~–写WithObjectTag,负责从El表达式中取得对象

  2) ¾~–写WithCollectionTag,负责从对象中取得 Collection ,遍历 Collection ,每遍历一‹Æ?Collection ,执行一‹Æ¡body

  3) ¾~–写ElementoutTag ,æŠ?Collection 中每个men对象çš?name 打印出来

  2. 完整½E‹åºå¦‚下åQ?br />
  在上例的diegoyun.vo包内åQŒç¼–å†?People ¾c?/font>

package diegoyun.vo;
import java.util.Collection;
public class People
{
 private Collection men = null;
 public Collection getMen()
 {
  return men;
 }
 public void setMen(Collection men)
 {
  this.men = men;
 }
}

  ¾~–写 withObject åQŒè¿™æ˜¯ä»Žrequest里取得People对象的最外层Tag

package diegoyun;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
import org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager;
public class WithObjectTag extends BodyTagSupport
{
 private Object value = null;

 public Object getValue()
 {
  return value;
 }
 public void setValue(Object value)throws JspException
 {
  this.value = ExpressionEvaluatorManager.evaluate("value", value.toString(), Object.class, this, pageContext);
 }
 public int doStartTag()
 {
  return EVAL_BODY_INCLUDE;
 }
 public int doEndTag()throws JspException
 {
  return EVAL_PAGE;
 }
}

  ¾~–写WithCollectionTagåQŒè¯¥Tag负责取得CollectionåQŒåƈ遍历执行子Tag

package diegoyun;

import java.util.Collection;
import java.util.Iterator;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;

import org.apache.commons.beanutils.PropertyUtils;

public class WithCollectionTag extends BodyTagSupport {
 private Object element = null;

 private Collection list = null;

 private Iterator iterator = null;

 public Object getElement() {
  return element;
 }

 public void setProperty(String property) throws JspException {
  //取得父Tag对象,òq¶ä¸”得到Collection
  WithObjectTag parent = (WithObjectTag) getParent();
  if (parent == null)
   throw new JspException("parent tag is null");
   try {
    Object propertyValue = PropertyUtils.getProperty(parent.getValue(),property);
    this.list = (Collection) propertyValue;
    if (list == null)
     throw new JspException("Collection is null");
   } catch (Exception e) {
    throw new JspException(e);
  }
 }

 public int doStartTag() throws JspException {
  //讄¡½®½W¬ä¸€ä¸ªå…ƒç´?然后执行子Tag
  iterator = list.iterator();
  if (iterator.hasNext())
   element = iterator.next();
   return EVAL_BODY_INCLUDE;
 }

 public int doAfterBody() {
  if (iterator.hasNext()) {
   //如果˜q˜å­˜åœ¨å­å…ƒç´ ,讄¡½®å­å…ƒç´?òq¶ä¸”再次执行子Tag
   //循环由此而来
   //否则不再执行子Tag
   element = iterator.next();
   return EVAL_BODY_AGAIN;
  }
  else
   return EVAL_PAGE;
 }
}

  ¾~–写 ElementOutputTag

package diegoyun;
import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

import org.apache.commons.beanutils.PropertyUtils;

public class ElementOutputTag extends TagSupport
{
 private Object propertyValue = null;
 public void setProperty(String property)throws JspException
 {
  WithCollectionTag parent = (WithCollectionTag)getParent();
  if(parent == null)
   throw new JspException("parent tag is null");
  try
  {
   //判断上层tag中是否存在该属性名¿U?如果存在,取得属性å€?否则报错
   propertyValue = PropertyUtils.getProperty(parent.getElement(), property);
  }
  catch (Exception e)
  {
   throw new JspException(e);
  }
 }
 public int doEndTag()throws JspException
 {
  try
  {
   //½Ž€å•的把值打印到jsp™åµé¢
   pageContext.getOut().print(propertyValue);
  }
  catch (IOException e)
  {
   throw new JspException(e);
  }
  return EVAL_PAGE;
 }
}

  ¾~–写tld

åQ?--WithObjectTag--åQ?br />åQœtagåQ?br /> åQœnameåQžwithObjectåQ?nameåQ?br /> åQœtag-classåQždiegoyun.WithObjectTagåQ?tag-classåQ?br /> åQœbody-contentåQžJSPåQ?body-contentåQ?br /> åQœattributeåQ?br />  åQœnameåQžvalueåQ?nameåQ?br />  åQœrequiredåQžfalseåQ?requiredåQ?br />  åQœrtexprvalueåQžtrueåQ?rtexprvalueåQ?br /> åQ?attributeåQ?br />åQ?tagåQ?br />åQ?--WithCollectionTag--åQ?br />åQœtagåQ?br /> åQœnameåQžwithCollectionåQ?nameåQ?br /> åQœtag-classåQždiegoyun.WithCollectionTagåQ?tag-classåQ?br /> åQœbody-contentåQžJSPåQ?body-contentåQ?br /> åQœattributeåQ?br />  åQœnameåQžpropertyåQ?nameåQ?br />  åQœrequiredåQžfalseåQ?requiredåQ?br />  åQœrtexprvalueåQžtrueåQ?rtexprvalueåQ?br /> åQ?attributeåQ?br />åQ?tagåQ?br />åQ?--ElementOutputTag--åQ?br />åQœtagåQ?br /> åQœnameåQželementoutåQ?nameåQ?br /> åQœtag-classåQždiegoyun.ElementOutputTagåQ?tag-classåQ?br /> åQœbody-contentåQžemptyåQ?body-contentåQ?br /> åQœattributeåQ?br />  åQœnameåQžpropertyåQ?nameåQ?br />  åQœrequiredåQžfalseåQ?requiredåQ?br />  åQœrtexprvalueåQžtrueåQ?rtexprvalueåQ?br /> åQ?attributeåQ?br />åQ?tagåQ?/td>

  ¾~–写jsp

åQ?@ page language="java" %åQ?br />åQ?@ page import="diegoyun.vo.*"%åQ?br />åQ?@ page import="java.util.*"%åQ?br />åQ?@ taglib uri="/WEB-INF/tlds/diego.tld" prefix="diego"%åQ?br />
åQœhtmlåQ?br />åQœbody bgcolor="#FFFFFF"åQ?br />åQ?
 Collection c = new ArrayList();

 Man man1 = new Man();
 man1.setName("diego");
 c.add(man1);

 Man man2 = new Man();
 man2.setName("Zidane");
 c.add(man2);

 Man man3 = new Man();
 man3.setName("Rui");
 c.add(man3);

 People p =new People();
 p.setMen(c);
 request.setAttribute("people",p);
%åQ?br />Test loop tag:
åQœbråQ?br />åQœdiego:withObject value="${people}"åQ?br />åQœdiego:withCollection property="men"åQ?br />åQœdiego:elementout property="name"/åQ?br />åQœbråQ?br />åQ?diego:withCollectionåQ?br />åQ?diego:withObjectåQ?br />åQ?bodyåQ?br />åQ?htmlåQ?/td>

  ˜qè¡Œ,则可以看åˆ? 

Test loop tag:
diego
Zidane
Rui


个äh觉得不错的一片文章,现在才知道Tag也可以这么用åQå­¦‹¹äh— æ¶¯å•ŠåQ?br />
有几个疑问:
1、在WithCollectionTagä¸­äØ“ä»€ä¹ˆæ²¡æœ‰è°ƒç”¨doEndTag()æ–ÒŽ³•åQŒè€Œä‹É用了doAfterBody()åQ?br />2、在ElementOutputTagä¸­äØ“ä»€ä¹ˆåªä½¿ç”¨äº†doEndTag()æ–ÒŽ³•åQ?br />doStartTag() 、doEndTag()、doAfterBody()不知该怎么用,什么时候用哪个åQŒä¸ç”¨å“ªä¸ªï¼Ÿè¯äh•™äº†ï¼

˜q˜æœ‰ž®±æ˜¯ä¸‹é¢å‡ ä¸ªå±žæ€§ï¼Œä¸çŸ¥é“该怎么用?
SKIP_BODY     SKIP_PAGE       EVAL_PAGE   EVAL_BODY_BUFFERED      
EVAL_BODY_INCLUDE           EVAL_BODY_AGAIN



]]>
关于数据库count的问é¢?/title><link>http://www.aygfsteel.com/xuechen0721/archive/2006/11/13/80843.html</link><dc:creator>å…µäÍ城下</dc:creator><author>å…µäÍ城下</author><pubDate>Mon, 13 Nov 2006 03:38:00 GMT</pubDate><guid>http://www.aygfsteel.com/xuechen0721/archive/2006/11/13/80843.html</guid><wfw:comment>http://www.aygfsteel.com/xuechen0721/comments/80843.html</wfw:comment><comments>http://www.aygfsteel.com/xuechen0721/archive/2006/11/13/80843.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xuechen0721/comments/commentRss/80843.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xuechen0721/services/trackbacks/80843.html</trackback:ping><description><![CDATA[ <p>有以下一个表åQšprogrammer<br />id        name      adresss<br />1         xc          cn<br />2         xc          ae<br />2         xc           rr<br /><br />现在我要计算æ€ÀL¡æ•ŽÍ¼Œç”¨countåQ?select count(*) as acount from programmeråQŒè¿™æ¡è¯­å¥è¿”å›?ã€?br />因䨓˜q™æ¡è¯­å¥count(*)是计½Ž—的所有的字段åQŒè€Œæˆ‘现在˜q™æ ·ä¸€ä¸ªè¦æ±‚,ž®±æ˜¯è¯´å†™ä¸€æ¡sql语句count idå’Œname 两个字段åQŒåƈåŽÀLŽ‰é‡å¤è®°å½•åQŒå°±æ˜¯è¯´æˆ‘查询idå’Œname两个字段åQŒåŽ»æŽ‰é‡å¤è®°å½•åÆˆ˜q”回记录的条数ã€?br />想了很多办法都没成功åQŒç½‘上有˜q™ä¹ˆä¸€æ¡è¯­å¥ï¼šselect count(distinct 'id&name') as acount from programmer ,从语句上看好像符合了我的要求åQŒä½†æ˜¯è¿™æ¡sql语句˜q”回的却æ˜? åQŒè€Œä¸æ˜? åQŒä¸çŸ¥åˆ°ä¸ÞZ»€ä¹ˆï¼Œ˜q˜å‘各位è¯äh•™ã€‚有什么其他的办法吗?åQŸæ€¥ç­‰</p> <img src ="http://www.aygfsteel.com/xuechen0721/aggbug/80843.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xuechen0721/" target="_blank">å…µäÍ城下</a> 2006-11-13 11:38 <a href="http://www.aygfsteel.com/xuechen0721/archive/2006/11/13/80843.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>久违了啊åQé‡åˆîC¸€ä¸ªå…³äºŽsession id的问题,向大家请教!http://www.aygfsteel.com/xuechen0721/archive/2006/11/11/80552.htmlå…µäÍ城下兵äÍ城下Sat, 11 Nov 2006 03:07:00 GMThttp://www.aygfsteel.com/xuechen0721/archive/2006/11/11/80552.htmlhttp://www.aygfsteel.com/xuechen0721/comments/80552.htmlhttp://www.aygfsteel.com/xuechen0721/archive/2006/11/11/80552.html#Feedback5http://www.aygfsteel.com/xuechen0721/comments/commentRss/80552.htmlhttp://www.aygfsteel.com/xuechen0721/services/trackbacks/80552.html      假设我现在有两个用户åQšuser1、user2。user1打开‹¹è§ˆå™¨åŽç™»é™†åQŒåœ¨åŽå°æˆ‘å¾—åˆîC¸€ä¸ªsessionID1来记录该用户的各¿Uä¿¡æ¯ã€‚在同一‹¹è§ˆå™¨ä¸­åˆä»¥user2的帐æˆïL™»é™†ï¼Œæˆ‘后台得到的sessionID2åQŒçŽ°åœ¨è¿™ä¸ªsessionID2与sessionID1是相同的。这å¯ÒŽˆ‘çš„ä¿¡æ¯å¤„ç†å¸¦æ¥äº†æ··äØ•ã€?br />      我知道如果用æˆäh‰“开另一个浏览器用user2的帐æˆïL™»é™†ï¼Œå¾—到的sessionID肯定是不相同的,现在我想问的是在同一‹¹è§ˆå™¨ä¸­ä»¥ä¸åŒçš„帐号登陆åQŒèƒ½å¾—到不同的sessionID吗?或者可以采取其他另外的操作来避免相同的sessionID吗?不吝赐教åQ?img src ="http://www.aygfsteel.com/xuechen0721/aggbug/80552.html" width = "1" height = "1" />

]]>
最˜q‘比较忙åQå¿™å®ŒåŽä¸€ç‚¹å¿ƒå¾?/title><link>http://www.aygfsteel.com/xuechen0721/archive/2006/09/09/68754.html</link><dc:creator>å…µäÍ城下</dc:creator><author>å…µäÍ城下</author><pubDate>Sat, 09 Sep 2006 12:53:00 GMT</pubDate><guid>http://www.aygfsteel.com/xuechen0721/archive/2006/09/09/68754.html</guid><wfw:comment>http://www.aygfsteel.com/xuechen0721/comments/68754.html</wfw:comment><comments>http://www.aygfsteel.com/xuechen0721/archive/2006/09/09/68754.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xuechen0721/comments/commentRss/68754.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xuechen0721/services/trackbacks/68754.html</trackback:ping><description><![CDATA[ <font color="#0000ff">         好久没有更新我的blog了!呵呵åQæœ€˜q‘比较忙åQ?br />         ˜q›å…¥å…¬å¸ç”¨å·²¾læ•´æ•?个月了,最˜q‘完成了™å¹ç›®å‡çñ”版本中一个新增功能,做完以后现在回想èµäh¥åQŒæ„Ÿè§‰å¾ˆ½Ž€å•,没做什么,可当时做的时候怎么ž®±æ„Ÿè§‰é‚£ä¹ˆå¤æ‚å‘¢åQï¼ˆå½“初的开发和后箋的解bugåQŒç¡®å®žèŠ±äº†ä¸ž®‘精力)<br />         通过˜q™æ¬¡çš„开发,对公司这套系¾lŸæž¶æž„有了一个大概的了解åQŒå’Œå¤§å®¶è®¨è®ºå…׃ín一下:<br />         公司是做银行金融软äšg的,客户主要面向国外åQˆå¦‚亚洲的渣打银行)。这套系¾lŸç»™æˆ‘çš„½W¬ä¸€æ„Ÿè§‰ž®±æ˜¯åQšè‡ªå·±å‘明了“轮子”。(看来公司˜q˜æ˜¯æœ‰ä¸€ç‚¹åº•è•´çš„åQ?br />         Rod Johnson说不要重复发明“轮子â€?åQŒå¯æˆ‘好像看åˆîCº†ä¸€ä¸ªæ–°â€œè½®å­â€ã€‚这个系¾lŸä¹Ÿæ˜¯å¾ç«‹åœ¨J2EEçš„åã^åîC¸ŠåQŒä½†æ¯”较ç‰ÒŽ®ŠåQŒä¸æ˜¯å¸¸è§çš„web¾pȝ»ŸåQŒå®ƒæ˜¯ä¸€ä¸ªå‚数配¾|®ç³»¾lŸï¼Œweb中的所有业务元素都可以由配¾|®æ–‡ä»¶æ¥æŽ§åˆ¶ã€‚在web½E‹åºä¹‹å¤–åQŒè¿˜æœ‰ä¸€å¥—用Java Swing开发的配套软äšgåQŒå¯¹äºŽä¸åŒçš„业务做不同的配置åQŒç”Ÿæˆä¸€å¥—参æ•îC¾›web使用。(灉|´»æ€§ç›¸å½“大åQ?br />         ¾l“合MVC来讨è®ÞZ¸€ä¸‹è¿™å¥—ç³»¾lŸï¼šåQˆç³»¾lŸåˆ†ä¸ºweb端和AP端)<br />         MODELåQˆAPåQ‰ï¼šçœ‹æ¥J2EE中Enity Bean¼‹®å®žæœ‰å¾ˆå¤šè¯Ÿç—…,公司没有采用ä»ÖM½•çš„ORMåQŒè€Œæ˜¯ç›´æŽ¥é€šè¿‡SQL语句与数据库交互。但使用了Session BeanåQˆstatelessåQ?来做facadeåQŒå°è£…DAO层,来实现持久化逻辑。大概框架如此,不过其中ä¸ÞZº†å®žçŽ°åˆ†å±‚åQŒè¿˜æœ‰å¾ˆå¤šçš„control层和实现层。我˜q˜æ²¡å½Õdº•理解ž®×ƒ¸è¯´äº†ã€?br />        VIEW、CONTROLåQˆWEBåQ‰ï¼šå…¬å¸¾pȝ»Ÿçš„view层没有采用ä“Q何的开源框æžÓž¼Œæ‰€æœ‰çš„动态逻辑都是通过Tag来实现的。其实和strutsä¸€æ øP¼Œåªä¸˜q‡struts是写好的TagåQŒè€Œæˆ‘们是用我们自己写的TagåQŒè™½ç„¶æ¯”较复杂,但控制的¾_’度¾_„¡»†åQŒæ˜¯struts所不能比的åQˆä¸æ˜¯è´¬ä½ŽstrutsåQŒåªæ˜¯åœ¨¾_’度斚w¢åQŒstruts¼‹®å®žä¸æ€Žä¹ˆæ øP¼‰ã€?br />        有一ç‚ÒŽˆ‘要说的是状态管理。公司系¾lŸåƈ没有使用J2EE中的有状态的Session BeanåQŒè€Œæ˜¯æŠŠæ‰€æœ‰çš„状态都保存在httpSession中,¾|‘上看到一些文章说åQŒSession中存储大量的信息会增加服务器的负担,不知道公司在性能斚w¢æ˜¯æ€Žä¹ˆè€ƒè™‘的。我觉得状态管理是个很头疼的问题,ž®±æ˜¯SSH架构中,Spring也不能管理状态,我知道的ž®±æ˜¯J2EE中有状态会话Bean是一个管理状态的¾l„äšg。把状态信息存储在Session中ä‹É用è“v来确实很方便åQŒä½†server要维护这个状态就很耗资源了ã€?br />         ˜q˜æœ‰ä¸€ç‚¹å°±æ˜¯ï¼Œå…¬å¸¾pȝ»Ÿä¸­å¤§é‡çš„使用了JSåQŒå› ä¸ºæˆ‘对JS不熟åQŒæ‰€ä»¥è®©æˆ‘写JS比较头疼åQŒç•™ä¸‹çš„印象比较深。我曄¡»é—®è¿‡æˆ‘的一个朋友,问他公司的系¾lŸä¸­JSçš„ä‹É用程度,他的回答是:能不用尽量不用。所以我现在比较疑惑åQŒå¯¹JSçš„ä‹É用是不是有一个度的问题呢åQ?br />         ˜q˜æœ‰ä¸€ç‚¹ï¼Œæˆ‘前面说˜q‡äº†åQŒæˆ‘们公司的¾pȝ»Ÿæ˜¯ä¸€ä¸ªå‚数配¾|®ç³»¾lŸï¼Œé…ç½®ä¸€ä¸ªåº”用需求,有一整套参数åQŒéƒ½æ˜¯XMLæ–‡äšg。所以在¾pȝ»Ÿä¸­çš„æ•°æ®äº¤äº’都是通过XML来组¾l‡çš„åQˆä¹Ÿž®±æ˜¯é€šè¿‡DOMåQ‰ã€‚比如说åQŒå½“一个用æˆïL™»å½•后åQŒä¼šä»Žæ•°æ®åº“和配¾|®å‚æ•îC¸­è¯Õd–˜q™ä¸ªç”¨æˆ·çš„相关信息,存储在DOM中,然后伴随˜q™ä¸ªç”¨æˆ·çš„æ•´ä¸ªä¼šè¯å‘¨æœŸï¼Œäº¤æ˜“的状态和信息都可以从˜q™ä¸ªDOM中读取。以前在学习XMLæ—Óž¼Œä¹¦ä¸­æ€ÀL˜¯è¯´XML是组¾l‡æ•°æ®ä¼ é€’数据的åQŒå½“时不理解åQŒçŽ°åœ¨æ€È®—明白了!呵呵åQ?br />         说了很多åQŒåªæ˜¯ä¸€ä¸ªåˆæ­¥çš„了解åQŒæ¬¢˜qŽå„位网友发表看法!<br />         好了åQŒä¸è¯´äº†åQŒåˆšä¸‹äº†éƒ¨ç”µå½±ï¼Œçœ‹ç”µå½±åŽ»äº†ï¼å‘µå‘µåQ?/font> <img src ="http://www.aygfsteel.com/xuechen0721/aggbug/68754.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xuechen0721/" target="_blank">å…µäÍ城下</a> 2006-09-09 20:53 <a href="http://www.aygfsteel.com/xuechen0721/archive/2006/09/09/68754.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>谁有Hibernate源代码,¾l™ä¸€ä¸?/title><link>http://www.aygfsteel.com/xuechen0721/archive/2006/05/19/47043.html</link><dc:creator>å…µäÍ城下</dc:creator><author>å…µäÍ城下</author><pubDate>Fri, 19 May 2006 06:03:00 GMT</pubDate><guid>http://www.aygfsteel.com/xuechen0721/archive/2006/05/19/47043.html</guid><wfw:comment>http://www.aygfsteel.com/xuechen0721/comments/47043.html</wfw:comment><comments>http://www.aygfsteel.com/xuechen0721/archive/2006/05/19/47043.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xuechen0721/comments/commentRss/47043.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xuechen0721/services/trackbacks/47043.html</trackback:ping><description><![CDATA[谁有Hibernate源代码,¾l™ä¸€ä¸?img src ="http://www.aygfsteel.com/xuechen0721/aggbug/47043.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xuechen0721/" target="_blank">å…µäÍ城下</a> 2006-05-19 14:03 <a href="http://www.aygfsteel.com/xuechen0721/archive/2006/05/19/47043.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于EJB的调用问题(初始化上下文åQ?/title><link>http://www.aygfsteel.com/xuechen0721/archive/2006/04/30/44123.html</link><dc:creator>å…µäÍ城下</dc:creator><author>å…µäÍ城下</author><pubDate>Sun, 30 Apr 2006 01:28:00 GMT</pubDate><guid>http://www.aygfsteel.com/xuechen0721/archive/2006/04/30/44123.html</guid><wfw:comment>http://www.aygfsteel.com/xuechen0721/comments/44123.html</wfw:comment><comments>http://www.aygfsteel.com/xuechen0721/archive/2006/04/30/44123.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xuechen0721/comments/commentRss/44123.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xuechen0721/services/trackbacks/44123.html</trackback:ping><description><![CDATA[ <font color="#006400">  ½W”者ä‹É用的应用服务器从Weblogic到现在的WebSphereåQŒåœ¨EJB的调用问题上始终存在的一点疑è™?今天说出来和大家探讨一下ã€?br />  在远½E‹è°ƒç”¨EJBæ—Óž¼Œæœ‰ä¸€ä¸ªåˆå§‹åŒ–环境的问题,有以下两¿Uä»£ç ï¼š<br />一、Context ctx = new InitialContext();<br />二、String initialFactory = "com.ibm.websphere.naming.WsnInitialContextFactory";<br />     String initialURL = "iiop://localhost:2809";<br />     Hashtable env = new Hashtable();<br />     env.put(Context.PROVIDER_URL, initialURL);<br />     env.put(Context.INITIAL_CONTEXT_FACTORY,initialFactory);<br />     Context ctx = new InitialContext(env);<br /><br />       ½W”者也看了很多˜q™æ–¹é¢çš„书,大多æ•îC¹¦ä¸­éƒ½æ˜¯æŒ‰ç…§ç¬¬ä¸€¿Uçš„写法åQŒå¤§æ¦‚都˜q™æ ·è®ø™¿°åQŒè¯´EJB已经在容器中初始化,所以只需调用默认的初始化环境卛_¯åQŒä½†æ˜¯å´éƒ½ä¸ä»‹ç»æ€Žä¹ˆåœ¨å®¹å™¨ä¸­åˆå§‹åŒ–这些信息。根据笔者的使用¾léªŒåQŒä¸è®„¡½®å®¹å™¨çš„æƒ…况下åQˆå…¶å®žç¬”者也不知道怎么讄¡½®åQ‰ä‹É用第一¿Uæ–¹æ³•都提示不能初始化上下文ã€?br />  ½W”者现在都使用½W¬äºŒ¿Uç¡¬¾~–码的方式,现在惌™¯·æ•™å¤§å®Óž¼Œå¦‚果惌™®¾¾|®EJB的容器,利用½W¬ä¸€¿Uæ–¹æ³•,那该怎么讄¡½®å‘¢ï¼Ÿæ¯•竟每次调用旉™ƒ½æŒ‰ç¬¬äºŒç§æ–ÒŽ³•很麻烦ã€?br />  ˜q˜æœ‰ä¸€ä¸ªå°±æ˜¯JNDI的书写问题有两种åQšï¼ˆæ¯”如½W”者创建的EJBåäØ“HelloEntityåQ‰ä¸€¿Uæ˜¯ejb/HelloEntityåQŒè¿˜æœ‰ä¸€¿Uæ˜¯java:comp/env/ejb/HelloEntity<br />请问java:comp/env怎么讄¡½®åQŒåœ¨å“ªä¸ªé…ç½®æ–‡äšg中设¾|®ï¼Ÿ½W”者在WebSphere的配¾|®æ–‡ä»¶ibm-ejb-jar-bnd.xmi中设¾|®äº†java:comp/envåQŒå¯åœ¨ä‹É用时˜q˜æ˜¯æŠ¥é”™åQŒè¯´æ‰¾ä¸åˆ°java˜q™ä¸ªåˆå§‹åŒ–上下文åQŒä¸æ‡‚,è¯ähŒ‡æ•™è¯¥æ€Žä¹ˆè®„¡½®åQ?/font> <img src ="http://www.aygfsteel.com/xuechen0721/aggbug/44123.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xuechen0721/" target="_blank">å…µäÍ城下</a> 2006-04-30 09:28 <a href="http://www.aygfsteel.com/xuechen0721/archive/2006/04/30/44123.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CMP的本地方法调ç”?/title><link>http://www.aygfsteel.com/xuechen0721/archive/2006/04/28/43879.html</link><dc:creator>å…µäÍ城下</dc:creator><author>å…µäÍ城下</author><pubDate>Fri, 28 Apr 2006 13:54:00 GMT</pubDate><guid>http://www.aygfsteel.com/xuechen0721/archive/2006/04/28/43879.html</guid><wfw:comment>http://www.aygfsteel.com/xuechen0721/comments/43879.html</wfw:comment><comments>http://www.aygfsteel.com/xuechen0721/archive/2006/04/28/43879.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xuechen0721/comments/commentRss/43879.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xuechen0721/services/trackbacks/43879.html</trackback:ping><description><![CDATA[ <p>        <font color="#0000ff">¾l§ç®‹æ˜¨å¤©å‘的随笔åQŒè™½ç„¶è§£å†³äº†CMP的部¾|²å‘布问题,在WebSphere中成功发布。但以我的经验写出的代码却不能调用它åQå¼„了一下午åQŒæœ‰ç‚šwƒé—øP¼å‘大家说è¯ß_¼<br />       先向大家叙述一下我的CMP的情况:<br />       我ä‹É用的CMP使用的本地接口,没有建立˜qœç¨‹æŽ¥å£ã€‚我惌™¿ç”¨facade模式åQŒä¹Ÿž®±æ˜¯åœ¨ä¸€ä¸ªSessionBean中调用实体BeanåQŒæ‰€ä»¥æˆ‘使用本地接口。我的本意是˜q™æ ·å¯ä»¥å‡å°‘频繁的远½E‹è°ƒç”¨è€Œå¸¦æ¥çš„资源占用ã€?br />       然而我在调试时wsad报错åQŒä»ŽæŠ¥é”™ä¸­æ˜¾½Cºæ‰¾ä¸åˆ°˜q™ä¸ªCMPåQŒåŽæ¥æˆ‘设了断点在下面这个语句:<br />ctx.lookup("ejb/com/diablo/ProgrammerLocalHome);˜q™ä¸ªè¯­å¥æ˜¯åœ¨ä¸€ä¸ªtry语句中,发现½E‹åº˜qè¡Œ˜q™å¥åŽå°±æ•捉到异常,直接跛_ˆ°catch中了。所以确定是JNDI出问题了啊!<br />       以我å¯ÒŽœ¬åœ°æŽ¥å£çš„认识åQŒbean之间调用属于内部调用åQŒåˆ©ç”¨æœ¬åœ°æŽ¥å£å¯ä»¥å‡ž®‘资源的占用。然而却不能如我所愿啊åQå¦‚果把˜q™ä¸ªCMP设成˜qœç¨‹æŽ¥å£åQŒå°±æ²¡æœ‰ä»ÖM½•问题ã€?br />       想问问各位,˜q™ä¸ªCMP的本地接口到底应该怎么调用å‘?˜q˜æ˜¯æˆ‘哪里认识有错误呢?  <br />       ‹Æ¢è¿ŽæŒ‡ç‚¹åQ?/font></p> <img src ="http://www.aygfsteel.com/xuechen0721/aggbug/43879.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xuechen0721/" target="_blank">å…µäÍ城下</a> 2006-04-28 21:54 <a href="http://www.aygfsteel.com/xuechen0721/archive/2006/04/28/43879.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse 中CMP的部¾|²å‘布问é¢?/title><link>http://www.aygfsteel.com/xuechen0721/archive/2006/04/27/43625.html</link><dc:creator>å…µäÍ城下</dc:creator><author>å…µäÍ城下</author><pubDate>Thu, 27 Apr 2006 09:28:00 GMT</pubDate><guid>http://www.aygfsteel.com/xuechen0721/archive/2006/04/27/43625.html</guid><wfw:comment>http://www.aygfsteel.com/xuechen0721/comments/43625.html</wfw:comment><comments>http://www.aygfsteel.com/xuechen0721/archive/2006/04/27/43625.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xuechen0721/comments/commentRss/43625.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xuechen0721/services/trackbacks/43625.html</trackback:ping><description><![CDATA[ <p>我创å»ÞZº†ä¸€ä¸ªç®€å•çš„CMPåQŒæ˜¯åŸÞZºŽæ•°æ®åº“中的一个表的ã€?br />创徏˜q‡ç¨‹å’Œéƒ¨¾|²è¿‡½E‹éƒ½å¾ˆæ­£å¸¸ï¼Œä½†æˆ‘在向应用服务器(WebSphereåQ‰å‘布时却出çŽîC»¥ä¸‹æŠ¥é”™ï¼š</p> <p>[06-4-27 11:59:52:531 CST] 3e725b31 Helpers       W NMSV0605W: 使用名称â€?/p> <p>comp/PM/WebSphereCMPConnectionFactory”从上下文“java:”中查找的引用对象发送到 </p> <p>JNDI 命名½Ž¡ç†å™¨åƈ且导致异常。引用数据如下:<br />引用工厂¾cÕdåQšcom.ibm.ws.naming.util.IndirectJndiLookupObjectFactory<br />引用工厂¾cÖM½¾|?URLåQ?lt;null><br />Reference Class Name: java.lang.Object<br />Type: JndiLookupInfo<br />Content: JndiLookupInfo: jndiName="jdbc/Default"; providerURL=""; </p> <p>initialContextFactory=""</p> <p>异常数据如下åQ?br />javax.naming.NameNotFoundException: Context: </p> <p>localhost/nodes/localhost/servers/server1, name: jdbc/Default: First </p> <p>component in name Default not found.  Root exception is </p> <p>org.omg.CosNaming.NamingContextPackage.NotFound: </p> <p>IDL:omg.org/CosNaming/NamingContext/NotFound:1.0<br /> at </p> <p>com.ibm.ws.naming.ipcos.WsnOptimizedNamingImpl.do_resolve_complete_info(Ws</p> <p>nOptimizedNamingImpl.java:968)<br /> at </p> <p>com.ibm.ws.naming.cosbase.WsnOptimizedNamingImplBase.resolve_complete_info</p> <p>(WsnOptimizedNamingImplBase.java:1399)<br /> at </p> <p>com.ibm.WsnOptimizedNaming._NamingContextStub.resolve_complete_info(Unknow</p> <p>n Source)<br /> at </p> <p>com.ibm.ws.naming.jndicos.CNContextImpl.cosResolve(CNContextImpl.java:3491</p> <p>)<br /> at </p> <p>com.ibm.ws.naming.jndicos.CNContextImpl.doLookup(CNContextImpl.java:1519)<br /> at </p> <p>com.ibm.ws.naming.jndicos.CNContextImpl.doLookup(CNContextImpl.java:1480)<br /> at </p> <p>com.ibm.ws.naming.jndicos.CNContextImpl.lookupExt(CNContextImpl.java:1187)<br /> at </p> <p>com.ibm.ws.naming.util.IndirectJndiLookupObjectFactory$1.run(IndirectJndiL</p> <p>ookupObjectFactory.java:372)<br /> at </p> <p>com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.ja</p> <p>va:111)<br /> at </p> <p>com.ibm.ws.naming.util.IndirectJndiLookupObjectFactory.getObjectInstanceEx</p> <p>t(IndirectJndiLookupObjectFactory.java:221)<br /> at </p> <p>com.ibm.ws.naming.util.Helpers.processSerializedObjectForLookupExt(Helpers</p> <p>.java:868)<br /> at </p> <p>com.ibm.ws.naming.urlbase.UrlContextHelper.processBoundObjectForLookup(Url</p> <p>ContextHelper.java:152)<br /> at </p> <p>com.ibm.ws.naming.java.javaURLContextRoot.processBoundObjectForLookup(java</p> <p>URLContextRoot.java:398)<br /> at </p> <p>com.ibm.ws.naming.urlbase.UrlContextImpl.lookup(UrlContextImpl.java:1278)<br /> at </p> <p>com.ibm.ws.naming.java.javaURLContextRoot.lookup(javaURLContextRoot.java:1</p> <p>96)<br /> at </p> <p>com.ibm.ws.naming.java.javaURLContextRoot.lookup(javaURLContextRoot.java:1</p> <p>37)<br /> at javax.naming.InitialContext.lookup(InitialContext.java:360)<br /> at </p> <p>com.ibm.ws.ejbpersistence.beanextensions.ConcreteBeanClassExtensionImpl.lo</p> <p>okup(Unknown Source)<br /> at </p> <p>com.ibm.ws.ejbpersistence.beanextensions.ConcreteBeanClassExtensionImpl.ge</p> <p>tConnectionFactory(Unknown Source)<br /> at </p> <p>com.ibm.ws.ejbpersistence.beanextensions.PMModuleCookieImpl.beanInstall(Un</p> <p>known Source)<br /> at </p> <p>com.ibm.ws.ejbpersistence.beanextensions.PersistenceManagerImpl.beanInstal</p> <p>l(Unknown Source)<br /> at </p> <p>com.ibm.ejs.container.EJSContainer.loadBeanMetaData(EJSContainer.java:1367</p> <p>)<br /> at </p> <p>com.ibm.ejs.container.EJSContainer.getHomeWrapperCommon(EJSContainer.java:</p> <p>1012)<br /> at </p> <p>com.ibm.ejs.container.EJSContainer.getHomeInstance(EJSContainer.java:934)<br /> at </p> <p>com.ibm.ejs.container.EJSContainer.startBean(EJSContainer.java:913)<br /> at </p> <p>com.ibm.ws.runtime.component.EJBContainerImpl.startBean(EJBContainerImpl.j</p> <p>ava:1301)<br /> at </p> <p>com.ibm.ws.runtime.component.EJBContainerImpl.install(EJBContainerImpl.jav</p> <p>a:1034)<br /> at </p> <p>com.ibm.ws.runtime.component.EJBContainerImpl.start(EJBContainerImpl.java:</p> <p>1508)<br /> at </p> <p>com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.j</p> <p>ava:505)<br /> at </p> <p>com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectSta</p> <p>rt(DeployedApplicationImpl.java:808)<br /> at </p> <p>com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.j</p> <p>ava:354)<br /> at </p> <p>com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplica</p> <p>tionImpl.java:578)<br /> at </p> <p>com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(Applicati</p> <p>onMgrImpl.java:299)<br /> at </p> <p>com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.j</p> <p>ava:256)<br /> at </p> <p>com.ibm.ws.runtime.component.ContainerImpl.startComponents(ContainerImpl.j</p> <p>ava:536)<br /> at </p> <p>com.ibm.ws.runtime.component.ContainerImpl.start(ContainerImpl.java:413)<br /> at </p> <p>com.ibm.ws.runtime.component.ApplicationServerImpl.start(ApplicationServer</p> <p>Impl.java:128)<br /> at </p> <p>com.ibm.ws.runtime.component.ContainerImpl.startComponents(ContainerImpl.j</p> <p>ava:536)<br /> at </p> <p>com.ibm.ws.runtime.component.ContainerImpl.start(ContainerImpl.java:413)<br /> at </p> <p>com.ibm.ws.runtime.component.ServerImpl.start(ServerImpl.java:183)<br /> at com.ibm.ws.runtime.WsServer.start(WsServer.java:128)<br /> at com.ibm.ws.runtime.WsServer.main(WsServer.java:225)<br /> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br /> at </p> <p>sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:</p> <p>79)<br /> at </p> <p>sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorIm</p> <p>pl.java:41)<br /> at java.lang.reflect.Method.invoke(Method.java:386)<br /> at com.ibm.ws.bootstrap.WSLauncher.main(WSLauncher.java:105)<br /> at </p> <p>com.ibm.etools.websphere.tools.runner.api.ServerRunnerV5$1.run(ServerRunne</p> <p>rV5.java:97)</p> <p>从报错信息中看出好像是CMP的连接初始化工厂配置有问题。由于我刚上手ä‹É用Eclipse + </p> <p>WebSphereåQˆä»¥å‰ä‹É用的是Jbuilder + WeblogicåQ‰ï¼Œä½†æˆ‘有一个疑问:<br />在部¾|²æˆåŠŸåŽå‘å¸ƒæ—¶æ€Žä¹ˆä¼šå‡ºçŽ°åˆå§‹åŒ–å·¥åŽ‚çš„é—®é¢˜å‘¢åQŸæˆ‘˜q˜æ²¡æœ‰è°ƒç”¨è¿™ä¸ªCMP啊?只是发布åˆ?/p> <p>WebSphere而已åQˆç›¸å½“于发布到Weblogic应用服务器)åQŒäؓ什么会初始化环境工厂呢åQŸä»¥æˆ‘çš„</p> <p>¾léªŒåªæœ‰åœ¨å‘布成功后åQŒå®¢æˆïL«¯è°ƒç”¨CMP时才会涉及到˜q™ä¸ªé—®é¢˜å§ï¼<br />我实在弄不明白。难道这两个应用服务期在˜q™ä¸€ç‚¹ä¸Šæœ‰åŒºåˆ«ï¼Ÿ<br />另外åQŒå¦‚果发布时˜q›è¡Œåˆå§‹åŒ–环境工厂,那我创徏的SessionBeanä¸ÞZ»€ä¹ˆå°±æ²¡æœ‰˜q™ä¸ªé—®é¢˜åQŒéƒ¨¾|?/p> <p>发布都很正常åQŒä¸çŸ¥é“ä¸ÞZ»€ä¹ˆï¼Ÿ</p> <p>问题困扰我很久了。期望解å†Ïx–¹æ¡ˆï¼</p> <img src ="http://www.aygfsteel.com/xuechen0721/aggbug/43625.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xuechen0721/" target="_blank">å…µäÍ城下</a> 2006-04-27 17:28 <a href="http://www.aygfsteel.com/xuechen0721/archive/2006/04/27/43625.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> Ö÷Õ¾Ö©Öë³ØÄ£°å£º <a href="http://" target="_blank">¶«ÎÚÖéÄÂÇ߯ì</a>| <a href="http://" target="_blank">Ì«¹ÈÏØ</a>| <a href="http://" target="_blank">ׯÀËÏØ</a>| <a href="http://" target="_blank">ÑîÆÖÇø</a>| <a href="http://" target="_blank">ËÉÅËÏØ</a>| <a href="http://" target="_blank">ĵµ¤½­ÊÐ</a>| <a href="http://" target="_blank">Ð˰²ÏØ</a>| <a href="http://" target="_blank">ÑÉêÈ</a>| <a href="http://" target="_blank">ÓÜÁÖÊÐ</a>| <a href="http://" target="_blank">ºÏÑôÏØ</a>| <a href="http://" target="_blank">ãþÑôÏØ</a>| <a href="http://" target="_blank">ÔÆÄÏÊ¡</a>| <a href="http://" target="_blank">Ð˺ÍÏØ</a>| <a href="http://" target="_blank">ÕżҿÚÊÐ</a>| <a href="http://" target="_blank">·îÐÂÏØ</a>| <a href="http://" target="_blank">ÁÙ°²ÊÐ</a>| <a href="http://" target="_blank">ʯʨÊÐ</a>| <a href="http://" target="_blank">Âò³µ</a>| <a href="http://" target="_blank">ºØÖÝÊÐ</a>| <a href="http://" target="_blank">¸Ê×ÎÏØ</a>| <a href="http://" target="_blank">ÃöÇåÏØ</a>| <a href="http://" target="_blank">ÍÁÄ¬ÌØ×óÆì</a>| <a href="http://" target="_blank">½ðƽ</a>| <a href="http://" target="_blank">Á¬³ÇÏØ</a>| <a href="http://" target="_blank">°ËËÞÏØ</a>| <a href="http://" target="_blank">Ëɽ­Çø</a>| <a href="http://" target="_blank">½­ÓÍÊÐ</a>| <a href="http://" target="_blank">ÏãºÓÏØ</a>| <a href="http://" target="_blank">ÈÀÌÁÏØ</a>| <a href="http://" target="_blank">ÖÐÄþÏØ</a>| <a href="http://" target="_blank">¾üÊÂ</a>| <a href="http://" target="_blank">¸§ÖÝÊÐ</a>| <a href="http://" target="_blank">½·áÊÐ</a>| <a href="http://" target="_blank">¼ÎÓø¹ØÊÐ</a>| <a href="http://" target="_blank">ÜþÑôÊÐ</a>| <a href="http://" target="_blank">ƾÏéÊÐ</a>| <a href="http://" target="_blank">Ѱµé</a>| <a href="http://" target="_blank">Ìì×£</a>| <a href="http://" target="_blank">ÎÚËÕÊÐ</a>| <a href="http://" target="_blank">Ëç½­ÏØ</a>| <a href="http://" target="_blank">Ä«Öñ¹¤¿¨ÏØ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>