疯狂的IT人整理基于WebService的Hessian例子教程

来源:互联网 发布:java开发工程师要求 编辑:程序博客网 时间:2024/05/20 06:09
另附Hessian例子教程(包括服务器端和客户端代码)基于WebService的Hessian例子教程.rar
在进行基于Hessian的项目开发时,应当注意以下几点:
 
  ▲JAVA服务器端必须具备以下几点:
 
  ·包含Hessian的jar包
 
  ·设计一个接口,用来给客户端调用
 
  ·实现该接口的功能
 
  ·配置web.xml,配好相应的servlet
 
  ·对象必须实现Serializable 接口
 
  ·对于复杂对象可以使用Map的方法传递
 
  ▲客户端必须具备以下几点:
 
  ·java客户端包含Hessian.jar的包。C#中引用hessianCSharp.dll
 
  ·具有和服务器端结构一样的接口。包括命名空间都最好一样
 
  ·利用HessianProxyFactory调用远程接口。
 
  简单JAVA客户端例子:

  新建一个名EasyHession的webProject项目,将Hessian.jar放入web-inf下的lib中
 
  创建接口:
 
  packageapp.demo;
 
  public interfaceBasicAPI {
 
  public void setGreeting(Stringgreeting);
 
  public String hello();
 
  public User getUser();
 
  }
 
  实现接口:
 
  packageapp.demo;
 
  publicclass BasicService implements BasicAPI {
 
  privateString _greeting = "Hello, world";
 
  public void setGreeting(String greeting)
 
  {
 
  _greeting = greeting;
 
  System.out.println("set greetingsuccess:"+_greeting);
 
  }
 
  public String hello()
 
  {
 
  return _greeting;
 
  }
 
  public User getUser() {
 
  return new User("prance", "meshow");
 
  }
 
  }
 
  创建一个实现Serializable的projo类也可以是Bean。
 
  package app.demo;
 
  import java.io.Serializable;
 
  public class User implements Serializable{
 
  String userName ="snoopy";
 
  String password ="showme";
 
  public User(Stringuser, String pwd) {
 
  this.userName =user;
 
  this.password= pwd;
 
  }
 
  public StringgetUserName() {
 
  returnuserName;
 
  }
 
  public StringgetPassword() {
 
  returnpassword;
 
  }
 
  }
 
  接下来是配置web.xml
 
  <?xml version="1.0"encoding="UTF-8"?>
 
  <web-app version="2.4"
 
  xmlns="http://java.sun.com/xml/ns/j2ee"
 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
 
  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 
  <servlet>
 
  <servlet-name>hello</servlet-name>
 
  <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
 
  <init-param>
<param-name>service-class</param-name>
 
  <param-value>app.demo.BasicService</param-value>
 
  </init-param>
 
  </servlet>
 
  <servlet-mapping>
 
  <servlet-name>hello</servlet-name>
 
  <url-pattern>/hello</url-pattern>
 
  </servlet-mapping>
 
  </web-app>
 
  为了测试可以在编辑一个简单的test.jsp
 
  <%@ pageimport="com.caucho.hessian.client.HessianProxyFactory,
 
  app.demo.BasicAPI"%>
 
  <%@page language="java"%>
 
  <%
 
  HessianProxyFactory factory = newHessianProxyFactory();
 
  String url = ("http://" +request.getServerName() + ":" +request.getServerPort() +
 
  request.getContextPath() + "/hello");
 
  out.println(url);
 
  BasicAPI basic = (BasicAPI) factory.create(BasicAPI.class,url);
 
  out.println("Hello: " + basic.hello());
 
  out.println("Hello: " + basic.getUser() .getUserName() );
 
  out.println("Hello: " +basic.getUser().getPassword() );
 
  %>
 
  将一切配置成功后,将项目发布到web 服务器上去,可以是Tomcat,Rain等等。
 
  进入
 
  结果如下:
 
  Hello: Hello, world
 
  Hello: snoopy
 
  Hello: showme
 
  说明服务器端已经编写成功。

  创建一个名为HessianClient的JAVAProject,载入hessian.jar包
 
  创建与服务器端一样的接口,及基础类
 
  public interface BasicAPI{
 
  public void setGreeting(Stringgreeting);
 
  public String hello();
 
  public User getUser();
 
  }
 
  import java.io.Serializable;
 
  public class User implements Serializable{
 
  String userName ="snoopy";
 
  String password ="showme";
 
  public User(Stringuser, String pwd) {
 
  this.userName =user;
 
  this.password= pwd;
 
  }
 
  public StringgetUserName() {
 
  returnuserName;
 
  }
 
  public StringgetPassword() {
 
  returnpassword;
 
  }
 
  }

  importcom.caucho.hessian.client.HessianProxyFactory;
 
  public class BasicClient {
 
  public static void main(String[] args)
 
  throwsException
 
  {
 
  String url ="http://127.0.0.1:8080/Hessian/hello";
 
  HessianProxyFactoryfactory = new HessianProxyFactory();
 
  BasicAPIbasic = (BasicAPI) factory.create(BasicAPI.class, url);
 
  System.out.println("Hello:" + basic.hello());
 
  System.out.println("Hello:" + basic.getUser().getUserName());
 
  System.out.println("Hello:" + basic.getUser().getPassword());
 
  basic.setGreeting("HelloGreeting");
System.out.println("Hello:" + basic.hello());
 
  }
 
  }
 
  运行结果:
 
  Hello: Hello, world
 
  Hello: prance
 
  Hello: meshow
 
  Hello: Hello Greeting