これはベストプラクティスか避けるべきかについてもっと興味があります。 2つのEJBSがあり、それぞれが異なる種類のオブジェクト、ウィジェット、およびfooで動作するとします。ウィジェットを管理するEJBは、何らかの処理を行うために一連のコレクションを取得する必要があります。この機能は、FooManager Beanですでに作成されています。EJBが別のEJBメソッドを呼び出す
WidgetManagerのメソッドが作成されているのに対し、FooManagerメソッドはすでに作成されています。
ここに私が意味するものの例があります。これは簡単な例です。
@Stateless
public class FooManager implements FooManagerLocal, FooManagerRemote
{
public List<Foo> getAllFoosForAWidget(widgetId)
{
//runs queries and builds foo list
}
public Boolean isWidgetCloseable(widgetId)
{
//a widget is closeable if all foos for that widget are set to "done"
List<Foo> foos = getallFoosForAWidget(widgetId);
boolean isCloseable = false;
//process foos and update isCloseable respectively
return new Boolean(boolean);
}
}
@Stateless
public class WidgetManager implements WidgetManagerLocal, WidgetManagerRemote
{
public void closeWidgetIfFoosAreDone(widgetId) //needs to do stuff with foos
{
//generate the widget based on widgetId
Widget widget = find(Widget.class, widgetId)
//is this appropriate?
//beans are gathered through our own beanclient
FooManager fooManager = BeanClient.getBean(FooManager.class);
if(fooManager.isWidgetCloseable(widgetId)
{
widget.setStatus(Close);
save(widget); //save widget back to database
}
}
}
私の質問は、WidgetManager BeanがFooManager Beanの既に作成されたメソッドを呼び出すべきかどうかです。クライアントは、どのウィジェットが閉じられているかを確認し、そのIDのリストをWidgetManagerに送信する必要がありますか?
私は後者の状況に傾いているので、EJBはそれぞれのメソッドを呼び出すことを心配する必要はありません。クライアントはそれらを利用することができ、idsのリストを送信するだけでよい。
正直に記述が完全かつ抽象のようなものではありません。 –
私は同意します。どこかに行くように始まり、それから始まりません。 – b3bop