2009-12-02 4 views
0

EJB2.0 무 상태 세션 빈으로 배포 된 서버에서 하나의 서비스를 실행하려고하면 다음 예외가 발생합니다.오류 정렬 마샬링;

Error executing services::error marshalling return; nested exception is: 
java.io.NotSerializableException: xxx.xxx.xxx.PmsService 

여기 xxx.xxx.xxx.PmsService 이미이 해결 점점 나를 도와주세요 수 java.io.Serializable 인터페이스

을 구현하고 내 클래스입니다.

MUR

답변

2

기회는 PmsService에 (비 transient) 필드 중 하나가 직렬화 그 자체 구현 않습니다이다.

연속성은 재귀 속성입니다. 모든 필드가 직렬화 될 수없는 한, 클래스는 직렬화 될 수 없습니다. 필드에 직렬화 할 수없는 클래스가 있는지 확인하고 해당 클래스를 직렬화 가능 (자체 클래스 인 경우)하거나 직렬화 가능 대체 메서드로 전환하거나 필드를 일시적으로 선언하십시오 (이 아닌 경우에만 후자의 경우 수행) 부분 객체의 상태, 예를 들어 작업이 현재 실행중인 스레드).

+0

안녕하세요, 빠른 답장을 보내 주셔서 감사합니다.하지만 한 가지를 잊어 버렸습니다. 일반적인 콘솔 배포에서 잘 돌아가고 있지만 오픈 디렉토리 배포를 시도하고 있습니다. 즉, 열린 폴더 구조로 모든 jars/wars/lib를 넣으려고합니다. 나는 예외를 얻고있다. .. – mur

0

서비스 필드 중 하나가 참조 된 라이브러리 JAR 중 하나에서 선언 된 유형이 될 수 있습니까?

개방형 디렉토리 배치를 사용하는 경우 클래스 경로에 문제점이있을 수 있습니다. EAR 또는 JAR을 통한 배포는 클래스 경로 검색 순서가 항상 EAR 또는 JAR 내에서 시작된다는 점에서 미리 결정된다는 점에서 큰 이점이 있습니다. 이렇게하면 참조 된 JAR의 특정 버전이 항상 먼저 발견됩니다.

이제 "공개 배포"를 사용하면 라이브러리 JAR 중 하나가 응용 프로그램 서버가 사용하는 버전과 충돌 할 수 있으며 (A) 먼저 발견 된 것이고 (B)는 직렬화 할 수없는 것일 수 있습니다.