2013-04-11 47 views
0

我试图把Ejabberd服务器放在Mule ESB社区版的后面,这意味着所有到Ejabberd服务器的消息必须首先进入ESB。通过Mule ESB CE连接Ejabbered CE

我用了XMPP连接器在文件中如下XML配置:

<?xml version="1.0" encoding="UTF-8"?> 
<mule xmlns="http://www.mulesoft.org/schema/mule/core" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:spring="http://www.springframework.org/schema/beans" 
    xmlns:xmpp="http://www.mulesoft.org/schema/mule/xmpp" 
    xmlns:stdio="http://www.mulesoft.org/schema/mule/stdio" 
    xsi:schemaLocation=" 
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd 
    http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/3.1/mule.xsd 
    http://www.mulesoft.org/schema/mule/xmpp http://www.mulesoft.org/schema/mule/xmpp/3.1/mule-xmpp.xsd 
    http://www.mulesoft.org/schema/mule/stdio http://www.mulesoft.org/schema/mule/stdio/3.1/mule-stdio.xsd"> 

    <xmpp:connector name="xmppConnector" host="192.168.1.132" port="5222" user="[email protected]" password="password"/> 

    <flow name="stdio2xmpp"> 
     <stdio:inbound-endpoint system="IN"/> 
     <xmpp:outbound-endpoint type="CHAT" recipient="[email protected]"/> 
    </flow> 

    <flow name="xmpp2stdio"> 
     <xmpp:inbound-endpoint type="CHAT" from="[email protected]"/> 
     <xmpp:xmpp-to-object-transformer/> 
     <stdio:outbound-endpoint system="OUT"/> 
    </flow> 
</mule> 

我敢肯定,用户名和密码是正确的,因为我可以用洋泾浜用它登录服务器。当我试图在studio中运行这个流程时,它总是抛出异常“未连接到服务器”。

Exception in thread "main" org.mule.module.launcher.DeploymentStartException: IllegalStateException: Not connected to server. 
     at org.mule.module.launcher.application.DefaultMuleApplication.start(DefaultMuleApplication.java:174) 
     at org.mule.module.launcher.application.ApplicationWrapper.start(ApplicationWrapper.java:107) 
     at org.mule.module.launcher.DefaultMuleDeployer.deploy(DefaultMuleDeployer.java:47) 
     at org.mule.tooling.server.application.ApplicationDeployer.run(ApplicationDeployer.java:56) 
     at org.mule.tooling.server.application.ApplicationDeployer.main(ApplicationDeployer.java:88) 
     Caused by: org.mule.retry.RetryPolicyExhaustedException: Not connected to server. 
     at org.mule.retry.policies.AbstractPolicyTemplate.execute(AbstractPolicyTemplate.java:105) 
     at org.mule.transport.AbstractConnector.connect(AbstractConnector.java:1616) 
     at org.mule.transport.AbstractConnector.start(AbstractConnector.java:428) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
     at java.lang.reflect.Method.invoke(Unknown Source) 
     at org.mule.lifecycle.phases.DefaultLifecyclePhase.applyLifecycle(DefaultLifecyclePhase.java:225) 
     at org.mule.lifecycle.RegistryLifecycleManager$RegistryLifecycleCallback.onTransition(RegistryLifecycleManager.java:276) 
     at org.mule.lifecycle.RegistryLifecycleManager.invokePhase(RegistryLifecycleManager.java:155) 
     at org.mule.lifecycle.RegistryLifecycleManager.fireLifecycle(RegistryLifecycleManager.java:126) 
     at org.mule.registry.AbstractRegistryBroker.fireLifecycle(AbstractRegistryBroker.java:80) 
     at org.mule.registry.MuleRegistryHelper.fireLifecycle(MuleRegistryHelper.java:120) 
     at org.mule.lifecycle.MuleContextLifecycleManager$MuleContextLifecycleCallback.onTransition(MuleContextLifecycleManager.java:94) 
     at org.mule.lifecycle.MuleContextLifecycleManager$MuleContextLifecycleCallback.onTransition(MuleContextLifecycleManager.java:90) 
     at org.mule.lifecycle.MuleContextLifecycleManager.invokePhase(MuleContextLifecycleManager.java:72) 
     at org.mule.lifecycle.MuleContextLifecycleManager.fireLifecycle(MuleContextLifecycleManager.java:64) 
     at org.mule.DefaultMuleContext.start(DefaultMuleContext.java:250) 
     at org.mule.module.launcher.application.DefaultMuleApplication.start(DefaultMuleApplication.java:151) 
     ... 4 more 
     Caused by: java.lang.IllegalStateException: Not connected to server. 
     at org.jivesoftware.smack.XMPPConnection.addPacketListener(XMPPConnection.java:747) 
     at org.jivesoftware.smackx.ServiceDiscoveryManager.init(ServiceDiscoveryManager.java:270) 
     at org.jivesoftware.smackx.ServiceDiscoveryManager.(ServiceDiscoveryManager.java:80) 
     at org.jivesoftware.smackx.ServiceDiscoveryManager$1.connectionCreated(ServiceDiscoveryManager.java:66) 
     at org.jivesoftware.smack.XMPPConnection.initConnection(XMPPConnection.java:957) 
     at org.jivesoftware.smack.XMPPConnection.connectUsingConfiguration(XMPPConnection.java:904) 
     at org.jivesoftware.smack.XMPPConnection.connect(XMPPConnection.java:1415) 
     at org.mule.transport.xmpp.XmppConnector.connectToJabberServer(XmppConnector.java:137) 
     at org.mule.transport.xmpp.XmppConnector.doConnect(XmppConnector.java:84) 
     at org.mule.transport.AbstractConnector$5.doWork(AbstractConnector.java:1556) 
     at org.mule.retry.policies.AbstractPolicyTemplate.execute(AbstractPolicyTemplate.java:67) 
     ... 22 more 

任何人都有这个问题的想法?谢谢。

回答

0

mule它建立在Smack的顶部,可能会遇到建立连接的问题。

你能证实xmpp服务器启动吗?一旦你知道它继续并调试Smack。 Smack连接init只捕获可能抛出异常的子集。 例如它会忽略NPE并在OK中声明连接。 它也不是线程安全的,所以只有一个连接到xmpp服务器的原型。

+0

我确定服务器已启动。好吧,我会尝试在mule esb中调试Smack。 – Tony 2013-04-15 04:26:53