1. 程式人生 > >maven 使用spring連線池問題 Attempt to refer to a unregistered

maven 使用spring連線池問題 Attempt to refer to a unregistered

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
<servlet>  
    <servlet-name>ServletConfigurator</servlet-name>  
    <servlet-class>  
        org.logicalcobwebs.proxool.configuration.ServletConfigurator  
    </servlet-class>  
    <init-param>  
        <param-name>xmlFile</param-name>  
        <param-value>WEB-INF/proxool.xml</param-value>  
    </init-param>  
    <load-on-startup>0</load-on-startup>  
</servlet>  
 這裡的問題出在<load-on-startup>0</load-on-startup>,我們先來了解一下<load-on-startup>元素,它是用來標記容器是否在啟動的時候就載入這個servlet(例項化並呼叫其init()方法),它的值必須是一個整數,表示servlet應該被載入的順序,當值為0或者大於0時,表示容器在應用啟動時就載入並初始化這個servlet,當值小於0或者沒有指定時,則表示容器在該servlet被選擇時才會去載入。正數的值越小,該servlet的優先順序越高,應用啟動時就越先載入。當值相同時,容器就會自己選擇順序來載入。所以,<load-on-startup>x</load-on-startup>,中x的取值1,2,3,4,5代表的是優先順序(而非啟動延遲時間)。這裡將0改為1保證了proxool配置的servlet最先載入即可。