前言:
hessian介紹可以看第一篇博文:
https://blog.csdn.net/qiaziliping/article/details/81069265
hessian服務端
1、java項目映入hessian的jar包,maven項目直接配置pom檔案
2、web.xml配置 HessianServlet
3、接口,實作類,實體類
服務端demo結構:

- hessian 服務端 web.xml 配置如下:
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>
com.caucho.hessian.server.HessianServlet
</servlet-class>
<!-- 接口路徑 -->
<init-param>
<param-name>home-api</param-name>
<param-value>com.hession.service.ILogPerson</param-value>
</init-param>
<!-- 實作類路徑 -->
<init-param>
<param-name>home-class</param-name>
<param-value>com.hession.service.impl.LogPerson</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/Helloxx</url-pattern>
</servlet-mapping>
-
實體類
注:實體類必須實作Serializable接口,必須序列化
package com.hession.model;
import java.io.Serializable;
public class Person implements Serializable {
private static final long serialVersionUID = L;
private String firstName;
private String lastName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@Override
public String toString() {
return "Person [firstName=" + firstName + ", lastName=" + lastName + "]";
}
}
- hessian 服務端 接口
package com.hession.service;
import java.io.InputStream;
import com.hession.model.Person;
/**
* 定義遠端通路接口,供導出遠端服務使用
* @date 2014-9-3 - 上午11:38:52
* @Description
*/
public interface ILogPerson {
public Object getPerson(Person person);
void upload(String filename, InputStream data);
}
- hessian 服務端 實作類
package com.hession.service.impl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Service;
import com.hession.model.Person;
import com.hession.service.ILogPerson;
/**
* @Description 遠端服務接口的實作類
*/
public class LogPerson implements ILogPerson {
private static Log log = LogFactory.getLog(FileUploader.class);
@Override
public Object getPerson(Person person) {
Map<String, Object> map = new HashMap<String, Object>();
List<Person> list = new ArrayList<Person>();
for (int i = ; i < ; i++) {
Person person1 = new Person();
person1.setFirstName("李平" + i);
person1.setLastName("恰子" + i);
list.add(person1);
}
map.put("list", list);
return map;
}
// 測試檔案上傳接口
@Override
public void upload(String filename, InputStream data) {
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(data);
String path = "D:\\testUpload\\";
File file = new File(path);
if (!file.exists()) {
file.mkdirs();
}
bos = new BufferedOutputStream(new FileOutputStream(path + filename));
byte[] buffer = new byte[];
int r = bis.read(buffer, , buffer.length);
while (r > ) {
bos.write(buffer, , r);
r = bis.read(buffer, , buffer.length);
}
} catch (IOException e) {
log.error("File upload exception: ", e);
} finally {
if (bos != null) {
try {
bos.close();
} catch (IOException e) {
log.error("Closing output exception: ", e);
}
}
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
log.error("Closing input exception: ", e);
}
}
}
}
}
hessian用戶端
1、引入hessian.jar
2、編寫和服務端一樣的接口,包名最好也一樣(可以不一樣,但是方法名稱和參數必須一樣)
3、編寫和服務端實體類保持一緻,包名最好一樣(可以不一樣,但是方法名稱和參數必須一樣)
用戶端項目結構
用戶端我直接用Junit測試的
Junit 測試類如下:
import java.net.MalformedURLException;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
import com.caucho.hessian.client.HessianProxyFactory;
import com.hession.model.Person;
public class HessianTest {
@SuppressWarnings("unchecked")
@Test
public void testServletHession() throws MalformedURLException {
Person person = new Person();
String url = "http://localhost:9080/spring-hessain-server/Helloxx";
HessianProxyFactory factory = new HessianProxyFactory();
ILogPerson logPerson = (ILogPerson) factory.create(ILogPerson.class, url);
Map<String, Object> map = new HashMap<String, Object>();
map = (Map<String, Object>) logPerson.getPerson(person);
System.out.println("--->:" + map);
}
/**
* servlet hessian上傳檔案
*/
@Test
public void testHessionXml() throws MalformedURLException, FileNotFoundException {
final String url = "http://localhost:9080/spring-hessain-server/Helloxx";
HessianProxyFactory factory = new HessianProxyFactory();
ILogPerson uploader = (ILogPerson) factory.create(ILogPerson.class, url);
InputStream data =
new BufferedInputStream(new FileInputStream("C:\\Users\\liping\\Desktop\\aaa.png"));
uploader.upload("試試圖檔00.png", data);
}
}
是不是很簡單,大家快試試吧