maven 使用spring连接池问题 Attempt to refer to a unregistered

    最近把一个普通的java项目要转为maven管理的项目,结果提示错误:Attempt to refer to a unregistered pool by its alias 'xx',从网上找了好多解决问题,其中也有同学列举出了几种解决方式:(红色字体是从网上找的)

1、proxool.xml中配置的连接池加载成功,但在用连接池的时候,用自己写的java文件中调用出现的问题,就是写了一个main方法,然后用"java Application"运行,就会报Attempt to refer to a unregistered pool by its alias ‘test’ ,但是在JSP页面里并不会报错。问题的关键就是在这里,连接池的应用本来就是要通过服务器调用的,如果你在java文件中调用,就没有涉及到服务器,这样就会报错了!
如果你在java文件中用下面这种方式加载连接池是可用的:
[java] view plaincopy
Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");  
Connection conn  = DriverManager.getConnection("proxool.别名:driver:url","用户名","密码");  
(注意:DriverManager.getConnection中多了几个条件:1、driver。2、url。3、用户名。4、密码。并且分清楚他们之间的冒号和逗号。)
但是这种方式会每次运行的时候加载连接池,用完就会释放。所以大家用连接池的时候,不要在java文件中去测试连接池是否可用,应该写一个jsp页面,问题就此解决!
 
2、proxool.xml的内容是在其他文件里复制内容过来的,报错,新建一个proxool.xml,完全手写各个配置,然后重启服务。
 
3、.xml配置文件出现中文,即使已经注释掉。解决办法:将.xml配置文件中的中文注释删净。
 
4、web.xml中,proxool的配置问题:
[html] view plaincopy
 
    ServletConfigurator  
     
        org.logicalcobwebs.proxool.configuration.ServletConfigurator  
   
 
     
        xmlFile  
        WEB-INF/proxool.xml  
   
 
    0  
 
 这里的问题出在0,我们先来了解一下元素,它是用来标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法),它的值必须是一个整数,表示servlet应该被载入的顺序,当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet,当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。正数的值越小,该servlet的优先级越高,应用启动时就越先加载。当值相同时,容器就会自己选择顺序来加载。所以,x,中x的取值1,2,3,4,5代表的是优先级(而非启动延迟时间)。这里将0改为1保证了proxool配置的servlet最先加载即可。

 
       但是按照上面的说的,还是报同样的错误,于是,我怀疑是不是由于改成maven项目了,发布到tomcat的时候,系统没有找到proxool文件,结果也不是。最后发现是pom文件中对mysql的驱动包引用错误了。

     解决问题的思路还是太窄了,还差得远呢。。。。。。

你可能感兴趣的:(maven 使用spring连接池问题 Attempt to refer to a unregistered)