关于sessionbean开发购物车的错误,(在线等)
1.要传递的对象的基类:(product)
package music_javabean;
import java.io.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class product implements Serializable{
private String product_id;
private java.math.BigDecimal product_price;
private int product_amout;
public product() {
}
public String getProduct_id() {
return product_id;
}
public void setProduct_id(String product_id) {
this.product_id = product_id;
}
public java.math.BigDecimal getProduct_price() {
return product_price;
}
public void setProduct_price(java.math.BigDecimal product_price) {
this.product_price = product_price;
}
public int getProduct_amout() {
return product_amout;
}
public void setProduct_amout(int product_amout) {
this.product_amout = product_amout;
}
private void writeObject(ObjectOutputStream oos) throws IOException {
oos.defaultWriteObject();
}
private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException {
ois.defaultReadObject();
}
}
************************************************
2.传递前的网页中的核心代码:(生成要传递的对象)
<
注:
rs_product.getString("product_id"),
rs_product.getBigDecimal("price")均为从数据库中取出的数据,这里没有出错
>
<%
//生成新的产品信息,供客户查看和购买
new_product=new product();
new_product.setProduct_id(rs_product.getString("product_id"));
new_product.setProduct_amout(1);
new_product.setProduct_price(rs_product.getBigDecimal("price"));
//将产品对象放到session中,然后在下一个网页中可以取出
session.setAttribute("new_product",new_product);
%>
*****************************************************
3.从上一网页得到对象的代码:
<%
product new_product=new product();
new_product=(product)session.getAttribute("new_product");
//得到sessionbean的对象
Handle cart_handle=(Handle)session.getAttribute("cart_handle");
Cart_session cart_session=(Cart_session)javax.rmi..PortableRemoteObject.narrow(cart_handle.getEJBObject(),Cart_session.class);
cart_session.add_product(product);//就是这一句出错了
%>
*******************************************************
4.出错信息:
系统提示的是没有正确的反序列化,这点我很迷惑,请高手指教,我看过简单的购物车,他们做的时候物品信息只有一项,所以直接添加就可以了,但是我的这个物品(product)做成了一个类,所以添加时就提示不能反序列化!
<2004-6-7 下午15时26分56秒 CST> <Error> <HTTP> <BEA-101020> <[ServletContext(id=
12188848,name=music,context-path=/music)] Servlet failed with Exception
java.io.InvalidClassException: music_javabean.product; class invalid for deseria
lization
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:483)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:152
1)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1435)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1
626)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
at weblogic.rmi.internal.CBVInputStream.readObjectInternal(CBVInputStrea
m.java:67)
at weblogic.rmi.internal.CBVInputStream.readObject(CBVInputStream.java:6
1)
at weblogic.rmi.internal.ServerRequest.copy(ServerRequest.java:241)
at weblogic.rmi.internal.ServerRequest.sendReceive(ServerRequest.java:15
8)
at weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:138)
at music_online.Cart_session_4nck8y_EOImpl_811_WLStub.add_product(Unknow
n Source)
at jsp_servlet.__add_product._jspService(__add_product.java:171)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run
(ServletStubImpl.java:1053)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:387)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:431)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:305)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio
n.run(WebAppServletContext.java:6310)
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:3622)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
pl.java:2569)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
--------------- nested within: ------------------
weblogic.rmi.extensions.RemoteRuntimeException: Unexpected Exception - with nest
ed exception:
[java.io.InvalidClassException: music_javabean.product; class invalid for deseri
alization]
at music_online.Cart_session_4nck8y_EOImpl_811_WLStub.add_product(Unknow
n Source)
at jsp_servlet.__add_product._jspService(__add_product.java:171)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run
(ServletStubImpl.java:1053)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:387)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:431)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:305)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio
n.run(WebAppServletContext.java:6310)
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:3622)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
pl.java:2569)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
>