2012-06-13 32 views
0

在使用AciveMQ发送大型Java对象时获取java.io.EOFException。Java ActiveMQ发送大对象抛出EOFException

下面是我想送

class TestDataBean implements Serializable 
{ 
private String testName = "TestName"; 
private String testDesc = "testDesc"; 

private String bigData = getBigString(); 

@Override 
public String toString() { 
    return testName +" : "+testDesc+" : "+bigData.length(); 
} 


private static String getBigString() 
{ 
    StringBuffer stringBuffer = new StringBuffer(); 

    for(int i=0;i<1000; i++) 
    { 
     stringBuffer.append("tsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss"); 
    } 

    return stringBuffer.toString(); 
} 

}

下面是堆栈跟踪大对象。

java.io.EOFException 
    at java.io.ObjectInputStream$PeekInputStream.readFully(Unknown Source) 
at java.io.ObjectInputStream$BlockDataInputStream.readUTFBody(Unknown Source) 
at java.io.ObjectInputStream$BlockDataInputStream.readLongUTF(Unknown Source) 
at java.io.ObjectInputStream.readString(Unknown Source) 
at java.io.ObjectInputStream.readObject0(Unknown Source) 
at java.io.ObjectInputStream.defaultReadFields(Unknown Source) 
at java.io.ObjectInputStream.readSerialData(Unknown Source) 
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)Recieved MSG : 0 : null 

at java.io.ObjectInputStream.readObject0(Unknown Source) 
at java.io.ObjectInputStream.readObject(Unknown Source) 
at poc_publisher_subsciber.common.CommonUtil.getObject(CommonUtil.java:18) 
at blob_messages.bsr_clients.GenesisMessageListener.onMessage(GenesisMessageListener.java:30) 
at org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:1298) 
at org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:131) 
at org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:202) 
at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122) 
at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

生产者显示出其发送一个适当的对象。但在消费者方面,它抛出异常。

我也曾尝试下面的配置,在ActiveMQConnectionFactory

ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(url); 
     factory.setProducerWindowSize(1024000000); 
     factory.setSendTimeout(600000); 

请建议我一些解决方案。 在此先感谢。

+0

接收对象时客户端发生异常?如果可能的话,我们可以看到该代码吗? –

回答

0

对不起,这是我的错误。让我解释一下我在做什么。 - 我以StreamMessage的形式发送消息 - 并以字节数组的形式读取此消息我发送的数据大小约为70K字节,而作为SILLY MISTAKE,我拥有的数组是10K的容量。所以我得到这个EOFException。对不起,我把你的时间。并发布这希望没有其他人会做类似的错误:)谢谢。