質問

Iはフィルタクラスによって呼び出されるシングルトンクラスのメソッドを実装しようとしました。 フィルタクラスとクラスの残りの部分は、共有ライブラリとしてWLSに追加されます。

フィルタとサーブレット - -

と私は実行している2つの別々のWebアプリを持っている。両方とも同じ管理対象サーバ上の

シングルトンが2回インスタンス取得され、以外のすべてが正常に動作しているので。 PLZコードスニペットの下に見つけます。

public class Test
{
   private static Test ref ;

   private DataSource X;  
   static int Y;
   long Z ;   


   private Test ()
   {
      // Singleton 
   Z= 100 ;
   }

   public static synchronized Test getinstance()  throws NamingException, SQLException
   {
      if(ref == null)
      {         
         ref = new Test() ;         
         InitialContext ic = new InitialContext();

         ref.X = (DataSource)ic.lookup ("jdbc/Views");
      } 
      return ref ;    
   }

   public Object clone()throws CloneNotSupportedException
   {
       throw new CloneNotSupportedException(); 
   }

   public int sampleMethod (int X) throws SQLException
   {
   }

}

フィルタ方法:

public final class Filter implements Filter
{
 public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException
 {
  try
  {  
   Test ref = Test.getinstance();
   log.logNow(ref.toString());
   .......

  }
 }
}
二つの異なる参照を取得したログ午前に

- たとえば

のテスト@ f1a2e06テストf180f10 @

私はここで何かが間違っているのでしょうか?すべてのヘルプは素晴らしいことです。

役に立ちましたか?

解決

は、サーブレットコンテナは、異なるアプリケーションのための異なるクラスローダーを使用します。私は信じていませんので、インスタンスを共有することが可能です。あなたはおそらく、JNDI経由でインスタンスを登録している何をすることができます。

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