有一份struts+spring+hibernate的程序,连接池使用proxool,使用tomcat做WEB服务器。因为业务需求,这个程序要独立运行很多份。我现在的做法是把程序复制很多份,在server.xml中加入多个context,分别指向相应的位置。因为使用了很多第三方jar,我把lib下的jar文件放到了tomcat的lib下面,多份程序共用这些jar。但因为程序本身的类比较多,有二千多个类,一千多(接近两千)个jsp。我现在跑两个context能跑起来,跑三个的时候,启动时就报错,错误大致如下:OutOfMemoryError: PermGen space,不知如何是好。我想把classes下面的类也打成jar包放在tomcat的lib下面去,多份程序共用这些classes,但是这样做proxool不能正常工作,说连接池别名有冲突,可能是因为这些程序都会创建一个连接池,因程序相同,连接池的名字也一样。如果在一台两G的电脑上只能跑两个程序,那我们的投资就大了,因为有可能要运行十多个这样的程序,这得要多少服务器啊。这些相同的程序是否可以共用一个连接池?怎么做?
对于这种需求有没有更好的解决办法?
在这里发贴,还希望各位大大不吝赐教!
谢谢!

解决方案 »

  1.   

    一个小绿三角搞"二千多个类,一千多(接近两千)个jsp"的应用,还要"要运行十多个这样的程序"
    改写使用框架的代码非常麻烦,要按照框架的要求来弄.
    用你那2000多类的大程序先加载个小应用做连接池调试看看,配置好了后在换大的
      

  2.   

    tomcat\bin\tomcat5w.exe选项卡 java
    下面有 maximum memory pool 最大内存
      

  3.   

    谢谢楼主两位!!!
    补充一下,我测试的服务器有两G内存。我在tomcat5w的java选项卡中,设置了Initial memory pool为1024MB,Maximum memory pool为1280MB。剩下的内存留给操作系统和sql server 2005了。
    但就这样,也跑不动三个context(跑两个可以)。