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

📄 houseloanagency.java

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

package houseloanbroker;

import javax.jbi.messaging.ExchangeStatus;
import javax.jbi.messaging.Fault;
import javax.jbi.messaging.InOut;
import javax.jbi.messaging.MessageExchange;
import javax.jbi.messaging.MessagingException;
import javax.jbi.messaging.NormalizedMessage;
import javax.xml.namespace.QName;
import javax.xml.transform.TransformerException;

import org.apache.servicemix.MessageExchangeListener;
import org.apache.servicemix.components.util.ComponentSupport;
import org.apache.servicemix.jbi.jaxp.SourceTransformer;
import org.apache.servicemix.jbi.jaxp.StringSource;
import org.apache.servicemix.jbi.util.DOMUtil;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.traversal.NodeIterator;

import com.sun.org.apache.xpath.internal.CachedXPathAPI;

public class HouseLoanAgency extends ComponentSupport implements MessageExchangeListener {

    public HouseLoanAgency() {
        setService(new QName("urn:sample:soa:houseloanagency", "HouseLoanAgencyService"));
        setEndpoint("houseLoanAgency");
    }
    
    private static String[][] loanStatusList = {  
    	{"Zhang San","0"},
        {"Li Si","1"},
        {"Wang Wu","2"},
        {"Zhao Liu","3"}
      };
    
    public void onMessageExchange(MessageExchange exchange) throws MessagingException {
        InOut inOut = (InOut) exchange;
        if (inOut.getStatus() == ExchangeStatus.DONE) {
            return;
        } else if (inOut.getStatus() == ExchangeStatus.ERROR) {
            return;
        }
        try {
            Document doc = (Document) new SourceTransformer().toDOMNode(inOut.getInMessage());

            String name = textValueOfXPath(doc, "//*[local-name()='name']");
            
                String operation = null;
                if (inOut.getOperation() != null) {
                    operation = inOut.getOperation().getLocalPart();
                } else {
                    operation = doc.getDocumentElement().getLocalName();
                }
                String output;

                if ("getHouseNumber".equals(operation)) {
                	System.out.println("get number operation");
                	
                    output = "<getHouseNumberResponse xmlns=\"urn:sample:soa:houseloanagency\"><housenumber>" + getHouseNumber(name) + "</housenumber></getHouseNumberResponse>";
                }else {
                	System.out.println("else operation>>>>>>>>>>");
                    throw new UnsupportedOperationException(operation);
                }
                
                if(getHouseNumber(name) == -1)
                {
                    Fault fault = inOut.createFault();
                    fault.setContent(new StringSource("<InvalidNAME xmlns=\"urn:sample:soa:houseloanagency\"><name>" + name + "</name></InvalidNAME>"));               	
                    fail(inOut, fault);
                	
                } else
                {
	                System.out.println("output>>>>>>"+output);
	                NormalizedMessage answer = inOut.createMessage();
	                answer.setContent(new StringSource(output));
	                answer(inOut, answer);
                }
            
        } catch (Exception e) {
            throw new MessagingException(e);
        }
    }

    
    private int getHouseNumber(String name)	 {
    	int houseNumber = -1;
    	for (int i=0; i<loanStatusList.length; i++){
    		String[] item = loanStatusList[i];
    		String itemName = item[0];
    		int itemNum = Integer.parseInt(item[1]);
    		
    		if (name.equalsIgnoreCase(itemName))
    		{
    			houseNumber = itemNum;
    			break;
    		}
    	}
    	
    	return houseNumber;
    }

    
    protected String textValueOfXPath(Node node, String xpath) throws TransformerException {
        CachedXPathAPI cachedXPathAPI = new CachedXPathAPI();
        NodeIterator iterator = cachedXPathAPI.selectNodeIterator(node, xpath);
        Node root = iterator.nextNode();
        if (root instanceof Element) {
            Element element = (Element) root;
            if (element == null) {
                return "";
            }
            String text = DOMUtil.getElementText(element);
            return text;
        }
        else if (root != null) {
            return root.getNodeValue();
        } else {
            return null;
        }
    }
}

⌨️ 快捷键说明

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