Я попытался реализовать метод синглтон-класса, который вызывается классом фильтра.
Класс фильтра и остальные классы добавляются в WLS в качестве общей библиотеки.
И у меня работают два отдельных веб-приложения - сервлеты с фильтром - оба на одном управляемом сервере.
Так что все работает нормально, за исключением того, что синглтон создается дважды.
Пожалуйста, найдите ниже фрагмент кода.
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
Я что-то здесь не так делаю? Любая помощь будет отличной.