0

どういうわけか、リモートリモート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)

重複したjarであるかどうかを確認しましたが、そうではありません。誰かがこの問題を解決するためのアイデアを持っていますか?

前もって感謝します

4

1 に答える 1

0

解決しました!

この問題は、JBossの統合クラスローダーが原因で発生します。jboss-app.xmlでカスタムローダーを作成する際の問題を解決しました。

<loader-repository> com.cardcheck loader = cardCheck heard </ loader-repository>
于 2012-08-01T20:52:59.170 に答える