连接DB2的问题–encoding not supported

Driver: com.ibm.db2.jcc.DB2Driver
用Squirrel SQL查看db2的数据结构,填好driver, url, username, password后,点“connect”,出现问题:
com.ibm.db2.jcc.b.DisconnectException: encoding not supported!!
奇怪,怎么会出现这个错误?我以为是SquirrelSQL的问题,运行了一下自己以前写的一个代码生成器,输入相同的参数,发现还是出现这个问题……头痛,以为是通过Console输入的参数编码与通过Java文件输入的编码不一致,索性打开Eclipse, Class.forName,然后getConnection,问题同样。
同事把代码拿去,在WSAD下面重新编译运行,奇怪,没问题;我也在WSAD下面重新编译运行了一次,居然也没有问题。
问题很明显了,是那该死的IBM JDK. 把Squirrel SQL运行的Java_home设置为WSAD的jre_home,问题果然解决,db2数据库结构正常显示在面前。
虽然问题解决,我还是不知道为什么——我也不想知道。记得以前jdom在webshpere上不能正常运行就把我弄得死去活来,这次又耗掉了我1个小时。IBM的jvm真是诡异。

HiveMind初探

今天HiveMind 1.0 的final版本出来了, 看了看他的examples代码。 有了IoC(DI)的感觉之后再看这些代码, 越看感觉越清晰。 实现一个IoC的容器本身没什么可说的, 现在就以他自带的example为例,来看看HiveMind在这方面的实现方法。
example程序是一个四则运算的类,基本思想是将加减乘除都做成接口,用不同的方式实现;计算器(Caculator)继承了加减乘除接口,在运行过程中,具体的加减乘除操作类通过HiveMind的配置注入到CaculatorImpl中,当然CaculatorImpl也是通过Caculator接口通过工厂产生出来的,以下是他的具体代码:
 double arg0 = Double.parseDouble(args[0]);        double arg1 = Double.parseDouble(args[1]);
        Registry registry = ExampleUtils.buildRegistry(“examples.xml”);
        // Since we know there’s exactly *one* service-point implementing Calculator,        // we can get it this way, and never have to know its service id.
        Calculator calculator = (Calculator) registry.getService(Calculator.class);
        System.out.println(“Inputs:   ” + arg0 + ” [...]