RPC框架——簡單高效hessian的使用方式

 

RPC(Remote Procedure Call Protocol)java


 

RPC使用C/S方式,採用http協議,發送請求到服務器,等待服務器返回結果。這個請求包括一個參數集和一個文本集,一般造成「classname.methodname」形式。優勢是跨語言跨平臺,C端、S端有更大的獨立性,缺點是不支持對象,沒法在編譯器檢查錯誤,只能在運行期檢查。web

RPC是指遠程過程調用,也就是說兩臺服務器A,B,一個應用部署在A服務器上,想要調用B服務器上應用提供的函數/方法,因爲不在一個內存空間,不能直接調用,須要經過網絡來表達調用的語義和傳達調用的數據。spring

 

關於JAVA中hessian的使用:json


 

服務端配置(接收數據方):服務器

1.    講述如何配置Hessian的服務器端(與Spring集成)網絡

2.定義接口類app

package cn.demo.hessian;
/**
 * 服務端接口
 * @author xiao
 *
 */
public interface ISayHello {

	public String sayHello(String arg1,String arg2);
}

  

3.接口實現類函數

package cn.demo.hessian.impl;

import cn.demo.hessian.ISayHello;
/**
 * 服務端接口實現
 * @author xiao
 *
 */
public class SayHelloImpl implements ISayHello {

	public String sayHello(String arg1, String arg2) {
		// TODO Auto-generated method stub
		return "arg1="+arg1+",arg2="+arg2;
	}

}

  

4.配置Web.xmlurl

<servlet>  
    <servlet-name>remote</servlet-name>       <!-- 使用Spring的代理Servlet -->       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>       <init-param>           <param-name>namespace</param-name>           <param-value>classes/remote-servlet</param-value>      </init-param>     <load-on-startup>1</load-on-startup>   </servlet>      <servlet-mapping>      <servlet-name>remote</servlet-name>      <url-pattern>/remote/*</url-pattern>   </servlet-mapping>  

 

5.配置remote-servlet.xml[該文件位於src目錄下,即編譯後存在與classes下]:spa

 

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">  
<beans>       <!-- 接口的具體實現類 -->       <bean id="helloImpl" class="cn.demo.hessian.impl.SayHelloImpl" />      <!-- 使用Spring的HessianServie作代理 -->       <bean name="/helloHessian"      class="org.springframework.remoting.caucho.HessianServiceExporter">          <!-- service引用具體的實現實體Bean-->           <property name="service" ref="helloImpl" />           <property name="serviceInterface" value="cn.demo.hessian.ISayHello" />       </bean>              <!-- 能夠配置多個HessianServiceExporter代理Bean -->   </beans>  

 

 

服務器端配置完畢。

客戶端配置(也就是所謂發送數據的一方):

 

1.服務端接口,這裏指服務端調用客戶端的接口方法類,和客戶端一致:

package cn.demo.hessian.server;
/**
 * 客戶端接口
 * @author xiao
 *
 */
public interface ISayHello {

	public String sayHello(String arg1,String arg2);
}

2.beans.xml配置

<bean id="helloClient" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
        <property name="serviceUrl">
<!--服務端地址-->
            <value>http://127.0.0.1:8088/xs/remote/helloHessian</value>
        </property>
<!--客戶端接口-->
        <property name="serviceInterface" value="cn.demo.hessian.service.ISayHello"/>
</bean>

3.調用

BeanFactory ac = new ClassPathXmlApplicationContext("classpath:/beans.xml");  
ISayHello helloClient=(ISayHello)ac.getBean("helloClient");
helloClient.sayHello("hello","hessian");

 

完畢!!!


 

ps:若是須要傳輸對象,能夠轉成json串,而後服務端經過json轉成對象這種方式靈活使用。  

相關文章
相關標籤/搜索