Mantis - Hessian
Viewing Issue Advanced Details
3452 minor always 04-20-09 09:04 06-08-09 14:05
ferg  
ferg  
normal  
closed 3.2.1  
fixed  
none    
none 4.0.1  
0003452: Hessian debug with 1.0
(rep by Rick Mann)

My Hessian servlet throws an exception on what I think is a valid
request. This was working against resin 3.1.x, but doesn't work
against 3.2.1. The exception is:

[04-17 23:39:23.230] {http--8080-3} FINER
(com.caucho.server.dispatch.ServletConfigImpl)
Servlet[SatDBHessianServlet] active
[04-17 23:39:23.259] {http--8080-3} FINE
(com.caucho.hessian.server.HessianServlet) call 1.0
[04-17 23:39:23.263] {http--8080-3} FINE
(com.caucho.hessian.server.HessianServlet) method "getMissionList"
[04-17 23:39:23.263] {http--8080-3} FINE
(com.caucho.hessian.server.HessianServlet) "6E53A5FA-F7DB-580A-
AA41-7888A01AB531"
[04-17 23:39:23.266] {http--8080-3} WARNING
(com.caucho.server.webapp.ErrorPageManager)
java.lang.IllegalStateException: 4 is an unknown object type
[04-17 23:39:23.266] {http--8080-3} at
com.caucho.hessian.io.HessianDebugState
$ObjectState.<init>(HessianDebugState.java:1338)



Below are the bytes of my Hessian request. There is no byte with value
"4" anywhere. Any ideas? TIA.

63 c call
    0100

6d m method "getMissionList"
    000e 6765744d697373696f6e4c697374
    
53 S string "6E53A5FA-F7DB-580A-AA41-7888A01AB531"
    0024
36453533413546412d463744422d353830412d414134312d373838384130314142353331
    
53 S string "MissionClock"
    000c 4d697373696f6e436c6f636b

64 d date
    000000e3c7a73400
    
7a z end



Notes
(0004062)
rjenks   
06-08-09 08:47   
I had this same problem. It appears to be a bug when using HessianDebugOutputStream. I was able to work around the issue by turning off logging in HessianProxy.

final Logger hessianLogger = Logger.getLogger(HessianProxy.class.getName());
hessianLogger.setLevel(Level.OFF);

The bug seems to depend on the function parameters being used. It seems to be an issue with characters 0x60-0x6F.
(0004064)
ferg   
06-08-09 14:04   
hessian/39k0
(0004065)
ferg   
06-08-09 14:05   
The specific issue is a Hessian 1.0 vs Hessian 2.0 for the bytecode 'd'. The HessianDebugState wasn't properly reading Hessian 1.0 in that case.