2009-08-29 8 views

答えて

5

@Localアノテーションと@Remoteアノテーションの両方にインターフェイスを指定できないため、方法は許可されていません。そして、コードの読書のポイントからは良い考えではありません。

推奨されるソリューションは、このコードは、@以降動作します

public interface SomeComponent { 
    public Something processStuff(); 
} 

@Local 
public interface SomeComponentLocal extends SomeComponent { 
} 

@Remote 
public interface SomeComponentRemote extends SomeComponent { 
} 
+0

アイデアは少ないコードを書くことです。このようにして、私は各Beanに対してもう1つのインターフェースを持っていきます。とにかく男のおかげで。 –

+1

主なアイデアは、保守的で表現力のあるコードを書くことであり、難しいコードではありません。未来の人をもっと幸せにするには、騙さないでください。 –

+0

+1主なアイデアは仕様に違反しないコードを書くことです:-)同じインターフェース上で@Localと@Remoteを使うとコンパイルできますが、正しくデプロイすることはできません。 – ChssPly76

2

あるローカル/リモートの注釈は継承されません@。リモートインタフェース(ローカルインタフェースではなく)を実装している間に、@LocalBeanでBean自体にno-interface-viewを設定することも可能です。

より重要な点は、提供するすべてのメソッドがおそらく使用され、このメソッドを維持する必要があるため、すべてのインターフェイスでこのクラスのユーザーに必要なものだけを提供することです。

問題はあなたがしようとしていることです:両方のインターフェイスは常に同じ方法を提供しますか?または、あるインタフェースが他のインタフェースのサブセットである可能性があります(リモートからローカルに拡張すると、ローカルへのすべての追加がリモートとして提供されるとは限りません)。 @LocalBeanにも同じです - ejb-containerによってアクセスされたばかりで、他のユーザーには考えられないpublicメソッドがありますか?

あなたが行うことができる唯一の悪いことは、意図ではなく怠惰によってインターフェイスを設計することです。また、少ないコードを書くことを除外しません。

関連する問題