質問

CDI Webアプリケーションのスタートアップイベントとシャットダウンイベントの両方を観察しようとしています。私はそれらのイベントを聴くアプリケーションコープ付きBeanを持っています:

@ApplicationScoped
public class PrettyfacesStartupObserver
{
    private static final Log LOGGER = LogFactory.getLog(PrettyfacesStartupObserver.class);

    public PrettyfacesStartupObserver()
    {
        LOGGER.debug("\n\n\n\n\n\n\n\n\n\nconstructor");
    }

    public void onStartup(@Observes
    AfterBeanDiscovery afterBeanDiscovery
                                             )
    {
        LOGGER.debug("\n\n\n\n\n\n\n\n\n\nafter bean discover");
    }

    public void onStartup(@Observes
    AfterDeploymentValidation afterDeploymentValidation
                                             )
    {
        LOGGER.debug("\n\n\n\n\n\n\n\n\n\n\nafter deployment validation");
    }

    public void onShutdown(@Observes
    BeforeShutdown beforeShutdown
                                                )
    {
        LOGGER.debug("\n\n\n\n\n\n\n\n\n\n\nbefore shutdown:" + beforeShutdown);
    }

ログには何も見えません。

何が足りないの?

役に立ちましたか?

解決

Pete Muirのおかげで、解決策は拡張インターフェイスを実装することでした。私がそれをしたら、特別なファイルを作成することとともに、完全に機能しました。

覚えておくべきことは、コンテナイベントを観察する(または行動する)場合は、特別なイベントであるため、拡張インターフェイスを実装する必要があります。

https://docs.jboss.org/weld/reference/latest/en-us/html/extend.html#d0e4984

ウォルター

他のヒント

Walter Whiteが言及した「特別なファイル」は次のとおりです。

META-INF/services/javax.enterprise.inject.spi.Extension

そのファイルには、拡張機能クラスの完全に資格のある名前が含まれている必要があります。つまり:

org.mydomain.extension.MyExtension
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top