Java OpenShift上MySQL的JDBC连接池
首先,我是一名计算机科学专业的学生,我对计算机科学领域还不是很感兴趣(也就是说,我自己做事情的经验很少)。很抱歉没有掌握所有可能的知识 然后,在我的一节课上,我学习了如何使用java(jsp、bean等)以及所有客户端内容(html、css、javascript等)创建web应用程序 我在NetBeans IDE上工作 要连接到MySQL数据库,我使用连接池的方式如下: 1) 添加MySQL JDBC驱动程序jar 2) 具有返回连接的方法的DBConnect.java类:Java OpenShift上MySQL的JDBC连接池,java,mysql,maven,jdbc,openshift,Java,Mysql,Maven,Jdbc,Openshift,首先,我是一名计算机科学专业的学生,我对计算机科学领域还不是很感兴趣(也就是说,我自己做事情的经验很少)。很抱歉没有掌握所有可能的知识 然后,在我的一节课上,我学习了如何使用java(jsp、bean等)以及所有客户端内容(html、css、javascript等)创建web应用程序 我在NetBeans IDE上工作 要连接到MySQL数据库,我使用连接池的方式如下: 1) 添加MySQL JDBC驱动程序jar 2) 具有返回连接的方法的DBConnect.java类: public sta
public static Connection getConnection() {
/* JNDI query to locate the DataSource object */
Context initContext;
try {
initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env"); // JNDI standard naming root
DataSource ds = (DataSource) envContext.lookup("jdbc/aName");
/* Ask DataSource for a connection */
Connection conn;
try {
conn = ds.getConnection();
return conn;
} catch (SQLException ex) {
Logger.getLogger(DBConnect.class.getName()).log(Level.SEVERE, null, ex);
throw new RuntimeException("cannot open Connection", ex);
}
} catch (NamingException ex) {
Logger.getLogger(DBConnect.class.getName()).log(Level.SEVERE, null, ex);
throw new RuntimeException("cannot find DataSource reference", ex);
}
}
3) web.xml:
mysql连接器jar位于/WEB_INF/lib中,pom.xml具有:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.25</version>
</dependency>
mysql
mysql连接器java
5.1.25
也许解决办法很简单,但我不知道该怎么办。
谢谢。我想问题出在你的web.xml文件上。这是多余的。Context.xml指定具有适当配置的数据源,然后web.xml指定没有URL或驱动程序类名的数据源 尝试从web.xml中删除此
资源引用
块,然后重试:
<resource-ref>
<description>Resource reference to a DataSource for managing a connection pool.</description>
<res-ref-name>jdbc/aName</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
这样做:
url="jdbc:mysql://whateverhost:whateverport/dbSchema?autoReconnect=true"/>
我自己在OpenShift上和我的Tomcat(它安装在个人PC上)上都遇到了这个问题 问题似乎与context.xml文件有关。 即使我编辑了克隆的openshift项目中的context.xml文件,问题似乎并未出现。 我通过访问位于localhost config/context.xml的eclipse服务器目录:/Servers/Tomcat v7.0 server,在我的个人计算机上解决了这个问题
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/myApp">
<Resource
auth="Container"
driverClassName="com.mysql.jdbc.Driver"
maxActive="100"
maxIdle="30"
maxWait="10000"
name="jdbc/aName"
username="username"
password="password"
type="javax.sql.DataSource"
url="jdbc:mysql://"whateverhost":"whateverport"/dbSchema?autoReconnect=true"/>
</Context>
在context.xml中,我必须手动添加:
<Resource name="jdbc/MySQLPool"
url="jdbc:mysql://localhost:3306/sakila"
driverClassName="com.mysql.jdbc.Driver"
username="root"
password="nbuser"
auth="Container"
type="javax.sql.DataSource"
maxActive="20"
maxIdle="5"
maxWait="10000"
/>
保存了文件,我的电脑上的Tomcat解决了所有问题
目前,我仍在努力解决OpenShift问题。
我使用的是eclipse,即使我编辑了OpenShift克隆中的context.xml,似乎OpenShift Tomcat平台上的context.xml文件也必须像前面的示例一样进行访问和更新
希望这有帮助
更新:
我已经以同样的方式为OpenShift平台解决了这个问题。
通过使用Filezilla(openshift指南可在此处找到:)
我已经连接到服务器,访问了Tomcat目录(在我的例子中:jbossews/conf/context.xml),并且通过添加与上面相同的xml资源手动编辑了该文件
希望有帮助 谢谢,删除
资源参考
解决了异常!不幸的是,现在它抛出了新的异常,无法找到数据源引用
,并且名称[aName]在此上下文中没有绑定
。下一步我将寻找解决方案,同时谢谢!
url="jdbc:mysql://"whateverhost":"whateverport"/dbSchema?autoReconnect=true"/>
url="jdbc:mysql://whateverhost:whateverport/dbSchema?autoReconnect=true"/>
<Resource name="jdbc/MySQLPool"
url="jdbc:mysql://localhost:3306/sakila"
driverClassName="com.mysql.jdbc.Driver"
username="root"
password="nbuser"
auth="Container"
type="javax.sql.DataSource"
maxActive="20"
maxIdle="5"
maxWait="10000"
/>