Мне нужна помощь для сотрудничества между @EJB и @ CDI
Привет всем,
Я хотел бы иметь следующий сценарий: 1) В моем приложении создается уведомление (вбаза данных) 2) После этого push-уведомление должно быть отправлено конкретному клиенту 3) В клиенте он обновит конкретную @form со своей страницы ...
Вот мой код:
@Stateless
public class NotificationCreationSendServiceBean implements NotificationCreationSendService {
@Inject
private BeanManager beanManager;
public void createNotification {
// createNotificationInDatabase();
.....
PushEvent event = new PushEvent("Test");
beanManager.fireEvent(event);
}
}
Мой компонент JSF:
import static org.omnifaces.util.Messages.addGlobalError;
import static org.omnifaces.util.Messages.addGlobalInfo;
@Named
@ViewScoped
public class NotificationSocket implements Serializable {
@Inject
private LoginBean loginBean;
@Inject
@Push(channel = "notificationChannel")
private PushContext push;
/**
* Push Notification
*
* @param recipientUser
*/
public void pushUser(@Observes PushEvent event) {
Set<Future<Void>> sent = push.send(event.getMessage(), loginBean.getCurrentEmployee().getId());
if (sent.isEmpty()) {
addGlobalError("This user does not exist!");
} else {
addGlobalInfo("Sent to {0} sockets", sent.size());
}
}
}
Здесь страница JSF:
<o:socket channel="notificationChannel"
user="#{loginBean.currentEmployee.id}" scope="view">
<f:ajax event="someEvent" listener="#{bean.pushed}" render=":notificationLink" />
</o:socket>
Мой вопрос сейчас: как мой контейнер @EJB, распознаваемый с помощью Socket, является правильным? Где я могу определить название канала в @EJB?
Кто-нибудь может мне помочь, пожалуйста.