⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myreceiver.java

📁 基于eclipse环境下开发的servicemix例程
💻 JAVA
字号:
package jbisample;

import java.util.Map;

import javax.jbi.messaging.ExchangeStatus;
import javax.jbi.messaging.InOut;
import javax.jbi.messaging.MessageExchange;
import javax.jbi.messaging.MessagingException;
import javax.jbi.messaging.NormalizedMessage;
import javax.jbi.messaging.MessageExchange.Role;
import javax.xml.namespace.QName;

import org.apache.servicemix.MessageExchangeListener;
import org.apache.servicemix.components.util.ComponentSupport;

import EDU.oswego.cs.dl.util.concurrent.ConcurrentHashMap;


public class MyReceiver extends ComponentSupport implements MessageExchangeListener {
    

    public MyReceiver() {
    	//定义服务的名称,以便JBI通过此名字来找到此服务组件。
        super(new QName("http://servicemix.org/demo", "receiver"), "input");
    }
    
    /**
     * 
     下面的方法不停地来接收信息。
      在JBI里面,所有的信息都是通过MessageExchange传过来,每一个传过来的MessageExcahnge都有一个唯一的确认号ExchangeId。
      一个具体的MessageExchange的内容如下:
		InOut[
		  id: ID:OEM-MICRO-2966-1186566076648-2:0
		  status: Active
		  role: provider
		  service: {http://servicemix.org/demo}receiver
		  endpoint: receiver
		  in: <?xml version="1.0" encoding="UTF-8"?><getHello xmlns="hello">
		         <in0 xmlns="hello">Aihu</in0>
		      </getHello>
		]

     */
    public void onMessageExchange(MessageExchange exchange) throws MessagingException {
    	
    	
    	System.out.println(" ********  MessageExchange  start  **************  ");
    	System.out.println(exchange);
    	System.out.println(" ********  MessageExchange  end  **************  ");
    	
    	//下面的方法可以得到exchangeId号
    	String exchangid = exchange.getExchangeId();
    	
    	if (exchange.getStatus() == ExchangeStatus.ACTIVE) {	
            
    		//下面的方法得到端口号的名称,通过下面的方法可以得到端口号的名称。
	    	String endPoint = exchange.getEndpoint().getEndpointName();

	    	
	    	if(endPoint.equalsIgnoreCase("receiver"))
	    	{
	    		//将MessageExchange转化为InOut的形式。
	    		InOut inout = (InOut) exchange;
                
	    		// 取出NormalizedMessage
	    		NormalizedMessage inMessage = inout.getInMessage();
	    		
	    		QName qName = new QName("http://servicemix.org/demo", "helloService");
	        	
	        	InOut exInOut = createInOutExchange(qName, null, null);
	        	
	        	exInOut.setProperty("requestId", exchangid);
	        	
	        	exInOut.setInMessage(inMessage);
	        	
	        	send(exInOut);
	    	} else
	    	{
	    		InOut inout = (InOut) exchange;
	    		NormalizedMessage outMessage = inout.getOutMessage();
	    		
	    		String id = (String) getProperty(inout, "requestId");
	    		
	    		InOut returnInOut = (InOut) ht.get(id);

	    		returnInOut.setOutMessage(outMessage);
	    		
	            send(returnInOut);

	    	}
	    	
	        if (exchange.getRole() == Role.PROVIDER) {
	           ht.put(exchangid,exchange);
	        } else
	        {
	    	 done(exchange);
	    	
	        }
    	}

    }


    protected Object getProperty(MessageExchange me, String name) {
        return me.getProperty(name);
    }
    
  
     private Map ht = new ConcurrentHashMap();
     
 
    
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -