2012-07-31 2 views
0

어떻게 든 원격 원격 EJB3 호출을 시도하면 ClassCastException이 발생합니다.EJB3 원격 호출이 ClassCastException을 던졌습니다

public interface CardManager extends Manager { 
    public CardCheckResponse check(CardCheckRequest request); 
} 


@Remote 
public interface RMICardManagerRemote extends CardManager { 
    static String CARD_CHECK_RMI_REMOTE_JNDI = "CardCheckRMI/remote"; 
} 


@Stateless 
@RemoteBinding(jndiBinding = RMICardManagerRemote.CARD_CHECK_RMI_REMOTE_JNDI) 
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) 
public class RealRMICardManager implements RMICardManagerRemote { 
    private CardManager cardManager = injector.getInstance(CardManager.class); 

    @Override 
    public CardCheckResponse check(CardCheckRequest request) { 
    return cardManager.check(request); 
    } 

} 

클라이언트 :

InitialContext remoteContext = new InitialContext(PropertiesUtil.getCardCheckProp()); 
RMICardManagerRemote rmiCardManagerRemote = (RMICardManagerRemote) remoteContext.lookup(RMICardManagerRemote.CARD_CHECK_RMI_REMOTE_JNDI); 

//throws ClassCastException 
CardCheckResponse cardCheckResponse = rmiCardManagerRemote.check(cardCheckRequest); 

스택 트레이스 : 그것은 중복 항아리가 있다면

java.lang.ClassCastException: com.cardcheck.dto.CardCheckResponse cannot be cast to com.cardcheck.dto.CardCheckResponse 
    at $Proxy307.check(Unknown Source) 
    at com.xxx.cardCheck(RechargeAdapter.java:267) 

내가 확인했습니다, B 서버는

ut는 사실이 아닙니다. 누구든지이 문제를 해결할 생각이 있습니까?

미리 감사드립니다.

답변

0

해결되었습니다!

이 문제는 JBoss의 통합 클래스 로더가 원인입니다. jboss-app.xml에서 사용자 정의 로더를 작성하는 중 문제점을 해결했습니다.

<loader-repository> com.cardcheck loader = cardCheck heard </ loader-repository> 
관련 문제