Hessian初次见面,请多多关照

本文深入解析Java远程通信原理,并通过实际案例展示如何构建客户端和服务端进行远程调用。从序列化实体类开始,到配置web.xml实现服务对外提供,再到客户端调用服务端方法并获取实体实例,全程简洁明了。
:D 一直对java远程通信模模糊糊,对我而言貌似太神秘了.其原因在于一直没有机会使用!(怪我懒,平时自己也不搞... :oops: )最近公司项目用到了,就看了看,下了jar包自己做了个小demo,供大家入门,实在是“很简单”!以下是参考代码:

在我的MyEclipse中建了两个工程:hessianClient和hessianService,一个客户端,一个做服务端,功能即:客户端远程调用服务端方法返回entity实例.
实体类如下(切记要实现序列化,客户端与服务器共享实体类):

package org.galo.entity;

import java.io.Serializable;

public class User implements Serializable{

private static final long serialVersionUID = 1L;
private String username;
private String password;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}

客户端与服务端提供一样的接口,接口定义如下:

package org.galo.service;

import org.galo.entity.User;

public interface LoginService {

public User loginValid();
}

服务器端的实现方法:

package org.galo.service.impl;

import org.galo.entity.User;
import org.galo.service.LoginService;

public class LoginServiceImpl implements LoginService{

public User loginValid() {

User user = new User();
user.setUsername("admin");
user.setPassword("galo");
return user;
}
}


接下来配置服务器端的web.xml,配置对外服务以供客户端调用:

<servlet>
<servlet-name>login</servlet-name>
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
<init-param>
<param-name>service-class</param-name>
<param-value>org.galo.service.impl.LoginServiceImpl</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>


最后一步即客户端调用服务端方法:

package org.galo.test;

import java.net.MalformedURLException;

import org.galo.entity.User;
import org.galo.service.LoginService;

import com.caucho.hessian.client.HessianProxyFactory;

public class HessianTest {

public static void main(String[] args) {

String url = "http://127.0.0.1:8080/hessianService/login";
HessianProxyFactory factory = new HessianProxyFactory();
try {
LoginService service = (LoginService) factory.create(LoginService.class, url);
User user = service.loginValid();
System.out.println(user.getUsername());
System.out.println(user.getPassword());
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


发布客户端与服务端至tomcat,启动服务器,运行测试方法...嘿嘿! :lol:
之前我测试的时候报了一个异常,连接错误之类的,原因在于我的url没带端口.

附:hessian.jar包
补充一下:hessian采用的二进制通信协议,同类的java远程通信技术还有:Rmi,httpInvoker,WS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值