Мы начинаем новый проект, основанный на EJB 3.0. У меня есть" пружинный "фон (и мне он нравится), поэтому для меня слабая связь и тестируемость - это big должен иметь . Этот пост не должен быть о «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 со всем, что является апатридом сессионный компонент и все последствия (например, объединение в пул, обработка ресурсов и т. д.)
использовать сеансные компоненты без сохранения состояния в качестве «бизнес-компонентов» (точек входа), а оттуда
а) пружинные проводные зависимости (через интеграцию «jboss snowdrop»)
б) Проводные зависимости CDI (через WELD для ejb 3.0 и jboss eap 5.1)
Мне не нужно знать, как я могу использовать bean-компоненты в модульном тесте. ответ, который мне нужен, - это лучший подход для подключения всех зависимостей внутри работающего сервера приложений (пружина против guice против CDI против EJB). мне нужно знать только график от внешнего EJB («точки входа в бизнес») вниз. поэтому все, что находится снаружи (сервлеты, интерфейс и т. д.), является не областью этого вопроса :)
пожалуйста, предположите, что EJB 3.0 и jboss eap 5.1 установлены для проекта :)
с нетерпением жду вашего ответы и, надеюсь, некоторые знания, основанные на проекте.