2

わかりませんが、@Inject オブジェクトは ManagedService 内の Weld で初期化されていません。私の例は次のようになります。

@ManagedService(path = "/chat") public class EntryPointWS {
  private final Logger logger = LoggerFactory.getLogger(EntryPointWS.class);
  @Inject private ServiceFactory factory;
}

同じプロジェクトまたはコード、通常のサーブレットを使用して Weld にアクセスすると、オブジェクトが初期化されます。また、Tomcat 8で実行していますが、サーブレットインジェクションでも問題なく動作します。また、ServiceFactory には @ApplicationScoped というアノテーションが付けられています。

明確にするために、さらにいくつかのポイントを追加すると、

  • org.atmosphere.cdi.CDIObjectFactory (cdi pom から) は、
  • @Inject は AtmosphereInterceptorServices でも​​機能しません。
4

1 に答える 1

0

CDI拡張機能を有効にしましたか: https://github.com/Atmosphere/atmosphere/wiki/Configuring-Atmosphere 's-Classes-Creation-and-Injection

-- ジャンフランソワ

于 2015-05-14T12:17:39.933 に答える