2016-03-30 10 views
1

9.0.1で実行されているxpageアプリケーションのセッションリスナー(アプリケーションリスナー)を作成しようとしています。 Google検索では多くの情報は表示されませんでしたが、previous SO questionを付けました。XPageのセッション/アプリケーションリスナー

質問の答えによれば、私は "com.ibm.xsp.core.events.SessionListener"という名前のファイルを作成しました。このファイルの唯一の内容は、私はすでに、それは一種の奇妙見つけるフルネーム
<パッケージ>
com.ibm.xsp.application.events.SessionListener

を実装するクラスの.ClassName
です2人は同じパッケージではありませんが、今はこれを通過させてください。

ここで問題は、ファイルをどこに置くかです。私のクラスは、ビルドパスに追加されたWebContent/WEB-INF/srcフォルダ内の(現時点では)クラスです。その後、依存関係としてプロジェクトに追加されたjarファイルになります。今のところ、私はそれをsrcフォルダで動作させることに関心があります。

WebContent/WEB-INF/srcに「services」というタイトルの「フォルダ」を追加しようとしましたが、そのファイルをそこに置くと運がありません。私は、サービスフォルダをCode/Javaフォルダに入れようとしました(本当に不要です.WEB-INFフォルダにコピーされているためです)。 WebContent/WEB-INF/servicesに追加しようとしましたが、そのフォルダがビルドパスに追加されたかどうかは不明ですが、次に何を試していいのか分かりません。

リスナーのコードは次のとおりです。

import java.io.Serializable; 

import javax.servlet.http.HttpSessionEvent; 


import com.ibm.xsp.application.ApplicationEx; 
import com.ibm.xsp.application.events.SessionListener; 

public class TestController implements SessionListener, Serializable{ 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 

    public void sessionCreated(ApplicationEx arg0, HttpSessionEvent arg1) { 
     System.out.println("in test session creation"); 
    } 

    public void sessionDestroyed(ApplicationEx arg0, HttpSessionEvent arg1) { 
     System.out.println("in test session destruction"); 
    } 

} 

は同様に、Idはアプリケーションのリスナーを起動して実行してみたいが、私はまだことを試していません。

+1

私はあなたが参照している他の質問に答えを読んでいます。Code/Javaフォルダのパッケージ・エクスプローラに、新しいフォルダ 'services'を追加します。フォルダには、 'com.ibm.xsp.core.events.SessionListener'という名前の新しいファイルがあります。実行時には、このファイルが取得されることを期待しています。最後に、このファイルでは、セッションリスナーのクラスの完全修飾名を入れます。あなたの場合。テストコントローラ –

+0

私は複数のエラーを出しました(現在は動作しています)。 META-INF(WEB-INFではなく、私が見えなかったと思います)は、ソースコードと同じフォルダにあります。私の場合、これはWebContent/Web-INF/srcフォルダでした。私の場合、そのファイルへのフルパスは 'WebContent/Web-INF/src/META-INF/services'です。 – Greg

答えて

2

私が使用したいDesignerFacesServletの実装で、NSFがどのようにDomino Serverにフックするかについて、いくつかの類似点IMOがあります。その特定のケースでは、ServletFactory(NSFのローカル)を登録しています。これは、NSFの/META-INF/services/com.ibm.xsp.adapter.servletFactoryファイルに登録されます。このファイルは、Javaソースビルドパス(通常、NSF/Code/JavaまたはNSF/WEB-INF/src、使用するソースの場所によって異なります)に格納されます。このファイルには、完全修飾<パッケージが含まれています。ServletFactoryのClassName >。 https://github.com/edm00se/AnAppOfIceAndFire/blob/master/ODP/Code/Java/META-INF/services/com.ibm.xsp.adapter.servletFactory

ファイルの内容::ここで

は実際の例です

com.westeros.factory.ServletFactory 

私はNSFの内容のロードは、Dominoサーバーと通信する方法をよりよく理解して誰かがさらに啓発する可能性が確信しています。すでに述べたように

1

、それはMETA-INFフォルダにする必要があります - これは動作します:

app1.nsf/Code/Java/META-INF/services/com.ibm.xsp.core.events.SessionListener 

またSessionListenerの上のsessionDestroyedメソッドが呼び出されていないSPR#RGAUA45NJA、として追跡問題があります。これは、次の9.0.1 FixPack(FP5で修正されていない)で修正される可能性があります。

関連する問題