spring整合hessian進行遠端通訊
由於日誌沒有圖片功能,可以訪問內部論壇:
host配置: 192.168.5.245 forum.xxt.cn
文章連線: http://forum.xxt.cn/posts/list/0/276.page
spring 整合hessian進行遠端通訊
Hessian是使用HTTP將物件以中性的二進位制訊息進行傳送,而不像RMI使用Java的序列化格式,由於二進位制訊息是中性的,因此不受限於某種程式語言所實現的客戶端或伺服器端,二進位制資料在傳輸是所需要的頻寬較小是其優點。
由於Hessian是通過HTTP傳送的,所在使用時需要WEB框架,在使用spring 時,即就是需要使用DispatcherServlet,下面通過一個例項來展示hessian與spring整合使用。
一.首先介紹一下此例項的環境
1、 tocmat: tomcat5.5
2、 java: jdk1.5.0_12
3、 eclipse: eclipse 3.2.0
4、 spring: 2.55
二.伺服器端程式
1. 先看程式的目錄結構:(如圖1)
2. 新建tomcat工程:
3. 新增jar包,路徑構建:
備註:spring的版本,請從下載的官網上下載。
spring.jar : spring-framework-2.5.5\dist
hessian.jar : spring-framework-2.5.5\lib\caucho
4. 檔案詳單:
(1) cn.xxt.service.IuserService.java
package cn.xxt.service;
import java.util.List;
/**
* hessian 服務介面,取出使用者姓名介面
* @author zhaoguoli
* @version V1.0 2010-09-30
*/
public interface IUserService {
public List getUsernames();
}
(2) cn.xxt.service.impl.UserService.java
package cn.xxt.service.impl;
import java.util.ArrayList;
import java.util.List;
import cn.xxt.service.IUserService;
/**
* hessian 服務實現,取出使用者姓名列表
* @author zhaoguoli
* @version V1.0 2010-09-30
*/
public class UserService implements IUserService {
public List getUsernames() {
List<String> usernames = new ArrayList<String>();
usernames.add("zhaoguoli");
usernames.add("wanglei");
usernames.add("yinzhuangzhuang");
return usernames;
}
}
(3) WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>remoting</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>remoting</servlet-name>
<url-pattern>/remoting/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
(4) WEB-INF/applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="userservicetarget" class="cn.xxt.service.impl.UserService"/>
</beans>
(5) WEB-INF/ remoting-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean name="/Userservice-hessina" class="org.springframework.remoting.caucho.HessianServiceExporter">
<property name="service">
<ref bean="userservicetarget"/>
</property>
<property name="serviceInterface">
<value>cn.xxt.service.IUserService</value>
</property>
</bean>
</beans>
至此,伺服器程式碼已經完畢。
三. 客戶端程式碼
1. 先檢視程式的目錄結構:(如圖2)
2. 新建java工程
3. 新增jar包,路徑構建
4. 檔案詳單
(6) cn.xxt.service.IuserService.java
package cn.xxt.service;
import java.util.List;
/**
* hessian 服務介面,取出使用者姓名介面
* @author zhaoguoli
* @version V1.0 2010-09-30
*/
public interface IUserService {
public List getUsernames();
}
(7) cn.xxt.client.HessinaClient.java
package cn.xxt.client;
import java.util.List;
import cn.xxt.service.IUserService;
/**
* hessian 測試 客戶端
* @author zhaoguoli
* @version V1.0 2010-09-30
*/
public class HessinaClient {
private IUserService userservice;
public IUserService getUserservice() {
return userservice;
}
public void setUserservice(IUserService userservice) {
this.userservice = userservice;
}
public List getUsernames() {
return this.userservice.getUsernames();
}
}
(8) cn.xxt.client.HessianTest.java
package cn.xxt.client;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* hessian 客戶端 呼叫
* @author zhaoguoli
* @version V1.0 2010-09-30
*/
public class HessianTest {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"applicationContext.xml");
HessinaClient hessina = (HessinaClient) ctx.getBean("hessinaclient");
System.out.println("hessinaclient:" + hessina.getUsernames());
}
}
(9) src/applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location"><value>client.properties</value></property>
</bean>
<bean id="hessinaclient" class="cn.xxt.client.HessinaClient">
<property name="userservice">
<ref
相關文章
- 使用遠端Docker進行整合測試Docker
- 如何通過CRM進行遠端支援?
- Spring Boot整合hessian入門Spring Boot
- spring mina整合(客戶端進行呼叫)Spring客戶端
- 通過串列埠進行通訊 :串列埠
- Redis:我是如何與客戶端進行通訊的Redis客戶端
- 遠端通訊控制器(T-BOX)
- Java 遠端通訊技術及原理分析Java
- 環信即時通訊——整合客戶端客戶端
- 通過ASP.NET程式設計進行遠端殺死程式ASP.NET程式設計
- Android通過https協議與伺服器端進行通訊AndroidHTTP協議伺服器
- Spring Remoting: HessianSpringREM
- 基於 Spring 的遠端過程呼叫(RPC):RMI、Hessian/Burlap、Spring HttpInvoker 四種實現方式詳解SpringRPCHTTP
- 使用Xdebug進行遠端除錯除錯
- 使用dd命令進行遠端備份
- 使用IDEA進行遠端除錯Idea除錯
- 【Spring Boot】整合Netty Socket.IO通訊框架Spring BootNetty框架
- Meterpreter生成被控端並進行遠端控制
- Spring Boot整合Spring Cloud Vault進行安全儲存Spring BootCloud
- 利用LINUX進行遠端辦公(轉)Linux
- Spring Boot整合Spring Data JPA進行資料庫操作Spring Boot資料庫
- Spring Boot整合Spring Cloud Commons進行公共元件管理Spring BootCloud元件
- Spring Boot整合Spring Cloud Release進行版本釋出管理Spring BootCloud
- 使用SuperSocket的FixedHeaderReceiveFilter進行通訊HeaderFilter
- 採用管道進行通訊的例子
- 最新漏洞:Spring Framework遠端程式碼執行漏洞SpringFramework
- 如何使用scp進行遠端複製檔案?
- 用 IBM Lotus Expeditor 進行遠端除錯IBM除錯
- Spring Boot 整合 WebSocket 實現服務端推送訊息到客戶端Spring BootWeb服務端客戶端
- DB2訪問遠端資料庫通訊錯誤DB2資料庫
- Web | 快速整合華為AGC遠端配置WebGC
- $attrs 與 $listeners 進行「巢狀元件」通訊巢狀元件
- C++使用libcurl進行http通訊C++HTTP
- 利用橢圓曲線進行加密通訊加密
- 使用Google Protocol Bufffers進行通訊(Ruby & C)GoProtocol
- 在 Laravel 中使用 Workerman 進行 socket 通訊Laravel
- 遠端呼叫 - spring+rmiSpring
- 【安全公告】Spring Core遠端命令執行漏洞預警Spring