盡人事而順天命

          關注 esb , soa ,設計模式,快速組件式開發

             :: 首頁 :: 聯系 :: 聚合  :: 管理
            6 Posts :: 0 Stories :: 1 Comments :: 0 Trackbacks

          2006年3月15日 #

          沒有想到會碰到這樣的一個問題,百思不得其解,貼出來希望哪位也在使用 db2? type2 app jdbc 的兄弟幫忙分析一下: 

          使用 ibatis? sql map以及 dao 框架 ,使用 JTA 事務管理,在 websphere 5.1 以及 jboss 4.1 上測試,都出現以下的怪現象: 

          使用? sql map 執行 insert? 操作的時候, 聲明如下的 sql map:

          <insert?id="ppl_t1.insert"?parameterClass="com.surekam.ppl.dao.test.PPLT1">
          ????????asfafdafsdafafsd?values?(#projId#,#name#);
          </insert>
          也就是說,一個完全不合法的 sql 語句,但是,在執行的時候, db2 jdbc 居然不報錯!!查找到 ibatis 的 sql 執行部分的代碼: SqlExecutor 類的: 
           
          ?1public?int?executeUpdate(RequestScope?request,?Connection?conn,?String?sql,?Object[]?parameters)
          ?2??????throws?SQLException?{
          ?3????ErrorContext?errorContext?=?request.getErrorContext();
          ?4????errorContext.setActivity("executing?update");
          ?5????errorContext.setObjectId(sql);
          ?6
          ?7????PreparedStatement?ps?=?null;
          ?8????int?rows?=?0;
          ?9
          10????try?{
          11??????errorContext.setMoreInfo("Check?the?SQL?Statement?(preparation?failed).");
          12??????ps?=?conn.prepareStatement(sql);
          13
          14??????errorContext.setMoreInfo("Check?the?parameters?(set?parameters?failed).");
          15??????request.getParameterMap().setParameters(request,?ps,?parameters);
          16
          17??????errorContext.setMoreInfo("Check?the?statement?(update?failed).");
          18
          19??????ps.execute();
          20??????rows?=?ps.getUpdateCount();
          21????}

          22????finally?{
          23??????closeStatement(ps);
          24????}

          25
          26????return?rows;
          27??}


          其中并沒有什么特別的地方,可是? PrepardStatement 在執行的時候就是不 拋出 SQLException ,而是處理成 SQLWarning ,可以通過 getWarning 取到錯誤信息. 

          而直接自己寫一個測試,直接去測試這樣一個不合法的 sql ,是會拋出異常的.
          db2jdbc 的 bug ?? 還是其它哪里的環境設置?? 

          posted @ 2006-04-03 10:11 boss_ch 閱讀(639) | 評論 (1)編輯 收藏

          使用模板對頁面布局進行管理,是一直以來的一個大問題,從以前的 include 方式到后來使用 tiles 進行布局,對于一個新的項目來說,我覺得布局、安全性、權限等這些東西,都是先要考慮的。

          布局管理的目標是什么?? 一般的應用(或是網站)中,具體內容部分相對是比較固定的,但是其外框卻可能隨客戶的喜好而有不同的修改(或是類似網站改版),那么,我認為,使用布局管理的主要目的,就是在這種布局管理修改時,能從容應對,只改動最可能少的文件。

          為了達到只改動最可能少的文件的目錄,那么,自然的,我們會想到類似于OO語言中的繼承機制,如果布局是由父類管理的,那么改動時只改動父類就可以了。類似的,模板管理的布局,也應該是達到 這樣的目標的。 從這個角度來說, tiles 最大的可取之處,在于其頁面配置中的繼承機制(不了解 tiles的人請自己找找 tiles的資料看看),同時可參考 http://www.aygfsteel.com/steady/archive/2006/02/08/29953.html 。

          在 struts 下,導航可以直接指向 tiles-config 里的定義,這樣就相當于是一個子類(個人覺得,對于大項目來說,這個配置文件的管理也是個大問題)。而在 jsf 里,頁面導航不能直接指向模板定義,而需要一個 jsp ,,雖然是個簡單的 jsp ,可是卻為了一個 view ,我們需要創建兩個 jsp?  對于大點的項目來說,這樣子的工作量并不小。 因此 ,總的來說,使用 tiles這樣子的布局管理,并不能達到我們想要的目的。 
          說到這個,倒是讓人想起 wicket 的好處來,wicket 里,頁面是一個 java 類對應的,java 類可以繼承,這樣就很自然的把頁面布局的管理,換成上述的 OO 類繼承的方式了。 具體可以參考 wicket 的 example

          posted @ 2006-03-15 10:08 boss_ch 閱讀(3926) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 柞水县| 万全县| 雅安市| 樟树市| 高台县| 武清区| 宣城市| 南昌县| 永丰县| 揭西县| 安远县| 望城县| 正镶白旗| 隆林| 平湖市| 怀柔区| 松滋市| 孟村| 商河县| 嵩明县| 化德县| 德阳市| 乌鲁木齐市| 东乡族自治县| 从江县| 扎鲁特旗| 信阳市| 彭阳县| 青海省| 大宁县| 颍上县| 拉萨市| 凤冈县| 陇南市| 溆浦县| 洮南市| 曲麻莱县| 桂平市| 依安县| 黄陵县| 寿光市|