:D 一直对java远程通信模模糊糊,对我而言貌似太神秘了.其原因在于一直没有机会使用!(怪我懒,平时自己也不搞... :oops: )最近公司项目用到了,就看了看,下了jar包自己做了个小demo,供大家入门,实在是“很简单”!以下是参考代码:
在我的MyEclipse中建了两个工程:hessianClient和hessianService,一个客户端,一个做服务端,功能即:客户端远程调用服务端方法返回entity实例.
实体类如下(切记要实现序列化,客户端与服务器共享实体类):
客户端与服务端提供一样的接口,接口定义如下:
服务器端的实现方法:
接下来配置服务器端的web.xml,配置对外服务以供客户端调用:
最后一步即客户端调用服务端方法:
发布客户端与服务端至tomcat,启动服务器,运行测试方法...嘿嘿! :lol:
之前我测试的时候报了一个异常,连接错误之类的,原因在于我的url没带端口.
附:hessian.jar包
补充一下:hessian采用的二进制通信协议,同类的java远程通信技术还有:Rmi,httpInvoker,WS
在我的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
本文深入解析Java远程通信原理,并通过实际案例展示如何构建客户端和服务端进行远程调用。从序列化实体类开始,到配置web.xml实现服务对外提供,再到客户端调用服务端方法并获取实体实例,全程简洁明了。
1151

被折叠的 条评论
为什么被折叠?



