[英]Connection Pooling using Jetty, in Oracle
I am trying to implement the concept of ConnectionPooling
in Oracle
using Jetty
server.我正在尝试使用
Jetty
服务器在Oracle
实现ConnectionPooling
的概念。 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
.如果我使用
Tomcat
服务器进行部署,它就可以工作,但Jetty
似乎给了我一个不寻常的error
。 Details are below -详情如下——
I have a class called TestServlet.java
defined as -我有一个名为
TestServlet.java
的类定义为 -
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");}
}
}
} }
And my Jetty-web.xml
is as -我的
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.apache.commons.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>
When I run the servlet
class I get an error that says -当我运行
servlet
类时,我收到一条错误消息 -
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.util.component.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.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
at runjettyrun.Bootstrap.main(Bootstrap.java:80)
Caused by:
java.lang.ClassNotFoundException: org.apache.commons.pool.impl.GenericObjectPool
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.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.util.component.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.util.component.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.util.component.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.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
at runjettyrun.Bootstrap.main(Bootstrap.java:80)
Caused by:
java.lang.ClassNotFoundException: org.apache.commons.pool.impl.GenericObjectPool
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.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.util.component.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.util.component.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.util.component.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.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
at runjettyrun.Bootstrap.main(Bootstrap.java:80)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.pool.impl.GenericObjectPool
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:415)
at runjettyrun.ProjectClassLoader.loadClass(ProjectClassLoader.java:92)
... 20 more
I have added the commons-dbcp-1.4.jar
to my WEB-INF/lib
folder in eclipse after looking at other stackoverflow threads.在查看其他 stackoverflow 线程后,我已将
commons-dbcp-1.4.jar
添加到commons-dbcp-1.4.jar
中的WEB-INF/lib
文件夹中。 Even after doing that, I am getting the same error when I deploy on Jetty
.即使这样做之后,我在
Jetty
部署时也会遇到同样的错误。
I am using jetty
server version 8 integrated with eclipse luna
4.4.1.我正在使用与
eclipse luna
4.4.1 集成的jetty
服务器版本 8。
Any help much appreciated.非常感谢任何帮助。
You have 3 ways to do it:你有 3 种方法来做到这一点:
Make sure that you are using correct version of the commons-pool for your current commons-dbcp implementation确保您为当前的 commons-dbcp 实现使用了正确版本的 commons-pool
you don't you just use tomcat instead.你不只是使用tomcat。 find it here http://tomcat.apache.org/ :) Note that jetty is only well to be used when you need to make local app development easier.
在此处找到它http://tomcat.apache.org/ :)请注意,仅当您需要使本地应用程序开发更容易时才可以使用 jetty。 https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html I suggest you start reading up the basics for
tomcat
and as you begin to gain a basic understanding of how things work, you should start implementing Connection Pooling
:) Hope this helps. https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html我建议你开始阅读
tomcat
的基础知识,当你开始对事情的工作原理有一个基本的了解时,你应该开始实现Connection Pooling
:) 希望这会Connection Pooling
帮助。
For Jetty 10.x you could resolve it in the following way,对于 Jetty 10.x,您可以通过以下方式解决它,
ext module
-> java -jar start.jar --add-modules=ext
ext module
-> java -jar start.jar --add-modules=ext
$JETTY_BASE/start.d/ext.ini
will get created after execution of 1)$JETTY_BASE/start.d/ext.ini
将在执行后创建 1)$JETTY_HOME/lib/ext/
$JETTY_HOME/lib/ext/
java -jar start.jar
java -jar start.jar
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.