Мой вопрос о стороне сервера Omnifaces Push. Итак, я пытаюсь интегрировать Omnifaces Push в проект, но у меня проблема с экземпляром PushContext, когда я пытаюсь отправить сообщения (экземпляр PushContext имеет значение null).
Стек технологий
- Tomcat 9.0.22
- Gradle 3.2.1
- JSF 2.2
- Primefaces 6.2
- Omnifaces 2.7.1
- CDI API 2.0
- сварной сервлет, заштрихованный 3.0.5. Финал
У меня есть контейнер CDI. Я хочу внедрить некоторые экземпляры PushContext (разные push-каналы), но эти экземпляры не вводятся или вводятся неправильно как нулевые. Когда я вызываю метод notificar , pushInicio равен нулю.
@Named
@Startup
public class ControladorMedidas
implements Serializable {
@Inject
@Push(channel = "inicio")
private PushContext pushInicio;
@Inject
@Push(channel = "centro")
private PushContext pushCentro;
...
private void notificar() {
// pushInicio -> null
pushInicio.send("some message");
}
}
Конфигурация
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<resource-env-ref>
<!-- Enable Weld CDI, also needs META-INF/context.xml entry -->
<resource-env-ref-name>BeanManager</resource-env-ref-name>
<resource-env-ref-type>javax.enterprise.inject.spi.BeanManager</resource-env-ref-type>
</resource-env-ref>
<!-- ... -->
<!-- Configuracion PUSH OmniFaces -->
<context-param>
<param-name>org.omnifaces.SOCKET_ENDPOINT_ENABLED</param-name>
<param-value>true</param-value>
</context-param>
<!-- ... -->
</web-app>
beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
bean-discovery-mode="annotated"
>
</beans>
context.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/servicios">
<Resource
name="BeanManager"
auth="Container"
type="javax.enterprise.inject.spi.BeanManager"
factory="org.jboss.weld.resources.ManagerObjectFactory"
/>
</Context>
похоже, что OmniFaces загружается правильно, потому что Tomcat отслеживает эту строку:
07-Jun-2019 12:30:51.823 INFORMACIÓN [RMI TCP Connection(3)-127.0.0.1] org.omnifaces.ApplicationInitializer.logOmniFacesVersion Using OmniFaces version 2.7.1
С другой стороны, Tomcat не выдает никаких ошибок, связанных с Omnifaces.
Заранее спасибо.