この質問が抽象的すぎないことを願っています。これは、JavaEEアーキテクチャまたはサービスの設計に関するものです。私には2つのビジネスロジックがあります(読みやすくするためにここでは簡略化しています)。
@Stateless
@LocalBean
public class EmailService {
  @EJB
  private SomeBean someBean;
  // ... some other EJBs to acces the DB layer (and using JPA)
  public void sendEmail(String recipient /* some parameters */) {
     // ... some email sending logic here
  }
}
@Stateless
@LocalBean
public class ExecutePaymentService {
  @EJB
  private UserBean userBean;
  // ... some other EJBs to acces the DB layer (and using JPA)
  public void executePayment(int amount, int userId) {
     // ... some payment logic here
     // NEED TO SEND EMAIL HERE
  }
}
私が持っている設計は、JSFマネージドBeanが上記のサービスを呼び出しているというものです。私の問題は、マネージドBeanにいくつかのロジックが含まれていることです。-支払いを
実行します
-支払いが成功した場合はメールを送信します
-他に何もしなかった場合
このロジックをサービスEJBに含めて、マネージドBeanが入力を収集して結果を返すだけになるようにします。
他のオプションは、ExecutePaymentService拡張EmailServiceしてからsendEmailのものを呼び出すことです。これにより、巨大な継承ツリーが任意のサービスから任意のサービスを提供できるようになり、長期的で大きなアプリケーションでの保守が困難になる可能性があります。ほとんどのサービスでは、データベースにアクセスするためにEJBを挿入する必要があるため、使用できません。非EJBサービス...
を許可するためのより良い方法は何でしょうservice to call another serviceか?