关于java序列化的问题

>>请问,为什么这个异常在conncetion中抛出,序列化不是都在远程传输中使用吗?而我这个对象也没有存储在session中,为什么这个对象要序列化啊??请高手赐教。。... >>请问,为什么这个异常在conncetion中抛出,序列化不是都在远程传输中使用吗?而我这个对象也没有存储在session中,为什么这个对象要序列化啊??请高手赐教。。。如果满意,一定追分!!!!!

<2008-4-23 上午09时27分58秒 CST> <Error> <HTTP Session> <BEA-100028> <Could not
deserialize session data.
java.io.NotSerializableException: oracle.jdbc.driver.OracleConnection
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1054)

at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java
:1330)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
02)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
a:1245)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)

at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java
:1330)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
02)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
a:1245)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)

at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278)
at weblogic.servlet.internal.AttributeWrapper.convertObjectToBytes(Attri
buteWrapper.java:136)
at weblogic.servlet.internal.AttributeWrapper.getObject(AttributeWrapper
.java:112)
at weblogic.servlet.internal.AttributeWrapper.getObject(AttributeWrapper
.java:69)
at weblogic.servlet.internal.session.SessionData.getAttribute(SessionDat
a.java:431)
at jsp_servlet._system.__sys_supp_settype._jspService(__sys_supp_settype
.java:135)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run
(ServletStubImpl.java:971)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:402)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:305)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio
n.run(WebAppServletContext.java:6350)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
dSubject.java:317)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
118)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
rvletContext.java:3635)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
pl.java:2585)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
>
TO baimaxiaosheng - 秀才 三级

您好,你说的太有道理了,但是有一点我不明白,为什么对象型数据要序列化呢?
我看了一些资料,说是放在session中的数据都要序列化,因为weblogic会对session中的数据进行持久化,我有一个对象login放在session中,
其字段描述如下:

private static final long serialVersionUID = -8783454813441161035L;

private PubDb db = new PubDb();

private PubFunc func = new PubFunc();

private PubHtml ph = new PubHtml();

private String us_id = ""; // 人员表ID

private String username = ""; // 姓名

private String password = ""; // 密码

private String purview = ""; // 权限

private Connection conn = null;

这里的conn没有进行序列化,所以一直报这个异常,请问一下,这个connction我怎么加序列化呢?这个不是我的类,是JDBC中的类。。
展开
 我来答
miniapp1ojp4uuof5gbq
2008-04-24 · TA获得超过347个赞
知道小有建树答主
回答量:155
采纳率:0%
帮助的人:149万
展开全部
首先说明一下序列化的知识:
java中的序列化(serialization)机制能够将一个实例对象的状态信息写入到一个字节流中,使其可以通过socket进行传输、或者持久化存储到数据库或文件系统中;然后在需要的时候,可以根据字节流中的信息来重构一个相同的对象。序列化机制在java中有着广泛的应用,EJB、RMI等技术都是以此为基础的。

序列化机制是通过java.io.ObjectOutputStream类和java.io.ObjectInputStream类来实现的。在序列化(serialize)一个对象的时候,会先实例化一个ObjectOutputStream对象,然后调用其writeObject()方法;在反序列化(deserialize)的时候,则会实例化一个ObjectInputStream对象,然后调用其readObject()方法。

上面您的错误,就是在于有一个或者几个没有"序列化"的数据,导致没有办法创建输出流,导致发生的java.io.NotSerializableException。

之所以要序列化,我猜测是因为您的数据里面存在一个对象型的数据,但是该对象没有实现序列化。比如:您有一个字段为address,这个字段您是通过一个类Address来描述的,Address里面可能有province、city、street等等属性或者一些setter 和getter,如果这个类,没有实现序列化,往往会出现这个问题。

毕竟没有看到程序,是我的一个猜测,请检查一下程序或者发出来进行进一步讨论。
方杭尽
2008-04-29 · TA获得超过1万个赞
知道大有可为答主
回答量:1296
采纳率:0%
帮助的人:677万
展开全部
我觉得Connection这个类没有必要序列化,你把Connection对象通过session传递有什么用处呢,Connection应该是一个对数据库的连接,你如果想让接收方对数据库进行连接的话,应该在传递的时候传递远程数据库的连接方式,比如驱动链接,数据库地址,数据库用户名密码等等,接收方在操作的时候新建立一个Connection对象用你传递给他的信息进行连接就可以了.

而关于建立一个Connection所需要的条件的封装,序列化,传递应该很简单吧!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
吴1寅e1
2008-04-23
知道答主
回答量:98
采纳率:0%
帮助的人:22.2万
展开全部
at weblogic.servlet.internal.session.SessionData.getAttribute(SessionDat
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式