2

私は Entity リモート サービスの実装に取り​​組んできました。EntityServiceImpl で 1 つのカスタム サービス メソッドを作成しました。InstitutionServiceUtil を通じてサービスを提供するカスタム サービス メソッドを作成しました。ポートレットをデプロイした後、ブラウザ ウィンドウからサービス メソッドにリクエストを送信すると、例外が発生します。

exception":"java.lang.ClassCastException: com.institutions.model.impl.InstitutionImpl 
           cannot be cast to com.institutions.model.Institution

注: サーバーの再起動後にリクエストを送信すると、上記の例外は発生しませんでした。

上記の例外を解決するにはどうすればよいですか?

4

2 に答える 2

4

インターフェイスをInstitutionImpl実装していると思いますInstitution。その場合、例外の根本的な原因はクラスローディングです。クラスローダ A はロードされましたInstitutionInstitutionImpl、別のクラスローダからロードされました。Java の 2 つのクラスは、完全修飾名とクラスローダーが同じ場合にのみ同等です。

クラスローディングがどのように機能するかを説明するには、liferay について十分に知りません。しかし、問題を解決するにはInstitution、実装をロードしようとしたときに (おそらく以前のデプロイ試行から) インターフェースが既に存在する可能性があるかどうかを確認する必要があります。

于 2014-12-04T08:29:03.893 に答える