尽人事而顺天命

关注 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 阅读(437) | 评论 (1)编辑 收藏

使用模板对页面布局进行管理,是一直以来的一个大问题,从以前的 include 方式到后来使用 tiles 进行布局,对于一个新的项目来说,我觉得布局、安全性、权限等这些东西,都是先要考虑的。

布局管理的目标是什么?? 一般的应用(或是网站)中,具体内容部分相对是比较固定的,但是其外框却可能随客户的喜好而有不同的修改(或是类似网站改版),那么,我认为,使用布局管理的主要目的,就是在这种布局管理修改时,能从容应对,只改动最可能少的文件。

为了达到只改动最可能少的文件的目录,那么,自然的,我们会想到类似于OO语言中的继承机制,如果布局是由父类管理的,那么改动时只改动父类就可以了。类似的,模板管理的布局,也应该是达到 这样的目标的。 从这个角度来说, tiles 最大的可取之处,在于其页面配置中的继承机制(不了解 tiles的人请自己找找 tiles的资料看看),同时可参考 http://www.blogjava.net/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 阅读(3787) | 评论 (0)编辑 收藏