Мы начинаем новый проект на основе EJB 3.0. У меня есть «весенний» фон (и мне это нравится), поэтому для меня слабая связь и тестируемость - это большая необходимость . Этот пост не должен быть о "ejb vs. spring". Было бы идеально, если у вас уже есть реальный опыт работы с проектами.
Вот пример кода для демонстрации проблемы:
клиент -> ejb -> сотрудник 1 -> сотрудник .. -> сотрудник n
<!-- language: java -->
@Stateless
public class SampleService {
// or @Inject via CDI
// or @Autowired via Spring
@EJB // or just use a stateless session bean via EJB 3.0
private Bank bank;
// same for this component
@EJB
private Calculator calc;
// both collaborators must be settable from outside, to make everything testable (and mockable)
/**
* sample "business service" called from client
*/
public void debit(BigDecimal amount){
calc.calculate(amount.subtract(new BigDecimal(100)));
bank.debit(amount);
}
}
// or via @Component (Spring), or CDI?
@Stateless // or Stateless Session bean with optional @Service/@Singleton annotation?
public class Calculator {
public void calculate(BigDecimal subtract) {
// calculate stuff....
}
}
// or via @Component (Spring), or CDI?
@Stateless // or Stateless Session bean with optional @Service/@Singleton annotation?
public class Bank {
public void debit(BigDecimal amount) {
// ...
}
}
Я хочу знать, как лучше всего внедрить внедрение зависимостей для всех соавторов и их соавторов в ejb 3.0? соавторами в этом смысле могут быть очень и очень маленькие выделенные классы.
мы уже обсудили следующие варианты и, как всегда, пока не имеем правильного заключения:)
использовать стандарт ejb только для всего, что является сессионным компонентом без сохранения состояния, и для всех последствий (таких как пул, обработка ресурсов и т. Д.)
использовать сессионные компоненты без сохранения состояния в качестве «бизнес-компонентов» (точек входа) и с этого момента
a) пружинные зависимости (через интеграцию jboss snowdrop)
b) Проводные зависимости CDI (через WELD для ejb 3.0 и jboss eap 5.1)
Мне не нужно знать, как я могу использовать бины в модульном тесте. Ответ, который я получаю, заключается в том, каков наилучший подход для объединения всех зависимостей внутри работающего сервера приложений (пружина против хитрости, CDI и EJB). мне нужно знать только график от внешнего EJB («точки входа в бизнес») вниз. так что все, что находится снаружи (сервлеты, интерфейс и т. д.) - это , а не . Объем этого вопроса
пожалуйста, предположим, что EJB 3.0 и jboss eap 5.1 установлены для проекта:)
с нетерпением жду ваших ответов и, надеюсь, некоторые знания проекта.