2012-07-19 4 views
5

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 클래스를 찾을 수 없습니까, 아니면 클래스 버전이 다른가요? 아니면 다형성과 관련된 문제입니까, 아니면 완전히 다른 것입니까?

답변 외에도, 디버깅을 시도 할 때 어떤 조언을 주시면 감사하겠습니다. 아이디어가 없습니다.

답변

2

웹 티어 EAR에 관련 DB2 드라이버 JAR을 패키징하여 문제를 '해결'했습니다.

따라서 문제의 원인은 웹 계층의 클래스 경로에서 클래스를 사용할 수 없기 때문입니다. 환경 설정을 조사해야 사용할 수있는 이유를 파악할 수 있지만 최소한 문제는 분명합니다.

관련 문제