2013-08-26 31 views
1

我有一個關於騾子RMItransports如何運行MULE RMI?

這是Example_RMITest.xml

<spring:bean id="jndiFactory" name="jndiFactory" class="org.mule.transport.rmi.MuleRMIFactory"/> 
<spring:bean id="jndiContext" name="jndiContext" factory-bean="jndiFactory" factory-method="create"> 
    <spring:constructor-arg><spring:null /></spring:constructor-arg> 
</spring:bean> 
<rmi:connector name="rmi" jndiContext-ref="jndiContext" /> 
<endpoint name="Sender2" address="rmi://192.168.0.4:1111/mytask?method=say" 
    exchange-pattern="request-response"/>  
<flow name="TestUMO"> 
    <inbound-endpoint address="vm://query" exchange-pattern="request-response"/> 
    <outbound-endpoint ref="Sender"/> 
</flow> 

問題這是我Cilent程序:

import java.util.HashMap; 
import java.util.Map; 

import org.mule.api.MuleContext; 
import org.mule.api.MuleException; 
import org.mule.api.MuleMessage; 
import org.mule.context.DefaultMuleContextFactory; 
import org.mule.module.client.MuleClient; 

public class MyMuleClientTest { 
     public static void main(String[] args) throws MuleException 
      { 
       // create mule 
      MuleContext muleContext; 
       String config = "Example_RMITest.xml"; 
       muleContext = new DefaultMuleContextFactory().createMuleContext(config); 
       muleContext.start(); 
       // creat mule client 
       MuleClient client = new MuleClient(true); 
      //Map map = new HashMap(); 
      // map.put("firstName", "p001"); 
       MuleMessage response = client.send("vm://query", null, null);   
       System.out.println("response = " + response.getPayload()); 
      } 

} 

唯一的例外是:

There is no receiver registered on connector "connector.VM.mule.default" for endpointUri vm://query 

回答

3

這您遇到的問題與RMI無關:Mule無法找到vm://query端點因爲,通過使用:

MuleClient client = new MuleClient(true); 

你開始一個第二騾,任何配置的空隙,因此,在該VM端點無法找到。

而是使用:

MuleClient client = muleContext.getClient(); 

可以連接到運行騾客戶端。

+0

我試試吧。但它仍然失敗。請給我一個騾子RMI的例子。 – lz5210

+0

如果它仍然失敗,這是由於一個不同的原因,即你可能現在有一個不同的異常堆棧。請接受這個答案,並用你得到的新堆棧打開一個新問題。 –