1

通常の Java SE 環境で Weld を使用する CDI を使用してアプリケーションを開始するにはどうすればよいですか?この環境は、コマンド ラインから開始するだけで、バックグラウンドで Glassfish や Tomcat を使用していません。Weld 1.x を使用すると、次のようなことができます

public static void main(String[] args) {
   final WeldContainer weld = new Weld().initialize();
   service = weld.instance().select(MyService.class).get();
}

しかし、Weld 2.x には initialize() がありません。

私はこのようなことができます:

@ApplicationScoped
public class Main {
   @Inject
   Foo foo;

   public void main(@Observes ContainerInitialized event) {
       System.out.println("Starting application");
   }
}

これにより Foo が注入されますが、アプリケーション全体を jar にパックして、Weld が実際に実行を開始するのを待つ必要のない他のアプリケーションで使用したいと考えています。したがって、基本的に Weld を適切に初期化する方法が必要です。

4

1 に答える 1

1

Bootstrapping Weld SE は、Weld 1.x と 2.x の間で変更されていません。リファレンス マニュアルを参照してください。

org.jboss.weld.environment.se.Weld新しいクラスではなく、必ずインポートしてorg.jboss.weld.Weldください。

于 2013-12-20T18:50:21.837 に答える