设计得一点都不好!效率很低
你如果没有看过struts的源代码我可以告诉你
getServletContex().setAttribute(Globals.DATA_SOURCE_KEY,.....getDatasource(request,....));
有点启发吗

解决方案 »

  1.   

    楼上的请问这样的设计效率处在那里?
    你的代码我没有看懂是否能多给一些提示。
    对于Connection连接问题,如果访问量大怎样设计有能 提高效率 有能 降低服务器的压力?
      

  2.   

    呵呵,我没说清楚哦
    人家的设计是把DataSource对象放在ServletContex(也就是jsp里面的application),每个用户使用的时候都是getConnection得到连接,用完了就还给上下文环境,给其他用户使用
    你的问题在与,一个用户在其session之内一直拿着连接不关闭,如果数据库操作很少,那么大部分时间就会白占着连接。而且如果用户关闭了浏览器或者非正常退出,那么在退出到session过期这段时间就什么操作没有而占着连接。
    最大的问题就是Datasource的最大连接是有限,我们假设是20个,那么这时候如果来了20个用户,那么他们就用走了所有的连接。要是现在又来了第21个用户怎么办?他们就没有了连接可用了啊,更何况那占有连接的20个用户还在低效地使用宝贵的连接
      

  3.   

    jFresH_MaN(The answer is ......)(上帝对我说:编程要全面发展,) 谢谢你!
    我知道我设计的问题了,但"人家的设计是把DataSource对象放在ServletContex(也就是jsp里面的application),每个用户使用的时候都是getConnection得到连接,用完了就还给上下文环境,给其他用户使用" 这部分没看懂? 
    是说把数据源连接放到ServletContex.setAttribute()这里吗?这样设计就不存在资源占有的问题了吗?这个问题还差一点点没明白,希望大虾能指点一下!
    不要嫌小弟 啰嗦!
         谢了 先!
      

  4.   

    jFresH_MaN(The answer is ......)(上帝对我说:编程要全面发展,) 谢谢你!
    我知道我设计的问题了,但"人家的设计是把DataSource对象放在ServletContex(也就是jsp里面的application),每个用户使用的时候都是getConnection得到连接,用完了就还给上下文环境,给其他用户使用" 这部分没看懂? 
    是说把数据源连接放到ServletContex.setAttribute()这里吗?这样设计就不存在资源占有的问题了吗?这个问题还差一点点没明白,希望大虾能指点一下!
    不要嫌小弟 啰嗦!
         谢了 先!
      

  5.   

    是说把数据源连接放到ServletContex.setAttribute()这里吗?
    是的
    这样设计就不存在资源占有的问题了吗?
    是的,因为用的是连接池,连接是在所有用户之间共享的,一个用户用完了了一个连接,该连接马上返回到池中,供其他用户使用,所以不是“独占”的,最理想的情况下,一个连接几乎总有用户使用,使用率提高。而不像你的“独占”式,绝大多时间内连接没有被使用。