简体   繁体   English

Glassfish服务器和ActiveMQ出现问题:对等方未发送其有线格式

[英]Trouble with Glassfish Server and ActiveMQ: peer did not send his wire format

I'm getting this error while trying to set up a JMSPublisher and JMSSubscriber 尝试设置JMSPublisher和JMSSubscriber时出现此错误

jndi.properties jndi.properties

java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory
java.naming.provider.url = tcp://localhost:4848?wireFormat.maxInactivityDurationInitalDelay=30000
topic.topic/flightStatus = flightStatus

Glassfish server is running on: http://localhost:4848 Glassfish服务器运行在: http://localhost:4848

Publisher: 发布者:

JmsPublisher publisher= new JmsPublisher("ConnectionFactory", "topic/flightStatus");

...

public JmsPublisher(String factoryName, String topicName) throws JMSException, NamingException {
    Context jndiContext = new InitialContext();
    TopicConnectionFactory factory = (TopicConnectionFactory) jndiContext.lookup(factoryName);
    Topic topic = (Topic) jndiContext.lookup(topicName);
    this.connect = factory.createTopicConnection();
    this.session = connect.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
    this.publisher = session.createPublisher(topic);
}

Exception: 例外:

Exception in thread "main" javax.jms.JMSException: Wire format negotiation timeout: peer did not send his wire format.
    at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:62)
    at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1395)
    at org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1481)
    at org.apache.activemq.ActiveMQConnection.createSession(ActiveMQConnection.java:323)
    at org.apache.activemq.ActiveMQConnection.createTopicSession(ActiveMQConnection.java:1112)
    at com.mycompany.testejms.JmsPublisher.<init>(JmsPublisher.java:34)
    at com.mycompany.testejms.JmsPublisher.main(JmsPublisher.java:51)
Caused by: java.io.IOException: Wire format negotiation timeout: peer did not send his wire format.
    at org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:98)
    at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
    at org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:81)
    at org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:86)
    at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1366)
    ... 5 more

The error indicates that the ActiveMQ client is not actually communicating with an ActiveMQ broker. 该错误表明ActiveMQ客户端实际上没有与ActiveMQ代理通信。 Glassfish may be listening on http://localhost:4848 , but apparently that's not where the ActiveMQ broker is listening for connections. Glassfish可能正在http://localhost:4848上监听,但显然不是ActiveMQ代理正在监听连接的地方。 From what I understand, port 4848 is where the Glassfish web admin console listens for connections. 据我了解,Glassfish Web管理控制台在端口4848侦听连接。 Note the http in the URL you provided. 记下您提供的URL中的http By default, ActiveMQ listens on port 61616 . 默认情况下,ActiveMQ在端口61616上侦听。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM