2015-01-15 74 views
0

我需要通过Mule订阅JMS主题。我们使用骡子3.5如何通过Mule订阅JMS主题?

我已经安装这个流程:

<jms:connector name="vos-jms-connector" specification="1.1" 
    validateConnections="true" 
    connectionFactoryJndiName="ConnectionFactory" 
    doc:name="JMS" password="guest" username="guest"> 
    <jms:custom-jndi-name-resolver 
     class="org.mule.transport.jms.jndi.CachedJndiNameResolver"> 
     <spring:property name="jndiInitialFactory" 
      value="org.jnp.interfaces.NamingContextFactory" /> 
     <spring:property name="jndiProviderUrl" value="jnp://xx.xx.16.41:1099" /> 
    </jms:custom-jndi-name-resolver> 
</jms:connector> 

<flow name="vcm-vos-vpo-topic" doc:name="vcm-vos-vpo-topic"> 
    <jms:inbound-endpoint topic="VPOtopic" 
     connector-ref="vos-jms-connector" doc:name="VPOtopic" responseTimeout="4000" /> 
    <logger message="request for topic" level="INFO" doc:name="Logger"/> 
</flow> 

当我运行骡子项目我希望我可以用下面的Java代码连接到主题(运行在另一个项目在同一台机器上):

Properties props = new Properties(); 
    props.setProperty(Context.PROVIDER_URL, "jnp://127.0.0.1:1099"); 
    props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); 
    props.setProperty(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces"); 
    InitialContext context = new InitialContext(props); 
    TopicConnectionFactory topicConnectionFactory = (TopicConnectionFactory) context.lookup("ConnectionFactory"); 
    Topic vpoTopic = (Topic) context.lookup("VPOtopic"); 

不过,我得到一个 “Coneection拒绝” 异常:

Exception in thread "main" javax.naming.CommunicationException: Could not obtain connection to any of these urls: 127.0.0.1:1099 and discovery failed with error: javax.naming.CommunicationException: Receive timed out [Root exception is java.net.SocketTimeoutException: Receive timed out] [Root exception is javax.naming.CommunicationException: Failed to connect to server /127.0.0.1:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server /127.0.0.1:1099 [Root exception is java.net.ConnectException: Connection refused: connect]]] 
    at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1828) 
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:717) 
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:710) 
    at javax.naming.InitialContext.lookup(InitialContext.java:392) 
    at nl.triopsys.vcm.vos.jmsmock.Main.getInitialContext(Main.java:132) 
    at nl.triopsys.vcm.vos.jmsmock.Main.main(Main.java:65) 
Caused by: javax.naming.CommunicationException: Failed to connect to server /127.0.0.1:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server /127.0.0.1:1099 [Root exception is java.net.ConnectException: Connection refused: connect]] 
    at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:359) 
    at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:284) 
    at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1798) 
    ... 5 more 
Caused by: javax.naming.ServiceUnavailableException: Failed to connect to server /127.0.0.1:1099 [Root exception is java.net.ConnectException: Connection refused: connect] 
    at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:329) 
    ... 7 more 
Caused by: java.net.ConnectException: Connection refused: connect 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351) 
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) 
    at java.net.Socket.connect(Socket.java:529) 
    at org.jnp.interfaces.TimedSocketFactory.createSocket(TimedSocketFactory.java:97) 
    at org.jnp.interfaces.TimedSocketFactory.createSocket(TimedSocketFactory.java:82) 
    at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:325) 
    ... 7 more 

如何连接到本地主机上的入站端点?

回答

0

你真的在使用JNDI服务吗? Tipically,你并不需要设置的话题属性的全名,只是使用的名称:

虽然很奇怪,从一个话题读取和写入同一主题。

+0

维克多,感谢您的回答,我想我更接近一些,请看我的编辑。 – jorrebor

+0

对于外部连接,127.0.0.1:1099中的you jnp服务已关闭。是否有可能适用于您的其他项目,因为该代码位于承载jndi的同一容器上? 你可以试试telnet 127.0.0.1 1099吗? –

+0

谢谢。打开端口后,发生同样的异常。 Telnet连接也被拒绝,但这是因为你不能telnet到本地主机。还有其他建议吗? – jorrebor