Mule ESB 学习笔记(20)Mule和Spring httpinvoker的整合

阅读更多

mule的配置文件:




    

    
    
    
    

    

        
        

            
            
                
                    
                    
                        
                    
                
            

            
                
                    

                        
                        

                        
                        

                        
                    
                
            

        
    

 

 

package com.easyway.mule.spring.httpinvoker.remoting;

import org.mule.util.StringUtils;

import java.io.Serializable;

public class ComplexData implements Serializable
{
    private static final long serialVersionUID = -886414019167115007L;

    private String someString = "Default String";
    private Integer someInteger = new Integer(13);

    public ComplexData()
    {
        super();
    }

    public ComplexData(String someString, Integer someInteger)
    {
        super();
        setSomeString(someString);
        setSomeInteger(someInteger);
    }

    public String toString()
    {
        try
        {
            String currentString = StringUtils.defaultIfEmpty(someString, "NULL");
            return "[ComplexData: [someString=" + currentString + "][someInteger=" + someInteger + "]]";
        }
        catch (Exception e)
        {
            throw new RuntimeException(e);
        }
    }

    public Integer getSomeInteger()
    {
        return someInteger;
    }

    public void setSomeInteger(Integer someInteger)
    {
        this.someInteger = someInteger;
    }

    public String getSomeString()
    {
        return someString;
    }

    public void setSomeString(String someString)
    {
        this.someString = someString;
    }

}

 

 

package com.easyway.mule.spring.httpinvoker.remoting;

/**
 * A server-side service to receive and process ComplexData.
 */
public class DoSomeWork implements WorkInterface
{
    public String executeByteArray(byte[] input)
    {
        return executeString(new String(input));
    }

    public String executeString(String input)
    {
        return "You said " + input;
    }

    public ComplexData executeComplexity(ComplexData input)
    {
        input.setSomeString(input.getSomeString() + " Received");
        input.setSomeInteger(new Integer(input.getSomeInteger().intValue() + 1));
        return input;
    }
}

 

 

package com.easyway.mule.spring.httpinvoker.remoting;

public interface WorkInterface
{
    String executeByteArray(byte[] input);

    String executeString(String input);

    ComplexData executeComplexity(ComplexData input);
}

 

 

服务端测试:

package com.easyway.httpinvoker;


import org.mule.api.MuleContext;
import org.mule.api.context.MuleContextFactory;
import org.mule.config.spring.SpringXmlConfigurationBuilder;
import org.mule.context.DefaultMuleContextFactory;
/**
 * 
 * @author longgangbai
 *
 */
public class HttpInvokerServer 
{

	   public static void main(String[] args) {
			 try {
//				  String configFile = "spring-remoting-mule-config-flow.xml";
//				  String configFile = "spring-remoting-mule-config-service.xml";
				 String configFile = "spring-remoting-mule-config.xml";
			      System.setProperty("mule.verbose.exceptions","true");
			      String[] configFileArr = new String[] {configFile };
			      MuleContextFactory muleContextFactory = new DefaultMuleContextFactory();
			      MuleContext muleContext = muleContextFactory
			              .createMuleContext(new SpringXmlConfigurationBuilder(configFileArr));
			      muleContext.start();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
}

 

客户端测试:

package com.easyway.httpinvoker;


import org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean;

import com.easyway.mule.spring.httpinvoker.remoting.ComplexData;
import com.easyway.mule.spring.httpinvoker.remoting.WorkInterface;
/**
 * 
 * @author longgangbai
 *
 */
public class HttpInvokerClient 
{

	private static final String SPRING_HTTP_ENDPOINT = "http://localhost:8003/springService";
    public static void main(String[] args) {
	   ComplexData cd = new ComplexData("Foo", new Integer(13));
       HttpInvokerProxyFactoryBean invoker = new HttpInvokerProxyFactoryBean();
       invoker.setServiceInterface(WorkInterface.class);
       invoker.setServiceUrl(SPRING_HTTP_ENDPOINT);
       invoker.afterPropertiesSet();
       WorkInterface worker = (WorkInterface)invoker.getObject();
       ComplexData data = worker.executeComplexity(cd);
       System.out.println(data.getSomeString());
       System.out.println(data.getSomeInteger());
   }
}

 

你可能感兴趣的:(mule,ESB,SOA,Spring,httpinvoker)