簡體   English   中英

如何實現單例-Weblogic中

[英]how to implement a singleton - in weblogic

我嘗試實現單例類方法,該方法由過濾器類調用。 過濾器類和其余類作為共享庫添加到WLS。

我有兩個運行的單獨Web應用程序-帶過濾器的servlet-都在同一台受管服務器上。

因此,除了單例被實例化兩次之外,其他所有東西都工作正常。 請在下面的代碼片段中找到。

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());
   .......

  }
 }
}

在日志中有兩個不同的參考-說

Test @ f1a2e06 Test @ f180f10

我在這里做錯什么了嗎? 任何幫助都會很棒。

Servlet容器針對不同的應用程序使用不同的類加載器。 因此,我認為無法共享一個實例。 您可能要做的就是通過JNDI注冊實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM