Bean 的引用不会序列化 
自己试一下 Seems to work... 
BankAccount account = getBankAccountHome().findById(42);
ObjectOutputStream out = new ObjectOutputStream(...);
out.writeObject(account);
out.close(); 
You should get an exception when you attempt to send a message 
ObjectInputStream in = new ObjectInputStream(...);
BankAccount account = (BankAccount)in.readObject();
in.close();
account.getBalance(); 
解决方案: 使用 Handle BankAccount account = getBankAccountHome().findById(42);
ObjectOutputStream out = new ObjectOutputStream(...);
out.writeObject(account.getHandle());
out.close(); 
ObjectInputStream in = new ObjectInputStream(...);
Handle handle = (Handle)in.readObject();
BankAccount account = (BankAccount)handle.getEJBObject();
in.close();
account.getBalance(); 

解决方案 »

  1.   

    User类必须和特定的Connection接口进行组合,才能实现对数据库的绑定.
    User序列化并没有保证Connection也序列化了.
    所以User序列化之后会丢失数据库连接,自然不能操作数据库.
      

  2.   

    数据库访问是在User类中进行的?
    这样肯定不行!Connection是不能被系列化的!通常包含有数据库连接的对象,都不应系列化,用transient标识!
    数据库操作要在你的applet中显示的完成!
    或者把数据传回服务器,由服务器完成!(推荐)
      

  3.   

    我打算在applet中将User类的传到Servlet端,在servlet端调用User类的存储方法。
    还没试成功,成功后就给分。
    谢谢诸位!
      

  4.   

    public class User implements java.io.Serializable
    {
      /* field declarations */
      public String name;
      public boolean gender;
      ...
      public transient java.sql.Connection conn;
    }
    在Applet中,
    User u = new User();
    u.name='JavaPro';
    u.gender=true;
    java.io.ObjectOutputStream out = ...;
    out.writeObject(u);
    out.close();
    在Servlet中,
    java.io.ObjectInputStream in = ...;
    User u = (User)in.readObject();
    java.sql.Connection conn = ...;
    u.conn = conn;
    u.loadFromDB();或者u.saveToDB();