`
galo
  • 浏览: 36863 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Hessian初次见面,请多多关照

阅读更多
一直对java远程通信模模糊糊,对我而言貌似太神秘了.其原因在于一直没有机会使用!(怪我懒,平时自己也不搞... )最近公司项目用到了,就看了看,下了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,启动服务器,运行测试方法...嘿嘿!
之前我测试的时候报了一个异常,连接错误之类的,原因在于我的url没带端口.

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

相关推荐

Global site tag (gtag.js) - Google Analytics