У меня есть новая функция, которая заставляет меня передавать некоторую новую структуру данных в мои EJB.EJB - Передача контекстных данных от JSF к EJB
Это контекст сеанса пользователя, который содержит некоторую информацию о текущем пользователе.
Как передать эти данные в EJB без рефакторинга подписи и вызовов метода?
Использовать ThreadLocal? Но если это не на одном JVM?
Ниже приведен код внизу. У вас есть подсказка ко мне?
/** created at login time, when user put it's credential */
public class UserSessionContext {
private User current;
private Company company;
// getters e setters
}
/** web page controller */
@ManagedBean // at web tier
public class ListCustomersController {
@EJB
CustomersRepository customers; // some remote interface
// getters/setters
private List<Filters> filters; // from the UI
/** used in a datatable component */
public List<Customer> getAll(){
return customers.getAllWith(filters); // I have no UserSessionContext parameter
}
}
/** used by web controller */
@Stateless
public CustomersEJB implements CustomersRepository {
@Inject
UserSessionContext currentContext; // injected before call this object
public List<Customer> getAllWith(List<Filter> filters){
TypeQuery<Customer> customersQuery = ... //
customersQuery.setParameter("company",currentContext.getCompany());
return customersQuery.getResultList();
}
}