2017-06-06 113 views
0

我有一个Glassfish服务器(4.1.2)和以下this tutorial我已将Apache ActiveMQ集成到服务器。之后,我根据this part of the same tutorial开发了一个独立的客户端进行消息传递。完成之后我跟着last part of this tutorial开发了一个MessageDrivenBean,监听之前步骤中使用的队列。连接到JMS代理失败

一切正常编译。 ActiveMQ也在运行。但每当我部署以下是我的GF服务器日志中记录的EJB:

Info: visiting unvisited references 
Info: visiting unvisited references 
Info: JTS5014: Recoverable JTS instance, serverId = [3700] 
Warning: RAR8000 : The method setDestinationLookup is not present in the class : org.apache.activemq.ra.ActiveMQActivationSpec 
Warning: RAR7097: No setter method present for the property destinationLookup in the class org.apache.activemq.ra.ActiveMQActivationSpec 
Info: 2017-06-06 11:43:00,675 [min-listener(1)] INFO ActiveMQEndpointWorker   - Starting 
Info: 2017-06-06 11:43:00,682 [ad-pool-1; w: 4] INFO ActiveMQEndpointWorker   - Establishing connection to broker [vm://0.0.0.0:6616] 
Info: WELD-000900: 2.2.13 (Final) 
WARN: WELD-001700: Interceptor annotation class javax.ejb.PostActivate not found, interception based on it is not enabled 
WARN: WELD-001700: Interceptor annotation class javax.ejb.PrePassivate not found, interception based on it is not enabled 
WARN: WELD-000411: Observer method [BackedAnnotatedMethod] public org.glassfish.jms.injection.JMSCDIExtension.processAnnotatedType(@Observes ProcessAnnotatedType<Object>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds. 
WARN: WELD-000411: Observer method [BackedAnnotatedMethod] org.glassfish.sse.impl.ServerSentEventCdiExtension.processAnnotatedType(@Observes ProcessAnnotatedType<Object>, BeanManager) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds. 
WARN: WELD-000411: Observer method [BackedAnnotatedMethod] private org.glassfish.jersey.ext.cdi1x.internal.CdiComponentProvider.processAnnotatedType(@Observes ProcessAnnotatedType<Object>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds. 
Info: AmdMDB was successfully deployed in 5.290 milliseconds. 
Info: 2017-06-06 11:43:31,695 [ad-pool-1; w: 4] ERROR ActiveMQEndpointWorker   - Failed to connect to broker [vm://0.0.0.0:6616]: Could not create Transport. Reason: java.net.URISyntaxException: Illegal character in scheme name at index 0: 0.0.0.0:6616 
javax.jms.JMSException: Could not create Transport. Reason: java.net.URISyntaxException: Illegal character in scheme name at index 0: 0.0.0.0:6616 
    at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:36) 
    at org.apache.activemq.ActiveMQConnectionFactory.createTransport(ActiveMQConnectionFactory.java:260) 
    at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:273) 
    at org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:194) 
    at org.apache.activemq.ra.ActiveMQResourceAdapter.makeConnection(ActiveMQResourceAdapter.java:132) 
    at org.apache.activemq.ra.ActiveMQEndpointWorker$1.run(ActiveMQEndpointWorker.java:109) 
    at com.sun.enterprise.connectors.work.OneWork.doWork(OneWork.java:107) 
    at com.sun.corba.ee.impl.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:497) 
    at com.sun.corba.ee.impl.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:540) 
Caused by: java.net.URISyntaxException: Illegal character in scheme name at index 0: 0.0.0.0:6616 
    at java.net.URI$Parser.fail(URI.java:2848) 
    at java.net.URI$Parser.checkChars(URI.java:3021) 
    at java.net.URI$Parser.checkChar(URI.java:3031) 
    at java.net.URI$Parser.parse(URI.java:3047) 
    at java.net.URI.<init>(URI.java:588) 
    at org.apache.activemq.util.URISupport.parseComposite(URISupport.java:390) 
    at org.apache.activemq.util.URISupport.parseComposite(URISupport.java:279) 
    at org.apache.activemq.transport.vm.VMTransportFactory.doCompositeConnect(VMTransportFactory.java:63) 
    at org.apache.activemq.transport.vm.VMTransportFactory.doConnect(VMTransportFactory.java:54) 
    at org.apache.activemq.transport.TransportFactory.connect(TransportFactory.java:64) 
    at org.apache.activemq.ActiveMQConnectionFactory.createTransport(ActiveMQConnectionFactory.java:258) 
    ... 7 more 
Info: 2017-06-06 11:43:31,697 [ad-pool-1; w: 4] ERROR ActiveMQEndpointWorker   - Endpoint will try to reconnect to the JMS broker in 30 seconds 
Info: 2017-06-06 11:43:40,060 [jb-thread-pool1] INFO ActiveMQEndpointWorker   - Stopping 

末停止是由于取消部署我做到了,因为同样的错误将每三十秒配重联试。

我不太确定,错误在哪里。顺便提一下,6616端口不是输入错误,它是ActiveMQ运行的实际端口,因为端口61616正在被另一个进程使用。

您能否给我一个提示,在哪里寻找错误?顺便说一句:当我向独立客户端发送消息到队列中时,没有引发异常(所以这似乎工作。)但是,我也无法通过ActiveMQ管理控制台发送消息到服务器。

非常感谢......

回答

1

http://activemq.apache.org/vm-transport-reference.html,使用ActiveMQ的VM tranport时,后面应该经纪人名 “VM://”。

如果要使用的IP和端口,配置是这样的:

vm:(broker:(tcp://localhost:6000)?persistent=false)?marshal=false 
+0

好感谢,帮助。现在日志说'成功建立连接到代理[vm:broker:(tcp://0.0.0.0))]''。而且我正在接收消息。你是一个生活:) –

+0

是否有一个原因,我必须等待大约1分钟,直到我从activemq管理控制台的服务器日志中收到一条消息? –

+0

@FabianSchneider这似乎并不正常。但我无法弄清楚为什么此刻1分钟的延迟。也许一些非常详细的原因。 – Solo