如何通过Mule订阅JMS主题?

如何通过Mule订阅JMS主题?,mule,jndi,mule-studio,Mule,Jndi,Mule Studio,我需要通过Mule订阅JMS主题。我们用的是骡子3.5 我已设置此流: <jms:connector name="vos-jms-connector" specification="1.1" validateConnections="true" connectionFactoryJndiName="ConnectionFactory" doc:name="JMS" password="guest" username="guest"> <jms:c

我需要通过Mule订阅JMS主题。我们用的是骡子3.5

我已设置此流:

<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>
但是,我得到一个“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

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

您真的在使用JNDI服务吗? 通常,您不需要在“主题”属性上设置全名,只需使用以下名称:


虽然从一个主题阅读和写同一个主题很奇怪。

Victor,谢谢你的回答,我想我更接近了,请看我的编辑。127.0.0.1:1099中的You jnp服务看起来对外部连接关闭了。这是否可能适用于您的其他项目,因为该代码位于承载jndi的同一容器上?你能试试telnet 127.0.0.1 1099吗?谢谢。打开端口后,会发生相同的异常。Telnet连接也被拒绝,但这是因为您无法Telnet到本地主机。还有其他建议吗?您应该能够从Mule运行的同一主机远程登录到具有jnp服务的主机。
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