package mybean does not exist
mybean.DBConnManager connManager = null;
...
connManager = (mybean.DBConnManager) pageContext.getAttribute(...)
...
connManager = (mybean.DBConnManager) Beans.instantiate(...)
錯誤核心:JSP 編譯產生的 Servlet 找不到 mybean 套件下的類別。
兩個連線池類別均宣告 package mybean;:
DBConnPool:單一連線池實作(Vector 管理閒置連線、同步化取得/歸還、建立新連線、關閉所有)DBConnManager:多連線池管理器(Vector/Hashtable 管理多組池配置,支援 Access、SQL Server、MySQL、Oracle 四種資料庫預設配置)JSP 頁面:/shopping/index.jsp
webapps/
└── shopping/
├── index.jsp
├── WEB-INF/
│ ├── web.xml
│ ├── classes/
│ │ └── mybean/
│ │ ├── DBConnPool.class
│ │ └── DBConnManager.class
│ └── lib/
DBConnPool.java、DBConnManager.java 已編譯為 .classWEB-INF/classes/mybean/javac -d WEB-INF/classes DBConnPool.java DBConnManager.java/shopping/index.jsp 驗證web.xml 或 context.xml 設定 DataSource (JNDI),JSP 透過 InitialContext.lookup() 取得,解耦程式碼與配置ServletContextListener.contextDestroyed() 中清理資源DBConnPool.getConnection() 遞迴呼叫自身處理已關閉連線,極端情況下可能導致堆疊溢位,建議改用迴圈Vector、Hashtable 為舊式同步集合,高併發下效能不佳,建議改用 ConcurrentLinkedQueue + ConcurrentHashMap