Не удается заставить WebSockets работать в Payara 5.1

#jakarta-ee #websocket #cdi #payara

#джакарта-ee #websocket #cdi #payara

Вопрос:

Я пытался создать старое приложение Java 7 EE WebSocket из:https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/HomeWebsocket/WebsocketHome.html работа на сервере Payara 5.184 #badassfish (сборка 89)

Однако не удается создать экземпляр WebSocket (@ServerEndpoint).

 Severe:   Exception in thread "glassfish-web-async-thread-1"  Severe: 
java.lang.NullPointerException  at
org.apache.catalina.connector.InputBuffer$ReadHandlerImpl.processAllDataRead(InputBuffer.java:492) at
org.apache.catalina.connector.InputBuffer$ReadHandlerImpl.access$800(InputBuffer.java:385) at
org.apache.catalina.connector.InputBuffer$ReadHandlerImpl$2.run(InputBuffer.java:475) at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at 
java.lang.Thread.run(Thread.java:748)
  

Включив режим разработки CDI, я вижу:

 WARN:   WELD-001703: Unable to determine the @Intercepted Bean<?> for
[UnbackedAnnotatedField] @Inject @Intercepted private
 org.jboss.weld.probe.InvocationMonitor.interceptedBean WARN:  
PROBE-000020: A problem occured during monitoring of bean instance
construction: null java.lang.RuntimeException: at
com.magicpigeon.websocket.DeviceWebSocketServer.<init>(DeviceWebSocketServer.java:1) at
com.magicpigeon.websocket.DeviceWebSocketServer$Proxy$_$$_WeldSubclass.<init>(Unknown Source) at
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  

DeviceWebSocketServer это мой класс @ServerEndpoint.
Есть ли какая-либо ошибка, связанная с CDI? Чего мне может не хватать?.

Код здесь:https://github.com/DanielMerchan/WebsocketHome если кто-то хочет попробовать. Это работало в прошлом в моих старых Netbeans с Glassfish (не помню версию).

Спасибо.

Комментарии:

1. Я не уверен, что эти два связаны. Первый является NPE. Последние являются предупреждениями от того, что вы называете «режимом разработки CDI», но на самом деле это инструмент для проверки сварных швов . Проблема в том, что Probe не используется по умолчанию и запускается только после запуска в режиме разработки Weld. Следовательно, это не должно вызывать первую ошибку.

2. Спасибо. Как вы упомянули, они не связаны, но я удивлен примером, который отлично работал в более ранних версиях Glassfish и WebLogic, теперь не работает в Payara и TomEE.

Ответ №1:

Это работает, если я сохраняю Java EE 7. Не знаю, что происходит при обновлении до Java EE 8.