Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OpenShift上MySQL的JDBC连接池_Java_Mysql_Maven_Jdbc_Openshift - Fatal编程技术网

Java OpenShift上MySQL的JDBC连接池

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

首先,我是一名计算机科学专业的学生,我对计算机科学领域还不是很感兴趣(也就是说,我自己做事情的经验很少)。很抱歉没有掌握所有可能的知识

然后,在我的一节课上,我学习了如何使用java(jsp、bean等)以及所有客户端内容(html、css、javascript等)创建web应用程序

我在NetBeans IDE上工作

要连接到MySQL数据库,我使用连接池的方式如下:

1) 添加MySQL JDBC驱动程序jar

2) 具有返回连接的方法的DBConnect.java类:

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"
        />