org.springframework.jms.UncategorizedJmsException:
Uncategorized exception occured during JMS processing; nested exception is org.apache.activemq.
ConnectionFailedException: The JMS connection has failed: java.io.EOFException
public void sendObjectMessage(Destination destination, final Serializable object) {
if (null == destination) {
destination = jmsTemplate.getDefaultDestination();
}
/* jmsTemplate.setTimeToLive(604800000); */
jmsTemplate.send(destination, new MessageCreator() { //debug显示此处错误
public Message createMessage(Session session) throws JMSException {
return session.createObjectMessage(object);
}
});
System.out.println("springJMS send object message...");
}
最终解决办法:使用连接池,新增的。
原因是资源耗尽,activemq无法获得链接,在并发的情况下更需要使用连接池。
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<constructor-arg index="0" value="${amq.username}"/>
<constructor-arg index="1" value="${amq.password}"/>
<constructor-arg index="2" value="${amq.brokerurl}"/>
<property name="useAsyncSend" value="true"></property>
<property name="clientID" value="prod"></property>
</bean>
<!--new add begin-->
<bean id="cachingConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
<property name="targetConnectionFactory" ref="connectionFactory"/>
<property name="sessionCacheSize" value="100" />
</bean>
<!--new add begin-->
<bean id="singleConnectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
<!--<property name="targetConnectionFactory" ref="connectionFactory"></property>-->
<property name="targetConnectionFactory" ref="cachingConnectionFactory"></property>
</bean>