MBeanサービスの重要な機能のひとつは、MBean間の依存関係を指定して、他のサービスが正しく起動されている場合にのみ、あるサービスを起動するようにできることです。@Depends
アノテーションで、依存しているMBeanを指定します。
@Service (objectName="trail:service=investmentAdvisor")
@Depends ("trail:service=calculator")
public class InvestmentAdvisorMBean implements InvestmentAdvisor {
// ... ...
}
あるいは、MBeanが依存するMBeanの一覧を指定することもできます。
@Service (objectName="trail:service=investmentAdvisor")
@Depends ({"trail:service=calculator",
"trail:service=riskAnalysis"})
public class InvestmentAdvisorMBean implements InvestmentAdvisor {
// ... ...
}
MBeanが持つ属性が別のMBeanの場合、その属性のセッターメソッドに@Depends
アノテーションを使用することで、コンテナは自動的に依存するMBeanオブジェクトに依存性を注入します(セッターの依存性注入)。下の例では、trail:service=calculator
のMBeanが起動されると、コンテナは適切な引数でsetCalculator()
メソッドを呼びます。InvestmentAdvisor
のMBeanのCalculator
属性は、明示的なルックアップを行わなくても自動的に正しい値が設定されます。
@Service (objectName="trail:service=investmentAdvisor")
public class InvestmentAdvisorMBean implements InvestmentAdvisor {
@Depends ("trail:service=calculator")
public void setCalculator (Calculator calculator) {
this.calculator = calculator;
}
// ... ...
}