`
fzhq1970
  • 浏览: 1181 次
  • 性别: Icon_minigender_1
  • 来自: zhengzhou
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

使用HESSIAN的困惑

阅读更多
初次使用HESSIAN,采用Spring配置,配置结果成功,但是出现如下问题:对接口中的方法,如果没有参数,调用正常,如果有参数,调用出现一场,提示如下:500: java.io.IOException: Server returned HTTP response code: 500 for URL: http://localhost:8084/pm/service/helloService

无参数方法运行结果:

2008-09-30 19:48:02.437
2008-09-30 19:48:02.437
Tue Sep 30 19:48:02 CST 2008
1234567

代码:
    public static void main(String[] args) throws Exception {
        String url = "http://localhost:8084/pm/service/helloService";
        HessianProxyFactory factory = new HessianProxyFactory();
        IHelloWorld d = (IHelloWorld) factory.create(IHelloWorld.class, url);
        try {
            MessageBean bean = d.getMessageBean();
            System.out.println(bean.getMessage());
            System.out.println(bean.getMessage());
            System.out.println(bean.getTime());
            System.out.println(bean.getCode());
            //MessageBean bean = new MessageBean();
            //bean.setCode(10);
            //bean = d.getMessageBean("hgfgfhfhfhg");
            //System.out.println(bean.getMessage());
            //System.out.println(bean.getMessage());
            //System.out.println(bean.getTime());
            //System.out.println(bean.getCode());            
        } catch (Throwable t) {
            System.out.println(t.getMessage());
        }
    }

public interface IHelloWorld {

    public String getMessage();
    public MessageBean getMessageBean();
    public MessageBean getMessageBean(MessageBean bean);
    public MessageBean getMessageBean(String message);
}

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 * IHelloWorld接口的实现
 */

package com.ccb.ha.remote.study;

import com.ccb.ha.remote.study.beans.MessageBean;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 *
 * @author 应用开发
 */
public class HelloWorld  implements Serializable,IHelloWorld{
    private static final long serialVersionUID = 1L;
    private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
    private static Log log = LogFactory.getLog(HelloWorld.class);
    public String getMessage() {
        if(HelloWorld.log.isDebugEnabled()){
            HelloWorld.log.debug("现在进入服务方法:getMessage");
        }
        return HelloWorld.sdf.format(new Date());
    }

    public MessageBean getMessageBean() {
        MessageBean bean = new MessageBean();
        bean.setCode(1234567);
        bean.setMessage(this.getMessage());        
        return bean;
    }

    public MessageBean getMessageBean(MessageBean bean) {
        if(bean == null){
            return this.getMessageBean();   
        }
        bean.setCode(bean.getCode()*2);
        bean.setMessage("");
        bean.setTime(new Date());
        return bean;
    }

    public MessageBean getMessageBean(String message) {
        MessageBean bean = new MessageBean();
        bean.setCode(1234567);
        bean.setMessage(message);        
        return bean;
    }
}

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 * IHelloWorld接口的实现
 */

package com.ccb.ha.remote.study;

import com.ccb.ha.remote.study.beans.MessageBean;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 *
 * @author 应用开发
 */
public class HelloWorld  implements Serializable,IHelloWorld{
    private static final long serialVersionUID = 1L;
    private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
    private static Log log = LogFactory.getLog(HelloWorld.class);
    public String getMessage() {
        if(HelloWorld.log.isDebugEnabled()){
            HelloWorld.log.debug("现在进入服务方法:getMessage");
        }
        return HelloWorld.sdf.format(new Date());
    }

    public MessageBean getMessageBean() {
        MessageBean bean = new MessageBean();
        bean.setCode(1234567);
        bean.setMessage(this.getMessage());        
        return bean;
    }

    public MessageBean getMessageBean(MessageBean bean) {
        if(bean == null){
            return this.getMessageBean();   
        }
        bean.setCode(bean.getCode()*2);
        bean.setMessage("");
        bean.setTime(new Date());
        return bean;
    }

    public MessageBean getMessageBean(String message) {
        MessageBean bean = new MessageBean();
        bean.setCode(1234567);
        bean.setMessage(message);        
        return bean;
    }
}

分享到:
评论
4 楼 junphine 2008-12-15  
应该是故意这么做的,Hessian既然定位为跨语言的rpc,就要考虑为其他不支持函数重载的语言着想,取其最小集。
其实这个往往可以绕过,如用Map或数组做参数。
3 楼 zhu_chen001 2008-10-02  
对了,3。13之前hessian就是不能重载的,后面的版本可以试试,估计可能也不行的,主要是java获取方法的问题,根据名称获取,只能返回第一个符合的
2 楼 fzhq1970 2008-10-02  
检查清楚了,在接口中不能重载方法,hessian系统只查找第一个方法,其他方法不能使用,不知道为什么?请帮忙
1 楼 largelove 2008-10-01  
非常讨厌hibernate,鸡肋!

相关推荐

    android端使用hessian跟web服务器通讯

    2. 处理结果:服务器执行完方法后,返回的数据会通过Hessian协议反序列化成对象,Android客户端可以直接使用。 五、错误处理与调试 1. 异常处理:在调用远程方法时,可能会出现网络异常或服务器异常,需要捕获并...

    使用hessian进行服务器-客户端通讯

    在这个案例中,提供的"压缩包子文件的文件名称列表"——"hessian使用案例",很可能包含了服务器端和客户端的代码示例。这些示例可能包括了服务器端的服务接口和实现、web.xml配置、客户端的HessianProxyFactory使用...

    Hessian 使用小结

    **独立使用Hessian** 在不依赖任何框架的情况下,使用Hessian的步骤如下: 1. **添加依赖**:首先,客户端和服务端都需要引入Hessian的jar包,以便使用其提供的API和功能。 2. **服务端设置**:在服务端,需要...

    基于matlab使用 hessian 特征值增强 2D3D 图像中的血管脊状结构

    使用上述函数,我们可以对这个数据集进行处理,提取出血管脊状结构,并可视化结果。这在血管疾病诊断、血管网络分析等领域有广泛的应用。 总结来说,这个MATLAB程序包提供了一套完整的工具,用于2D和3D图像的血管...

    dubbo-hessian协议http请求demo(java)

    在IT行业中,分布式服务框架Dubbo是阿里巴巴开源的一款高性能、轻量级的服务治理方案,它使得服务提供者可以在一个系统中发布服务...在实际项目中,可以根据业务需求和安全考虑,灵活调整和优化Hessian协议的使用方式。

    hessian使用小例子

    同时,由于Hessian使用二进制格式,相比于基于文本的协议(如SOAP),它在网络传输上的效率更高。 总的来说,Hessian是一种强大的工具,特别适用于需要快速、低开销的Java远程调用场景。通过这个简单的示例,我们...

    Hessian

    1. **二进制编码**:Hessian使用高效的二进制编码,对数据类型进行压缩,减少了在网络上传输的数据量,从而提高了效率。 2. **简单类型支持**:Hessian支持基本的Java数据类型,如整型、浮点型、字符串、日期等,...

    hessian

    1. **二进制格式**:Hessian使用紧凑的二进制格式,相比基于文本的协议如XML-RPC或SOAP,数据传输量更小,解析速度更快。 2. **动态类型**:Hessian支持动态类型,这意味着服务端和客户端无需预先定义接口或数据结构...

    java 使用hessian进行两台服务器资源之间同步实例

    Java 使用Hessian进行两台服务器资源之间同步是一个常见的分布式服务通信技术应用。Hessian是由Caucho公司开发的一种高效的二进制RPC(远程过程调用)协议,它能够使Java对象像本地方法一样在不同的服务器之间进行...

    使用hessian进行web与android的通讯

    使用hessian进行web与android的通讯,相关jar包都有,导入运行即可。有问题博客留言。http://blog.csdn.net/tan313/article/details/49536891

    hessian案例,hessian案例

    Hessian是一种高效的二进制序列化协议,常用于...通过使用Hessian,开发者可以轻松地构建分布式系统,实现服务之间的便捷调用。案例中的文件提供了不同角度的分析和实践指导,帮助我们更好地理解和应用Hessian技术。

    hessian 使用实例

    在使用Hessian前,需要在项目中引入Hessian的相关依赖。对于Java项目,可以通过Maven或Gradle添加Hessian的jar包。例如,在Maven的pom.xml文件中添加如下依赖: ```xml <groupId>com.caucho</groupId> ...

    使用hessian简单使用【续】- 与spring结合使用

    本篇文章将探讨如何在Spring框架中集成并使用Hessian,以便更好地理解和应用这一技术。 一、Hessian简介 Hessian是由Caucho公司开发的一种基于HTTP的二进制RPC(Remote Procedure Call)协议,它以简洁的二进制格式...

    hessian包及一个简单的使用实例

    1. **二进制序列化**:Hessian使用高效的二进制格式进行序列化和反序列化,与XML或JSON相比,这种格式的数据体积更小,网络传输更快。 2. **类型安全**:Hessian支持各种数据类型,包括基本类型、对象、数组和映射...

    一个简单的Hessian示例

    一个简单的Hessian,简单介绍了Hessian的使用方式,介绍了Hessian和Spring集成的使用方式,以及单独使用Hessian的方式。

    C#中Hessian的使用例子

    本教程将详细介绍C#中Hessian的使用及其相关知识点。 首先,Hessian协议设计的目标是简洁高效,它能将常见的数据类型如字符串、整型、浮点型等转换为二进制格式,从而在网络传输时占用更少的带宽。这种协议特别适合...

    使用hessian进行web与android端的通讯

    本文将深入探讨如何使用Hessian来实现这种通信,以及其背后的原理和技术要点。 首先,我们要理解Hessian的基本概念。Hessian是由Caucho公司开发的一种轻量级、高效的远程过程调用(RPC)协议,它以二进制格式传输...

    hessian学习基础篇——序列化和反序列化

    这对于优化自定义序列化逻辑或者解决Hessian使用中遇到的问题非常有帮助。 总结起来,Hessian是一种高效、轻量级的二进制序列化协议,特别适合于跨语言的网络通信。理解并掌握Hessian的基本概念和使用方法,能够...

    Hessian应用

    2. **生成代理**:在客户端,我们使用Hessian工具生成一个服务代理,这个代理可以像调用本地对象一样调用远程服务。 3. **网络通信**:当调用代理方法时,Hessian会自动将参数序列化,通过HTTP发送到服务端;服务端...

Global site tag (gtag.js) - Google Analytics