この質問が抽象的すぎないことを願っています。これは、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
か?