4

私は Web アプリで Seam 2 (Java EE 6 の調査も開始) を使用しており、数日前に Seam の CDI が Weld を使用した SE アプリケーションで利用できることを知りました。Weld SEのWeld のドキュメント ページによると、セットアップは簡単です。そこで、単一クラスの HelloWeld、weld-se.jar、および log4j jar を使用して Eclipse プロジェクトをセットアップしようとしました。

@Singleton
public class HelloWeld
{
    public void printHello(@Observes ContainerInitialized event, @Parameters List<String> parameters)
    {
        System.out.println("Hello Weld!");
    }
}

新しい Java アプリケーション実行構成を作成org.jboss.weld.environment.se.StartMainし、メイン クラスとして示しました。プロジェクトを実行したとき、HelloWeld がまったく呼び出されていないことは驚くことではありませんでした。私が得たのは、Weld が正しく起動したことを示すいくつかのログ エントリだけでした。

11:54:39,397 INFO  [weld.Version] WELD-000900 1.0.1 (Final)
11:54:39,428 INFO  [weld.Bootstrap] WELD-000101 Transactional services not available. Injection of @Inject UserTransaction not available. Transactional observers will be invoked synchronously.
11:54:39,944 WARN  [model.InterceptionTypeRegistry] Class 'javax.ejb.PostActivate' not found, interception based on it is not enabled
11:54:39,944 WARN  [model.InterceptionTypeRegistry] Class 'javax.ejb.PrePassivate' not found, interception based on it is not enabled

それで、私は何が欠けていますか?

4

1 に答える 1

7

Bean アーカイブにする必要があります。空の META-INF/beans.xml をクラスパスに追加します。

于 2010-08-10T16:02:49.467 に答える