写个程序, 给邮件列表里每个人都发封邮件.
用main启动spring, 然后main就一直等, 一直等...spring就嘿咻嘿咻地启动线程, 发邮件, 启动线程, 发邮件.....
然后就完成任务了~~~ :).
后来, 又给了我一个邮件列表, 这次要带附件发送...
问题来了, 程序还没等邮件发完, 就终止了....
然后发现, 在读邮件列表时, 是一行一行地读的, 每读一个, 就发送给spring, 让spring去嘿咻嘿咻, 如果读到最后一行, 就执行
System.exit(0);
问题就是这段代码了, 把它修改成
return;
OK了, 阳光明媚 :D
虽然读到了最后一行, 但是, 后台的发送程序还没结束.
2007-09-24
2007-09-06
发现spring写的代码跟我的一样, 偷乐.....
我写了个StringArrayEditor, 后来发现spring有一个StringArrayPropertyEditor, 名字差不多, 看内容, 完全一样的, 呵呵.
不过, 最后还是把我的代码删除掉了.....
不过, 最后还是把我的代码删除掉了.....
这是一个bug么?Spring.BeanWrapper
spring的BeanWrapper会存放属性值.
class A{
BeanWrapper bw = new BeanWrapper(this);
private String[] sa;
//setter/getter....
}
给sa属性加了个属性编辑器StringArrayPropertyEditor
我觉得, 这么调用, 应该不会出问题:
A a = new A();
a.setSa(new String[]{"a", "b", "c"});
//我期望它的结果应该是 "a,b,c"
a.bw.findCustomEditor(String[].class, "sa").getAsText();
结果, 却是空, 不是找不到属性编辑器, 当你通过属性编辑器去获取属性值时, spring不会真正地去a这个类里面实时查找.只有当执行这句,
上面的代码才能得到预期的结果:
a.bw.setPropertyValue("sa", new String[]{"a", "b", "c"});
令人失望....咋就不去inspect一下'a'这个类捏?
2007-09-05
2007-08-31
又一次谈classloading--java.lang.VerifyError
事情是这样的, ear里的war老部署不上去, war里的一个filter(确切的应该是acegi的filter, 托管给spring的)加载不了, 问题出在spring给它的doFilter方法注入属性被检测到verifyError.
后来, 修改jbossweb-tomcat55.sar/META-INF/jboss-service.xml, 把Java2ClassLoadingCompliance属性设置为true, 就OK了.
这个属性是jboss集成tomcat用的, 它的意思是, 是否把java2的"父类优先"加载模型替换为servlet 2.3的"web容器优先"
后来, 修改jbossweb-tomcat55.sar/META-INF/jboss-service.xml, 把Java2ClassLoadingCompliance属性设置为true, 就OK了.
这个属性是jboss集成tomcat用的, 它的意思是, 是否把java2的"父类优先"加载模型替换为servlet 2.3的"web容器优先"
2007-08-29
jobss类加载
一般来说, 象httpclient, logging等, 不会从ear包内加载, 而是用jboss现有的.如果想加载, 要在meta-inf/下加个jboss-app.xml文件, 内容大概是:
然后我就照这个办了, 后来发现还不行, 说是mdb(部署了一个message-driven bean)不合规范:
section:15.7.4
The message driven bean must declare one onMessage method
后来才发现, 不知道哪个傻X把geronimo-j2ee-spec.jar放到ear包里来了, NND, 估计是geronimo与jboss验证方法不一样吧.
去掉就OK了. 还有个关于logging的, 不加jboss-app.xml的话, 会自动把你自己ear内的logging.jar忽略掉(而用jboss服务器的), 加了jboss-app.xml, ear的classLoader也会把ear里面的logging.jar加载上 , 然后Log对象就发现它有两个版本(一个jboss的, 一个ear载的).就会报错(检查的还挺仔细)
再这么下去, 快成jboss专家了....
--
It's Hard to Define, But I Know it When I See it…
<jboss-app>原文
<loader-repository>some.dot.com:loader=webtest.ear</loader-repository>
</jboss-app>
然后我就照这个办了, 后来发现还不行, 说是mdb(部署了一个message-driven bean)不合规范:
section:15.7.4
The message driven bean must declare one onMessage method
后来才发现, 不知道哪个傻X把geronimo-j2ee-spec.jar放到ear包里来了, NND, 估计是geronimo与jboss验证方法不一样吧.
去掉就OK了. 还有个关于logging的, 不加jboss-app.xml的话, 会自动把你自己ear内的logging.jar忽略掉(而用jboss服务器的), 加了jboss-app.xml, ear的classLoader也会把ear里面的logging.jar加载上 , 然后Log对象就发现它有两个版本(一个jboss的, 一个ear载的).就会报错(检查的还挺仔细)
再这么下去, 快成jboss专家了....
--
It's Hard to Define, But I Know it When I See it…
2007-08-28
class 版本
Unsupported major.minor version 49.0
部署ejb的时候就出这问题, 也会出classNotFoundException. 原因是jdk5编译出来的class在jdk4上面不能.
这种问题...真让人无奈....
--
It's Hard to Define, But I Know it When I See it…
部署ejb的时候就出这问题, 也会出classNotFoundException. 原因是jdk5编译出来的class在jdk4上面不能.
这种问题...真让人无奈....
--
It's Hard to Define, But I Know it When I See it…
Subscribe to:
Posts (Atom)