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

댓글 없음:

댓글 쓰기