[英]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.