UI 티어 (WAR 모듈 포함)와 비즈니스 티어 (contains)의 두 가지 EAR로 배포되는 Java 웹 응용 프로그램이 있습니다. EJB 모듈). 두 계층은 WebSphere Application Server 7에 배치됩니다. 계층은 EJB 3.0 비 상태 세션 Bean을 통해 연결됩니다. 콩은 JNDI를 통해 조회됩니다.EJB 원격 메소드의 직렬화 UID가 일치하지 않습니다. - EJB tilstate & DBTimestamp
우리는 영속성을 위해 Hibernate를 사용하고 DB2 데이터베이스를 사용한다. 원격 EJB 호출이 리턴되면
다음 오류가 클라이언트 측에서 발생 개체에 java.util.Date
필드 java.util.Date
연장 java.sql.Timestamp
을 연장 com.ibm.db2.jcc.DBTimestamp
필드로 하이버 네이트로부터 반환되는
java.rmi.MarshalException: CORBA MARSHAL 0x4942f896 No; nested exception is:
org.omg.CORBA.MARSHAL: Unable to read value from underlying bridge : Mismatched serialization UIDs : Source (RepId RMI:java.util.Date:AC117E28FE36587A:686A81014B597419) = 686A81014B597419 whereas Target (RepId RMI:com.ibm.db2.jcc.DBTimestamp:AA774DBE96ECCE99:7AFCE1FB570D419C) = 7AFCE1FB570D419C vmcid: IBM minor code: 896 completed: No
. java.util.Date
의 서브 클래스이며, 직렬화 가능하기 때문에 이것을 처리하면 안됩니까?
JVM 버전 또는 DBTimestamp
클래스 버전이 웹 계층과 비즈니스 계층 WAS 서버간에 서로 다른 것으로 보이는 경험이있는 사람과 이야기를 나누었습니다. 두 서버의 JVM, WAS 및 JAR 버전이 동일합니다.
또한 두 계층이 동일한 서버에 배치 된 로컬 WAS 7 서버가 있습니다. EJB는 여전히 localhost에 대한 JNDI 호출을 통해 원격으로 해결됩니다. 응용 프로그램이 내 로컬 서버에서 제대로 작동합니다. 내가 알고있는 유일한 차이점은 WAS의 다른 마이크로 버전뿐만 아니라 두 계층을 동일한 서버에 배치하는 것입니다.
문제점의 근원은 무엇입니까? 웹 계층에서 DBTimestamp
클래스를 찾을 수 없습니까, 아니면 클래스 버전이 다른가요? 아니면 다형성과 관련된 문제입니까, 아니면 완전히 다른 것입니까?
답변 외에도, 디버깅을 시도 할 때 어떤 조언을 주시면 감사하겠습니다. 아이디어가 없습니다.