本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7583522
建立时间:2006年5月29日




[JBoss]jBPM的type问题,big bug!
软件技术,  电脑与网络

lhwork 发表于 2006/6/30 15:34:31

对应用户自己定义的非string类型的变量,jBPM是先将变量转换成二进制object 流,然后再转换成string类型存储在数据库中,取变量的过程与之相反。由于转换成string涉及到编码格式问题,如GBK、ISO等,而编码格式涉 及到操作系统、数据库、jvm等多方面的影响,jbpm目前还没有解决这个问题,因此在使用非string类型变量的时候,jbpm会出错。这个问题 tom(jbpm创始人)正在解决。       这个问题,似乎将变量按二进制存储更好些,这样就不会涉及编码格式问题。       另外一种方法是使用统一的编码格式,改写后的org.jbpm.delegation.serializerSerializableSerializer如下:public class SerializableSerializer implements Serializer {     public String serialize(Object object) {        String serialized = null;         if (object != null) {            if (!(object instanceof Serializable)) {                throw new IllegalArgumentException("object '" + object + "' (" +                        object.getClass().getName() +                        ") cannot be serialized with " +                        this.getClass().getName());            }             try {                ByteArrayOutputStream baos = new ByteArrayOutputStream();                ObjectOutputStream oos = new ObjectOutputStream(baos);                oos.writeObject(object);                oos.flush();                baos.flush();                 serialized = baos.toString(“ISO-8859-1“);//修改             } catch (IOException e) {                e.printStackTrace();                throw new RuntimeException(                        "couldn't serialize state definition");            }        }         return serialized;    }     public Object deserialize(String text) {        Object object = null;         if (text != null) {            try {                ByteArrayInputStream bais = new ByteArrayInputStream(text.                        getBytes(“ISO-8859-1“));  //修改                ObjectInputStream ois = new ObjectInputStream(bais);                object = ois.readObject();            } catch (Exception e) {                e.printStackTrace();                throw new RuntimeException(                        "couldn't deserialize object from inputstream");            }        }         return object;    } }


阅读全文(1763) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.063 second(s), page refreshed 144755540 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号