Tomcat インスタンスを再起動した後、サーブレット コンテキストのすべてのプロパティが失われていますが、すべてのアクティブなセッションは、そのプロパティが生きていてキックしている状態のままです。コンテナの再起動後もサーブレット コンテキスト プロパティを存続させるための最良の (そして最も Grails に似た) 方法は何ですか?
3 に答える
ええ、サーブレットコンテキストプロパティをシリアル化するのは良い考えではありません。
サーブレットコンテキストのシリアル化可能な属性の永続性は、これについて正確に説明しています...
Webアプリケーションに属性を永続化する機会を与えずに、サーブレットコンテナが突然終了する可能性はゼロではありません。
サーブレットコンテキストに含まれるプロパティは、コンテナの再起動時に保証されないため、Webアプリケーションとは完全に別個に扱う必要があります(アプリケーションのプロパティは、適切と思われる場合は永続化できます)。
ServletContext は永続的ではなく、配布できません。Serializable は実装していません。
http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html
サーブレット仕様の第 4 章は ServletContext を扱っており、そこに設定されたプロパティが永続化されるという期待について説明しています。通常、これにはある種のデータベースが使用されます。
私の知る限り、それを行う本当のGrailsの方法はありません。標準サーブレット API に従って、 を実装し、ServletContextListener
web.xml に直接、またはwebxml プラグインを介して登録します。
実装は、ServletContextListener
通常の Java デシリアライゼーション/シリアライゼーションを使用することになっています。