2

undertow を使用して、インジェクションの CDI 使用が websocket で機能しない理由がわかりません。

以下は、単純な 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 = new.... {コード}

4

2 に答える 2