佳丽斯 加厚双人/单人秋冬被子暖冬 羊毛被芯羊毛柔丝被特价包邮 忧忧鱼冬外穿打底裤女秋冬厚长裤女裤加绒加厚高腰弹力铅笔裤靴裤 韩国代购2013新款 韩版秋冬休闲女时尚磨破口袋卫衣韩版学生装 潮

有时,退一步,能一口气进几步,只是这先退一步需要勇气和自信。

用心爱你,努力工作。

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  70 随笔 :: 1 文章 :: 33 评论 :: 0 Trackbacks
最近项目中涉及到外网平台调远程接口数据的问题,本来是用soap方式实现的,今天听人介绍了Hessian,想不到它的实现更加简单,代码写起来也比较少。
下面这个例子我是从Hessian官方上,稍微改了点。
创建一个名为Hessian的web工程,测试服务器为tomcat5.0,lib目录下必须包含hessian-3.0.20.jar包,下载地址:
http://www.ziddu.com/download/3556057/hessian-3.0.20.jar.rar.html
(1)接口Basic

package example;

public interface Basic {
   public String hello(); //与服务端的hello方法对应
}
(2)服务端实现类

package example;

public class BasicService implements Basic {
  private String _greeting = "Hello,ducklyl!";

  public void setGreeting(String greeting)
  {
    _greeting = greeting;
  }

  public String hello()
  {
    return _greeting;
  }
}

(3)客户端实现类

package example;

import com.caucho.hessian.client.HessianProxyFactory;
/**  
 * <p>Title: hessian实现远程调用</p>  
 * <p>Copyright: Copyright (c) 2007</p>  
 * @author ducklyl  
 * @version 1.0  
 */  
public class BasicClient {
  public static void main(String []args)
    throws Exception
  {
    String url = "http://127.0.0.1:8080/Hessian/ducklyl";
    //创建factory实例
    HessianProxyFactory factory = new HessianProxyFactory();
    //客户端需实现Basic接口
    Basic basic = (Basic) factory.create(Basic.class, url);

    System.out.println("Hessian: " + basic.hello());
  }
}

(4) web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
 <web-app>
  <servlet>
   <servlet-name>ducklyl</servlet-name>
   <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
    <init-param>
      <param-name>home-class</param-name>
      <param-value>example.BasicService</param-value>
    </init-param>
    <init-param>
      <param-name>home-api</param-name>
      <param-value>example.Basic</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
 <servlet-name>ducklyl</servlet-name>
    <url-pattern>/ducklyl</url-pattern>
  </servlet-mapping>
</web-app>

 运行客户端程序BasicClient ,如果以下配置没问题,输出结果为:

Hessian: Hello,ducklyl!
posted on 2007-10-21 20:20 王生生 阅读(8213) 评论(4)  编辑  收藏 所属分类: Webservice

评论

# re: Hessian 一个简单二进制协议实现webservice[未登录] 2007-10-22 10:10 Tony
少量数据的时候,Hessian确实不错,但是它不是很稳定,在项目中要小心使用!  回复  更多评论
  

# re: Hessian 一个简单二进制协议实现webservice 2007-10-23 10:56 keith
Hessian在解决简单问题还可以,简单些。但要注意Hessian是无状态的,要小心。另外,对复杂的类支持不好,例如,像这样的对象就比较难传输:

public class A {
private B b;
}  回复  更多评论
  

# re: Hessian 一个简单二进制协议实现webservice 2008-05-07 02:16 幽雪
我按照你上面写的步骤去做了,可是不知道为什么老是报错说:
Exception in thread "main" com.caucho.hessian.client.HessianRuntimeException: java.io.FileNotFoundException: http://localhost:8080/HessionTest/webservice
at com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:182)
at $Proxy0.getCar(Unknown Source)
at org.hessian.study.BasicClient.main(BasicClient.java:19)
麻烦高手帮指点下,到底是怎么回事,万分感谢!  回复  更多评论
  

# re: Hessian 一个简单二进制协议实现webservice 2008-10-09 08:50 lengyubing
可能是你的服务名写错了吧,看看你的http://localhost:8080/HessionTest/webservice 中HessionTest是否的确是你的应用名称
  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问  
 
森露2013新款豹纹打底衫 高领 女 长袖 修身长袖t恤女 加绒加厚冬 2013春秋新款女装 潮修身大码长袖小西装外套女 韩版中长款小西装 忧忧鱼2013秋冬新款直筒裤女显瘦长裤加绒黑色休闲裤修身西裤女裤