Jms 无法创建持久订户(Glassfish 4)

Jms 无法创建持久订户(Glassfish 4),jms,glassfish-4,Jms,Glassfish 4,我试图在glassfish 4上测试持久的子描述,但得到了一个错误。守则: Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE); TopicSubscriber subscriber = session.createDurableSubscriber((Topic) context.lookup("jms/Topic"), "testDurableSubName"); subscriber.setMessage

我试图在glassfish 4上测试持久的子描述,但得到了一个错误。守则:

Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
TopicSubscriber subscriber = session.createDurableSubscriber((Topic) context.lookup("jms/Topic"), "testDurableSubName");
subscriber.setMessageListener(this);
con.start();
错误是:

creating a topic subscriber ....
Feb 02, 2014 11:19:38 PM org.hibernate.validator.internal.util.Version <clinit>
INFO: HV000001: Hibernate Validator 5.0.0.Final
Feb 02, 2014 11:19:38 PM com.sun.messaging.jms.ra.ResourceAdapter start
INFO: MQJMSRA_RA1101: GlassFish MQ JMS Resource Adapter: Version:  5.0  (Build 14-e) Compile:  April 12 2013 0104
Feb 02, 2014 11:19:38 PM com.sun.messaging.jms.ra.ResourceAdapter start
INFO: MQJMSRA_RA1101: GlassFish MQ JMS Resource Adapter starting: broker is REMOTE, connection mode is TCP
Feb 02, 2014 11:19:38 PM com.sun.messaging.jms.ra.ResourceAdapter start
INFO: MQJMSRA_RA1101: GlassFish MQ JMS Resource Adapter Started:REMOTE
javax.jms.IllegalStateException: [C4053]: Invalid client ID - ""
closing jms connection...
    at com.sun.messaging.jmq.jmsclient.UnifiedSessionImpl.checkClientIDWithBroker(UnifiedSessionImpl.java:699)
    at com.sun.messaging.jmq.jmsclient.UnifiedSessionImpl.createDurableSubscriber(UnifiedSessionImpl.java:440)
    at com.sun.messaging.jmq.jmsclient.UnifiedSessionImpl.createDurableSubscriber(UnifiedSessionImpl.java:330)
    at com.sun.messaging.jms.ra.SessionAdapter.createDurableSubscriber(SessionAdapter.java:339)
正在创建主题订阅服务器。。。。
2014年2月2日晚上11:19:38 org.hibernate.validator.internal.util.Version
信息:HV000001:Hibernate Validator 5.0.0.Final
2014年2月2日晚上11:19:38 com.sun.messaging.jms.ra.ResourceAdapter启动
信息:MQJMSRA_RA1101:GlassFish MQ JMS资源适配器:版本:5.0(构建14-e)编译:2013年4月12日0104
2014年2月2日晚上11:19:38 com.sun.messaging.jms.ra.ResourceAdapter启动
信息:MQJMSRA_RA1101:GlassFish MQ JMS资源适配器启动:代理是远程的,连接模式是TCP
2014年2月2日晚上11:19:38 com.sun.messaging.jms.ra.ResourceAdapter启动
信息:MQJMSRA_RA1101:GlassFish MQ JMS资源适配器已启动:远程
javax.jms.IllegalStateException:[C4053]:无效的客户端ID-“”
正在关闭jms连接。。。
位于com.sun.messaging.jmq.jmsclient.UnifiedSessionImpl.checkClientIDWithBroker(UnifiedSessionImpl.java:699)
位于com.sun.messaging.jmq.jmsclient.UnifiedSessionImpl.createDurableSubscriber(UnifiedSessionImpl.java:440)
位于com.sun.messaging.jmq.jmsclient.UnifiedSessionImpl.createDurableSubscriber(UnifiedSessionImpl.java:330)
位于com.sun.messaging.jms.ra.SessionAdapter.createDurableSubscriber(SessionAdapter.java:339)

忘记在连接上设置clientid,例如
con.setClientID(InetAddress.getLocalHost().getHostName())


持久订户需要连接才能设置ClientID。它可以是任何唯一的字符串,如主题名称+消费者ID。在做出这一改变后,它起了作用

只有持久订阅者将使用客户端ID。。。否则不需要。