我希望这个问题不要太抽象。这是关于 Java EE 架构或服务设计的。我有两个业务逻辑(为了便于阅读在此进行了简化):
@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 服务....
什么是允许 a 的更好方法service to call another service
?