spring+Jms开发topic类型消息时重复接收消息解决

参照javaeyes前辈做的jms配置如下:
tomcat下Context.xml配置:

WEB-INF/web.xml

<Resource name="jms/ConnectionFactory"    
    auth="Container"      
    type="org.apache.activemq.ActiveMQConnectionFactory"    
    description="JMS Connection Factory"  
    factory="org.apache.activemq.jndi.JNDIReferenceFactory"    
    brokerURL="vm://localhost"    
    brokerName="LocalActiveMQBroker"/>  
   <Resource name="jms/Queue" 
        auth="Container" 
        type="org.apache.activemq.command.ActiveMQQueue"  
        description="my Queue"  
        factory="org.apache.activemq.jndi.JNDIReferenceFactory"  
        physicalName="FOO.BAR"/>  
   <Resource name="jms/JMSChat" 
              auth="Container" 
              type="org.apache.activemq.command.ActiveMQTopic" 
              factory="org.apache.activemq.jndi.JNDIReferenceFactory" 
              physicalName="stockQuoteTopic"/>


spring配置:
<!-- JMS整合 -->
class="org.springframework.jndi.JndiObjectFactoryBean">

<bean id="jmsTopic"
    class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="java:comp/env/jms/JMSChat"></property>
</bean>

<bean id="jmsTemplate"
    class="org.springframework.jms.core.JmsTemplate">
    <property name="connectionFactory" ref="jmsConnectionFactory"></property>
    <property name="defaultDestination" ref="jmsTopic"></property>
</bean>

     <!-- 在jmsTemplate中指明发送目的地即jmsTopic队列 -->
<bean id="sender" class="com.xch.websecurity.util.message.Sender">
    <property name="jmsTemplate" ref="jmsTemplate"></property>
</bean>

<bean id="receive" class="com.xch.websecurity.util.message.Receiver"></bean>

 <!-- 指明了jmsQueue队列的接收监听器 -->
<bean id="listenerContainer"
    class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="connectionFactory" ref="jmsConnectionFactory"></property>
    <property name="destination" ref="jmsTopic"></property>
    <property name="messageListener" ref="receive"></property>
</bean>

com.xch.websecurity.util.message.Sender类代码:
public class Sender {
private JmsTemplate jmsTemplate;
public void setJmsTemplate(JmsTemplate jmsTemplate) {
this.jmsTemplate = jmsTemplate;
}

public void send(final String text){
    System.out.println("---Send:"+text);
    jmsTemplate.send(new MessageCreator(){
        public Message createMessage(Session arg0) throws JMSException {
            return arg0.createTextMessage(text);
        }   
    });
}
 }

com.xch.websecurity.util.message.Receiver代码:
public class Receiver implements MessageListener {
public void onMessage(Message message) {
if (message instanceof TextMessage) {
TextMessage text = (TextMessage) message;
try {
System.out.println("ReceiveJms:" + text.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}

servlet相关代码:
String Text = request.getParameter("text");
sender.send(Text);
System.out.println("asdfasdf");

运行结果:
第一次:
---Send:uhkjlkj
asdfasdf
ReceiveJms:uhkjlkj
ReceiveJms:uhkjlkj
第二次:
---Send:iljlkjkl
ReceiveJms:iljlkjkl
ReceiveJms:iljlkjkl
ReceiveJms:iljlkjkl
asdfasdf
第三次:ReceiveJms:iljlkjkl依次递增打印
而把
java:comp/env/jms/JMSChat换为java:comp/env/jms/Queue
的点对点配置没错 就是topic方式是出现这问题
[b]问题补充:[/b]
我在另一个应用B里配置了同样的代码,都如下:

class="org.springframework.jndi.JndiObjectFactoryBean">

<bean id="jmsTopic"
    class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="java:comp/env/jms/JMSChat"></property>
</bean>

<bean id="jmsTemplate"
    class="org.springframework.jms.core.JmsTemplate">
    <property name="connectionFactory" ref="jmsConnectionFactory"></property>
    <property name="defaultDestination" ref="jmsTopic"></property>
</bean>

<!-- 在jmsTemplate中指明发送目的地即jmsTopic队列 -->


<bean id="receive" class="com.xch.websecurity.util.message.Receiver"></bean>

 <!-- 指明了jmsQueue队列的接收监听器 -->
<bean id="listenerContainer"
    class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="connectionFactory" ref="jmsConnectionFactory"></property>
    <property name="destination" ref="jmsTopic"></property>
    <property name="messageListener" ref="receive"></property>
</bean>

可是B还是收不到我看了http://www.iteye.com/topic/234101的说连接到同一服务器就ko啦!~~我连接的jndi名都一样的就是收不到

http://www.iteye.com/topic/234101

http://www.iteye.com/topic/374657

请问 最后怎么解决呢,谢谢