Mantis - Resin
Viewing Issue Advanced Details
1458 minor always 11-15-06 07:27 05-01-07 15:55
ferg  
ferg  
normal  
closed  
fixed  
none    
none 3.1.2  
0001458: hessian/spring compatibility
(rep by Alon Salant)

[16:58:33.913] Caused by: org.springframework.web.util.NestedServletException: Hessian skeleton invocation failed; nested exception is com.caucho.hessian.io.HessianProtocolException: expected hessian method ('m') at code=99 ch=c
  at org.springframework.remoting.caucho.HessianServiceExporter.handleRequest(HessianServiceExporter.java:95)
  at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
  at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:723)
  at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:663)
  at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:394)
  at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:358)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:154)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:92)
  at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:106)
  at net.sf.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:292)
  at net.sf.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:84)
  at net.sf.acegisecurity.intercept.web.SecurityEnforcementFilter.doFilter(SecurityEnforcementFilter.java:182)
  ... 15 more
 Caused by: com.caucho.hessian.io.HessianProtocolException: expected hessian method ('m') at code=99 ch=c
  at com.caucho.hessian.io.HessianInput.error(HessianInput.java:1642)
  at com.caucho.hessian.io.HessianInput.readMethod(HessianInput.java:204)
  at com.caucho.hessian.server.HessianSkeleton.invoke(HessianSkeleton.java:124)
  at com.caucho.hessian.server.HessianSkeleton.invoke(HessianSkeleton.java:103)
  at org.springframework.remoting.caucho.HessianServiceExporter.handleRequest(HessianServiceExporter.java:91)
  ... 26 more

Notes
(0001718)
dcheck   
01-16-07 09:31   
This same problem breaks RIFE compatibility in the 3.0.20 release. 3.0.19 works fine.

The stacktrace is slightly different:

     [java] Caused by: com.caucho.hessian.io.HessianProtocolException: expected hessian method ('m') at code=99 ch=c
     [java] at com.caucho.hessian.io.HessianInput.error(HessianInput.java:1642)
     [java] at com.caucho.hessian.io.HessianInput.readMethod(HessianInput.java:204)
     [java] at com.caucho.hessian.server.HessianSkeleton.invoke(HessianSkeleton.java:112)
     [java] at com.uwyn.rife.engine.elements.WebservicesHessian.processElement(WebservicesHessian.java:83)
     [java] ... 21 more
(0001719)
dcheck   
01-16-07 10:02   
Running against the Hessian jar created by the 3.1 distribution produces the same error, but with a slightly different stack trace:

     [java] Caused by: com.caucho.hessian.io.HessianProtocolException: expected hessian method ('m') at code=99 ch=c
     [java] at com.caucho.hessian.io.HessianInput.error(HessianInput.java:1647)
     [java] at com.caucho.hessian.io.HessianInput.readMethod(HessianInput.java:209)
     [java] at com.caucho.hessian.server.HessianSkeleton.invoke(HessianSkeleton.java:103)
     [java] at com.uwyn.rife.engine.elements.WebservicesHessian.processElement(WebservicesHessian.java:83)
     [java] ... 21 more
(0001986)
ferg   
05-01-07 15:55   
hessian/3550.

Made changes for backwards compatibility. The HessianSkeleton.invoke is now expected to be called after the 'c' x02 x00 is read so the parent caller can choose between Hessian2 and Hessian1. The fix allows the old-style invoke callers to still work.