我正在尝试使用Jetty服务器在Oracle中实现ConnectionPooling的概念.我已经尝试了在教程中看到的以下内容.如果使用Tomcat服务器进行部署,则可以正常工作,但是Jetty似乎给了我一个不寻常的error.详细信息如下-
I am trying to implement the concept of ConnectionPooling in Oracle using Jetty server. I have tried the following that I saw on a tutorial. It is working if I deploy using Tomcat server, but Jetty seems to be giving me an unusual error. Details are below -
我有一个名为TestServlet.java的类,定义为-
I have a class called TestServlet.java defined as -
import java.io.IOException; import java.sql.*; import javax.naming.*; import javax.servlet.*; import javax.servlet.annotation.WebServlet; import javax.servlet.http.*; import javax.sql.DataSource; @SuppressWarnings("serial") @WebServlet("/TestServlet") public class TestServlet extends HttpServlet { public TestServlet() throws ServletException{ System.out.println("Constructor"); init(); } public DataSource dataSource; private Connection con; private Statement statement; public void init() throws ServletException { System.out.println("inside init method"); try { // Get DataSource Context initContext = new InitialContext(); System.out.println("Before envcontext"); Context envContext = (Context)initContext.lookup("java:comp/env"); System.out.println("After envcontext"); dataSource = (DataSource)envContext.lookup("jdbc/DSTest"); System.out.println(dataSource.toString()); } catch (NamingException e) { System.out.println("Exception in try"); e.printStackTrace(); } } public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("Request: "+req+"\tResponse: "+resp); int i=0; ResultSet resultSet = null; try { // Get Connection and Statement con = dataSource.getConnection(); statement = con.createStatement(); String query = "SELECT * FROM USER"; resultSet = statement.executeQuery(query); while (resultSet.next()) { ++i; System.out.println(i+":\nID:"+resultSet.getString("ID") +"\nEmail:"+ resultSet.getString("UEMAIL") +"\nPassword:" + resultSet.getString("PASSWORD")+"\nFlag:"+resultSet.getShort("FLAG") +"\n"); } } catch (SQLException e) { System.out.println("EXCEPTIOn"); e.printStackTrace(); }finally { try { if(null!=resultSet)resultSet.close();} catch (SQLException e) {e.printStackTrace();System.out.println("1");} try { if(null!=statement)statement.close();} catch (SQLException e) {e.printStackTrace();System.out.println("2");} try { if(null!=con)con.close();} catch (SQLException e) {e.printStackTrace();System.out.println("3");} } }}
我的Jetty-web.xml是-
<?xml version="1.0" encoding="UTF-8"?> <Configure class="org.eclipse.jetty.webapp.WebAppContext"> <New id="DSTest" class="org.eclipse.jetty.plus.jndi.Resource"> <Arg>java:comp/env</Arg> <Arg>jdbc/DSTest</Arg> <Arg> <New class="org.apachemons.dbcp.BasicDataSource"> <Set name="driverClassName">oracle.jdbc.OracleDriver</Set> <Set name="url">ConnectionUrl</Set> <Set name="username">app_user</Set> <Set name="password">abcd</Set> </New> </Arg> </New> </Configure>运行servlet类时,出现错误消息-
When I run the servlet class I get an error that says -
java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2658) at java.lang.Class.getConstructors(Class.java:1638) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:748) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.itemValue(XmlConfiguration.java:1078) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.value(XmlConfiguration.java:993) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:741) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:383) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:317) at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:276) at org.eclipse.jetty.webapp.JettyWebXmlConfiguration.configure(JettyWebXmlConfiguration.java:100) at org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:427) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1207) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:610) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:453) at org.eclipse.jetty.utilponent.AbstractLifeCycle.start(AbstractLifeCycle.java:59) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:89) at org.eclipse.jetty.server.Server.doStart(Server.java:262) at org.eclipse.jetty.utilponent.AbstractLifeCycle.start(AbstractLifeCycle.java:59) at runjettyrun.Bootstrap.main(Bootstrap.java:80) Caused by: java.lang.ClassNotFoundException: org.apachemons.pool.impl.GenericObjectPool at java.URLClassLoader$1.run(URLClassLoader.java:372) at java.URLClassLoader$1.run(URLClassLoader.java:361) at java.security.AccessController.doPrivileged(Native Method) at java.URLClassLoader.findClass(URLClassLoader.java:360) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:415) at runjettyrun.ProjectClassLoader.loadClass(ProjectClassLoader.java:92) at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2658) at java.lang.Class.getConstructors(Class.java:1638) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:748) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.itemValue(XmlConfiguration.java:1078) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.value(XmlConfiguration.java:993) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:741) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:383) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:317) at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:276) at org.eclipse.jetty.webapp.JettyWebXmlConfiguration.configure(JettyWebXmlConfiguration.java:100) at org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:427) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1207) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:610) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:453) at org.eclipse.jetty.utilponent.AbstractLifeCycle.start(AbstractLifeCycle.java:59) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:89) at org.eclipse.jetty.server.Server.doStart(Server.java:262) at org.eclipse.jetty.utilponent.AbstractLifeCycle.start(AbstractLifeCycle.java:59) at runjettyrun.Bootstrap.main(Bootstrap.java:80) 2015-10-30 14:22:51.172:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:8081 STARTING 2015-10-30 14:22:51.172:WARN:oejuc.AbstractLifeCycle:FAILED org.eclipse.jetty.server.Server@7857fe2: java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2658) at java.lang.Class.getConstructors(Class.java:1638) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:748) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.itemValue(XmlConfiguration.java:1078) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.value(XmlConfiguration.java:993) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:741) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:383) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:317) at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:276) at org.eclipse.jetty.webapp.JettyWebXmlConfiguration.configure(JettyWebXmlConfiguration.java:100) at org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:427) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1207) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:610) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:453) at org.eclipse.jetty.utilponent.AbstractLifeCycle.start(AbstractLifeCycle.java:59) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:89) at org.eclipse.jetty.server.Server.doStart(Server.java:262) at org.eclipse.jetty.utilponent.AbstractLifeCycle.start(AbstractLifeCycle.java:59) at runjettyrun.Bootstrap.main(Bootstrap.java:80) Caused by: java.lang.ClassNotFoundException: org.apachemons.pool.impl.GenericObjectPool at java.URLClassLoader$1.run(URLClassLoader.java:372) at java.URLClassLoader$1.run(URLClassLoader.java:361) at java.security.AccessController.doPrivileged(Native Method) at java.URLClassLoader.findClass(URLClassLoader.java:360) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:415) at runjettyrun.ProjectClassLoader.loadClass(ProjectClassLoader.java:92) at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2658) at java.lang.Class.getConstructors(Class.java:1638) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:748) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.itemValue(XmlConfiguration.java:1078) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.value(XmlConfiguration.java:993) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:741) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:383) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:317) at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:276) at org.eclipse.jetty.webapp.JettyWebXmlConfiguration.configure(JettyWebXmlConfiguration.java:100) at org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:427) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1207) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:610) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:453) at org.eclipse.jetty.utilponent.AbstractLifeCycle.start(AbstractLifeCycle.java:59) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:89) at org.eclipse.jetty.server.Server.doStart(Server.java:262) at org.eclipse.jetty.utilponent.AbstractLifeCycle.start(AbstractLifeCycle.java:59) at runjettyrun.Bootstrap.main(Bootstrap.java:80) Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2658) at java.lang.Class.getConstructors(Class.java:1638) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:748) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.itemValue(XmlConfiguration.java:1078) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.value(XmlConfiguration.java:993) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:741) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:383) at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:317) at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:276) at org.eclipse.jetty.webapp.JettyWebXmlConfiguration.configure(JettyWebXmlConfiguration.java:100) at org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:427) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1207) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:610) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:453) at org.eclipse.jetty.utilponent.AbstractLifeCycle.start(AbstractLifeCycle.java:59) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:89) at org.eclipse.jetty.server.Server.doStart(Server.java:262) at org.eclipse.jetty.utilponent.AbstractLifeCycle.start(AbstractLifeCycle.java:59) at runjettyrun.Bootstrap.main(Bootstrap.java:80) Caused by: java.lang.ClassNotFoundException: org.apachemons.pool.impl.GenericObjectPool at java.URLClassLoader$1.run(URLClassLoader.java:372) at java.URLClassLoader$1.run(URLClassLoader.java:361) at java.security.AccessController.doPrivileged(Native Method) at java.URLClassLoader.findClass(URLClassLoader.java:360) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:415) at runjettyrun.ProjectClassLoader.loadClass(ProjectClassLoader.java:92) ... 20 more在查看其他stackoverflow线程后,我已将commons-dbcp-1.4.jar添加到我的eclipse中的WEB-INF/lib文件夹中.即使这样做了,在Jetty上部署时,我仍然遇到相同的错误.
I have added the commons-dbcp-1.4.jar to my WEB-INF/lib folder in eclipse after looking at other stackoverflow threads. Even after doing that, I am getting the same error when I deploy on Jetty.
我正在使用与eclipse luna 4.4.1集成的jetty服务器版本8.
I am using jetty server version 8 integrated with eclipse luna 4.4.1.
任何帮助,不胜感激.
Any help much appreciated.
推荐答案您有3种方法可以做到:
You have 3 ways to do it:
请确保您为当前的commons-dbcp实现使用了Commons-pool的正确版本
Make sure that you are using correct version of the commons-pool for your current commons-dbcp implementation
更多推荐
在Oracle中使用Jetty进行连接池
发布评论