MySQL的Java JDBC数据源部署

MySQL的Java JDBC数据源部署,java,mysql,jdbc,Java,Mysql,Jdbc,我试图学习如何使用JDBC,在关于JDBC()的Java教程中,它说系统管理员需要创建BasicDataSource对象,设置其属性,并使用以下代码向命名服务注册DataSource对象: com.dbaccess.BasicDataSource ds = new com.dbaccess.BasicDataSource(); ds.setServerName("grinder"); ds.setDatabaseName("CUSTOMER_ACCOUNTS"); ds.setDescripti

我试图学习如何使用JDBC,在关于JDBC()的Java教程中,它说系统管理员需要创建BasicDataSource对象,设置其属性,并使用以下代码向命名服务注册DataSource对象:

com.dbaccess.BasicDataSource ds = new com.dbaccess.BasicDataSource();
ds.setServerName("grinder");
ds.setDatabaseName("CUSTOMER_ACCOUNTS");
ds.setDescription("Customer accounts database for billing");

Context ctx = new InitialContext();
ctx.bind("jdbc/billingDB", ds);
然后开发人员可以使用部署的数据源对象来获得连接


目前,我正在使用MySQL并下载Connector/J,但我对如何部署数据源感到困惑。据我所知,BasicDataSource部署在服务器上。由于我将MySQL服务器设置在本地机器上,这是否意味着我需要创建另一个Java程序来创建此数据源,以便我的用户程序可以连接到它,还是意味着我需要配置MySQL服务器

以上的评论应该足以让你自己达到目标。 但是,如果您是住院患者,这里有一个代码片段可以让您更轻松:

public static void main(String[] args) {

    //pz is the name of database, user is user name, password is password for the user
    try (Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/pz?" +
            "user=root&password=root")) {
        // Do something with connection, e.g:
        System.out.println("conn: " + connection.getCatalog());


    } catch (SQLException e) {
        System.err.println("Error: " + e.getMessage());
        e.printStackTrace();
    }
}
我使用的MySql J连接器是MySql-connector-java-8.0.9-rc-bin.jar (您将得到关于SSL的警告,如下所示:


Fri Jul 20 20:16:10 CEST 2018警告:不建议在不进行服务器身份验证的情况下建立SSL连接。根据MySQL 5.5.45+、5.6.26+和5.7.6+要求,如果未设置显式选项,则默认情况下必须建立SSL连接。为了符合不使用SSL的现有应用程序,请使用verifyServerCertificate property设置为“false”。您需要通过设置useSSL=false显式禁用SSL,或者设置useSSL=true并提供用于服务器证书验证的信任库。

在应用程序服务器(EJB、JBoss、Tomcat、Jetty等)中运行时使用数据源。这是他们提到的服务器,而不是数据库服务器。对于相对简单的独立程序,您可能根本不使用DataSource,只需调用其中一个方法即可获得连接。您需要servlet引擎或Java EE app server(在这种情况下不需要)还有一个MySQL数据库。您可以在servlet引擎中使用JNDI配置池数据源。您是本地servlet引擎的系统管理员。@Andreas谢谢!这就很清楚了。我想我会研究运行应用程序服务器并使数据源正常工作。我看到DriverManager可以建立连接,但看起来使用DataSource是更好的设计实践,或者至少是推荐的。