如题,麻烦大家啦。。
我重写了javaBean的toString方法,
public String toString() {
    return new ToStringBuilder(this).append("name", this.name).append("list", this.list).append("sex", this.sex).toString();
}
但将这个bean重新转换回来,System.out.println(message);
TestBean bean =  new TestBean();
try {
bean = (TestBean) message;
}catch  (Exception e) {
e.printStackTrace();
}
报错了:com.ozhibin.mina.TestBean@76e369[name=欧智斌,list=[在, 天],sex=男]
java.lang.ClassCastException: java.lang.String
at com.ozhibin.mina.ReceiverHandler.messageReceived(ReceiverHandler.java:92)
at org.apache.mina.common.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:743)
at org.apache.mina.common.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:405)
at org.apache.mina.common.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:40)
at org.apache.mina.common.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:823)
at org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolDecoderOutputImpl.flush(ProtocolCodecFilter.java:379)

解决方案 »

  1.   

    message是javaBean的toString()的。
    String message = bean.toString();
      

  2.   

    实际上是mina远程调用传回来的一个Object对象,我用socket调用的时候:
                    Socket socket = new Socket();
    BufferedReader reader = null;
    BufferedWriter writer = null; // 连接到RECEIVER
    try {
    socket.connect(new InetSocketAddress(IP, PORT), 20000);
    socket.setSoTimeout(20000);
    reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); String logStr = " 已连接到RECEIVER [" + IP + ":" + PORT + "]";
    System.out.println(logStr);
    } catch (Exception e) {
    e.printStackTrace();
    }
                      TestBean t = new TestBean();
                    t.setName("欧智斌");
    t.setSex("男");
    ArrayList list = new ArrayList();
    list.add("在");
    list.add("天");
    t.setList(list);
    try {
    writer.write(t.toString());
    writer.newLine();
    writer.flush();
    } catch (IOException e2) {
    e2.printStackTrace();
    }
    socketServer接收的信息,是Ojbect的。实际上就是,TestBean.toString的字符串来的
      

  3.   

    这个你为何不用序列化用String转换为你的JavaBean,无语中。。
      

  4.   

    谢谢大家。我用另一种mina自带的client写入对象的方式解决了。socket本身同mina对象的传输就有问题!