2010-12-09 64 views
0

我试图实现一个单独的类方法,它是通过一个过滤器类调用。 筛选器类和其余类都作为共享库添加到WLS中。如何实现单 - 在weblogic

,我已经运行两个单独的Web应用程序 - servlet的带过滤器的 - 无论是在同一管理服务器上。

所以一切工作只是,单身是越来越实例两倍的罚款。 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

我在这里干什么什么了吗?任何帮助都会很棒。

+0

哪个版本的WebLogic是这样的?标记表示10.x,但可以是10.0或10.3或11gR1(10.3.x)。 – 2010-12-09 16:54:40

+0

单身人士在这里没有绝对的感觉。如果你想为每个servlet上下文创建一个实例,请使用`ServletContextListener`。如果您希望每个应用程序服务器都有一个实例,请使用Bozho建议的JNDI。 – BalusC 2010-12-09 18:24:51

回答

6

一个servlet容器使用于不同的应用不同类加载器。所以我不相信有可能分享一个实例。你可以做的是通过JNDI注册实例。