`
fancyboy2050
  • 浏览: 240673 次
  • 性别: Icon_minigender_1
  • 来自: 皇城根儿下
社区版块
存档分类
最新评论

hessian http response code:411

阅读更多
记录一个很久以前的遇到的一个关于hessian的问题。

用 Hessian 实现 web service 过程中,需要创建对象时,是使用 HTTP POST 方法来传递数据的。但是在有反向代理 (nginx) 的情况下,会抛出异常 (com.caucho.hessian.client.HessianConnectionException: 411:java.io.IOException: Server returned HTTP response code: 411 for URL:http://xxxx/xxx/xxxService) 。

首先来看下 HTTP 411 错误的解释: Length Required 服务器不能处理请求,除非客户发送一个 Content-Length 头。( HTTP 1.1 新)这是因为 Hessian 与服务端通信默认是采取分块的方式 (chunked encoding) 发送数据,而反向代理要获得 Content-Length 这个头,才能处理请求,但是 Hessian 的请求中并没有加入这个参数。

我们使用的spring+hessian做服务化:
hessian自己的factory生成对象时:
com.caucho.hessian.client.HessianProxyFactory中,默认ChunkedPost为true
    private boolean _isChunkedPost = true;
分块发送方式与服务端交换数据的参数,但是暂时nginx不支持


使用的spring的proxyfactorybean对象有一个setChunkedPost的方法,所以我们可以在配置bean的时候给chunkedPost设置为false,从而透过nginx,实现通信
<bean id="xxx" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
        <property name="serviceUrl" value=""/>
        <property name="serviceInterface" value=""/>
    	<property name="chunkedPost" value="false"/>
    </bean>
分享到:
评论
1 楼 悦悦余音 2016-04-05  
楼主妙笔生花的文章解决了我的问题  

相关推荐

    Hessian 使用小结

    Hessian是一种轻量级的二进制远程过程调用(RPC)协议,它基于HTTP,并且通常通过Servlet来暴露Web服务。Hessian的设计目标是为了提供高效、简单的远程调用方式,使得客户端能够像调用本地方法一样调用远程服务。 *...

    Hessian多个版本打包下载

    这个压缩包包含了Hessian的多个版本,分别是Hessian3.1.6、Hessian3.2.1以及Hessian4.0.7。每个版本都有其特定的功能改进和优化,了解这些版本的区别和适用场景对于开发者来说至关重要。 Hessian3.1.6是Hessian的一...

    java+hessian 远程调用

    Java Hessian远程调用是一种高效的、轻量级的RPC(Remote Procedure Call)解决方案,它允许Java应用程序通过网络进行跨语言的通信。Hessian是BEA Systems开发的一种二进制Web服务协议,它提供了序列化和远程方法...

    hessian-lite-3.2.1-fixed-2.jar

    com.alibaba:hessian-lite:jar:3.2.1-fixed-2 hessian-lite hessian-lite-3.2.1-fixed-2.jar

    hessian服务器和客户端

    Hessian是一种二进制Web服务协议,它提供了一种高效的序列化和远程调用机制,常用于分布式系统中。在本项目中,我们探讨的是基于C#实现的Hessian服务端和客户端,已经在IIS环境下进行了测试并成功通过。 1. **...

    Spring中集成Hessian的问题

    在Spring框架中集成Hessian是为了实现远程方法调用(Remote Method Invocation, RMI),这是一种轻量级的序列化协议,可以高效地传输Java对象。Hessian使得服务提供者和服务消费者之间能够通过网络进行快速的数据...

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

    总结来说,"dubbo-hessian协议http请求demo"这个示例主要展示了如何在Java环境中利用Dubbo的Hessian协议进行服务间的HTTP通信。通过理解Hessian协议的特性,我们可以实现高效、简洁的远程方法调用,提升分布式系统的...

    在 Spring Web Flow 项目中应用 Hessian 服务

    Hessian是Caucho公司开发的一种基于HTTP的二进制协议,它能够将Java对象序列化为二进制流,从而减少网络传输的数据量。相比基于XML的SOAP协议,Hessian具有更快的速度和更小的带宽占用。在分布式环境中,Hessian服务...

    hessian-4.0.33.jar

    Hessian协议基于HTTP协议,但其数据传输采用二进制格式,这使得它在数据传输效率上远超基于文本的XML或JSON协议。Hessian支持多种类型的数据序列化,包括基本类型、对象、数组、日期等,并且能够自动处理Java和.NET...

    hessian案例,hessian案例

    Hessian是一种高效的二进制序列化协议,常用于实现轻量级的远程过程调用(RPC)。这个案例涉及到了Hessian在Java和Python之间的跨语言通信。以下是对Hessian技术及其应用的详细解释: 1. **Hessian简介**:Hessian...

    hessian-3.0.20-src.jar

    hessian是一个轻量级的Java Remoting方案

    Hessian协议的C#源代码

    Hessian协议是http://caucho.com/公司开发的一种实用的web服务技术,它采用二进制数据,传输效率比较高,简单易用,是C#.NET/IIS环境快速开发web服务应用的一种解决方案。本资源中包含Hessian协议的C#版源代码,由于...

    hession例子,源码,最新的jar包,还有web例子与spring结合的例子

    Hessian是一种轻量级的RPC(远程过程调用)协议,它基于HTTP并采用二进制编码,旨在提高网络服务之间的通信效率。Hessian由Caucho Technology开发,主要用于Java和.NET平台,但也有其他语言的实现。在这个压缩包中,...

    Hessian(binary-RPC)相关Jar包资源.zip

    2. **Hessian Service**:服务端需要实现Hessian服务,通常会将业务逻辑封装在接口中,然后通过HessianServlet暴露这些接口,使得客户端可以通过HTTP请求访问。 3. **Hessian Serializer**:负责对象的序列化和反...

    hessian简单实例

    Hessian是一种二进制协议,它允许Java和.NET应用程序之间进行高效的远程方法调用(RMI)。这个协议基于HTTP,可以用于跨语言、跨平台的服务交互。Hessian提供了序列化和反序列化的机制,使得对象可以被编码为字节流...

    hessianServer

    创建Hessian服务端时,需要将服务绑定到一个特定的URL,这样客户端才能通过HTTP请求找到并调用这些服务。这通常通过HessianServlet实现,将服务注册到Servlet容器(如Tomcat)中,配置在web.xml文件里。 4. **服务...

    hessian

    Hessian是一种二进制Web服务协议,由Caucho Technology公司开发,主要用于提供轻量级、高效的远程方法调用(Remote Method Invocation, RMI)机制。它结合了HTTP协议的可扩展性和Java序列化机制的易用性,使得在...

    Hessian的Spring配置

    在Spring框架中,Hessian是一种轻量级的远程方法调用(RPC)协议,它能够实现Java对象到字节流的序列化,从而使得服务端的对象可以在客户端直接调用,仿佛对象就在本地一样。Hessian提供了高效的二进制RPC协议,使得...

    Hessian

    **Hessian:一种二进制Web服务协议** Hessian是一种高效的二进制RPC(远程过程调用)协议,常用于Web服务。它是由Caucho Technology开发的,目的是为了提高XML-based的Web服务如SOAP的性能。Hessian通过使用二进制...

    srpingMVC+hessian4整合jar包,工程里拷出来的,绝对可用

    Spring MVC 和 Hessian 整合是企业级应用中常见的技术组合,主要用于构建分布式服务。Spring MVC 是一个基于模型-视图-控制器(MVC)设计模式的轻量级 web 框架,而 Hessian 是一种高效的远程方法调用(RPC)协议,...

Global site tag (gtag.js) - Google Analytics