CDTのインジェクションの使用がundertowを使用してWebSocketで機能しない理由を理解できません。Undertow Websocket Bean Injection CDI Issue
以下は、単純なwebsocketエンドポイントのコードです。
@ServerEndpoint("/")
public class TestWebSocketEndpoint {
@Inject
private RetrieveAccessor retrieveAccessor;
private final Logger logger = Logger.getLogger(this.getClass().getName());
@OnOpen
public void onConnectionOpen(Session session) {
logger.info("Connection opened ... " + session.getId());
}
@OnMessage
public String onMessage(String message) {
if (!message.isEmpty()) {
return message;
}
System.out.println("RETRIEVE BEAN -> " + retrieveAccessor);
if (retrieveAccessor != null) {
return "BEAN NOT NULL";
}
return ":(";
}
@OnClose
public void onConnectionClose(Session session) {
logger.info("Connection close .... " + session.getId());
}
}
もちろん、注入されたプロパティはnullです。このデプロイと後述のステートレスBeanの注入には、もちろん、残りの部分を使用しても問題はありません。この問題を回避する方法はありますか?私が必要とするプロパティーをBeanであれば、どうやったら問題になるのでしょうか?それは間違いなく機能するからです。
RetrieveAccessor retrieveAccessor =新しい.... {コード}
あなたの質問の最後の部分は混乱しています。 'RetrieveAccessor'をインスタンス化していますか?また、あなたはweldサーブレットを使っていますか?ワイルドフライ? –
私はちょうどundertowを使用しています。私の質問の最後の部分は、Beanオブジェクトの通常のクラス初期化が機能していることを説明しています。 – thekevshow