weblogic 里使用 Clob 的疑惑 (解决200分)
请教大家一个问题:
我在持久层使用的是Hibernate来存取数据对象,中间使用的是ejb的sessionbean来做事物管理。
写入包含有clob字段的对象都没有问题。
现在的问题是在读取一个对象时,因为该对象有一个Clob字段,在ejb里始终要报错误:
java.rmi.MarshalException: error marshalling return; nested exception is:
java.io.NotSerializableException: weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB
其实错误报告已经说的很明白了,weblogic去找weblogic.jdbc.wrapper下的Clob由于这个类
因为weblogic.jdbc.wrapper下的clob没有实现序列化,所以出错!
我的分析是这样:
我看了weblogic.jdbc.wrapper下的Clob确实没有序列化,
因为我以前没有使用ejb,加载的Clob也是用的ojdbc14.jar下的oracle提供的oracle.sql.clob
所以没问题。我现在把ojdbc14.jar(其实weblogic已经自带了这个包的)加入我的项目,但是读取
的时候weblogic还是去找weblogic.jdbc.wrapper下的Clob,我想如果让weblogic去找oracle.sql.clob
应该就可以解决了!
我分析的是否正确,请大家帮我看看
以下是我的程序:
1 Model.java
import java.util.Date;
import java.sql.Clob;
import java.io.Serializable;
public class Model implements Serializable {
public Model() {}
public Model(Integer id ..... Clob docBody....){
this.id = id
.......
this.docBody = docBody
....
}
get....
set....
}
2.DAO
query.java
public List findByOne() throws HibernateException {
Session session = null;
List list = new ArrayList();
Model obj = new Model();
try {
session = HbSessionFactory.openSession();
StringBuffer query = new StringBuffer();
query.append(
"from com.persistent.model.Model as AA where AA.docId = 1");
Iterator itr = session.find(query.toString()).iterator();
while (itr.hasNext()) {
obj = (Model) itr.next();
list.add(obj);
}
return list;
}
catch HibernateException he) {
throw he
}
finally {
HbSessionFactory.closeSession(session);
}
}
3 ejb
在ejb里我调用我的dao
public List findByOne(){
.......
list = query.findByOne() //调用都没有错误
...
return list //就是在返回的使用出错
}