2016-07-07 3 views
1

今日、私はEJBでいくつかの実験を行いました。変更されたインタフェースでEJBを呼び出す

のJavaEE 6

のWebsphereの8.0.xの

Iは、いくつかのリモート・メソッドを定義するインターフェイスを有する:

interface Calculator{ 
    int add(int x, int y); 
    int mul(itn x, int y); 
} 

このインターフェイスは、EJBによって実現されます。

さらに私は別のアプリケーション(耳)からCalculator-EJB を呼び出す別のEJBを持っています。だから合計私は 2つの耳のファイルを展開し、すべて正常に動作します。

私はCalcメソッドのインターフェイスを変更しましたが、mulメソッドを削除しました。 しかし、実装するEJBクラスでは、mulメソッドがまだ実装されています。 @overrideアノテーションを削除しました。 変更されたインターフェイスを実装しているEJBで耳を再配置しました。

私の驚いたことに、他の耳のアプリケーションは、まだ mulメソッドを呼び出すことができます。

これはEJB標準の一部ですか?

その後、Calculatorインターフェイスの名前をCalculator2 に変更し、この新しいインターフェイスを実装するEJBを再デプロイしました。

旧式のCalculator インターフェイスしか持たない他のearアプリケーションは、新しくCalculator2インターフェイスを実装した新しく実装されたEJBのメソッド を依然として呼び出すことができます。

同じ質問:これはEJB標準の一部ですか?

答えて

1

これは、EJB3.1仕様の「インタフェースビューなし」にする必要があります。

EJBに公開されているすべてのメソッドには、インタフェースなしでアクセスできます。 しかし、インターフェイスと並行してNoInterfaceViewを持つことができるかどうかは分かりません。仕様に合致していない可能性があります。

+0

trueの場合、インターフェイスなしのビューのように動作しますが、クライアントは別のappliaction/earにあり、注入のために(古い)インターフェイスを使用します。それが奇妙な作品 – coder

関連する問題