2012-07-31 78 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> 
相關問題