검색

레이블이 Hessian인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Hessian인 게시물을 표시합니다. 모든 게시물 표시

2018년 2월 27일

BigDecimal value is always zero when transfered with Spring remoting via Hessian

서버간의 리모트 통신을 caucho hessian 을 사용하여 spring 에서 사용할 때 숫자 값이 정상적으로 전달되지 않고 0 으로 전송되는 현상이 발생하는 오류가 있는데 이는 다음과 같은 방법으로 BigDecimal  객체에 대한 Serializer/Deserializer 을 명시적으로 지정하는 방법으로 쉽게 해결이 가능하다.

참고로 이전 버전을 사용할 때는 방생하지 않는 문제였으며,  springframework 4.x부터는 hessian 4.x버전을 요구하여 버전업을 한 이후에 발생된 이슈임.

환경 

  • Java 1.8.0_45
  • Tomcat 8.0
  • 전자정부 프레임워크 3.6.0 ( springframework 4.1.2 )
  • Hessian 4.0.51 

참고 자료 

솔루션

META-INF/hessian/ 위치에 
deserializers , serializers 파일을 추가한다. 각 파일에 아래의 내용을 추가한다.


deserializers

java.math.BigDecimal=com.caucho.hessian.io.BigDecimalDeserializer

serializers

java.math.BigDecimal=com.caucho.hessian.io.StringValueSerializer