使用MSSQL中的现有数据库在Payara中部署应用程序

时间:2018-02-12 14:02:45

标签: sql-server web glassfish payara

我是Payara的新手,我对如何部署使用现有数据库的应用程序有疑问?所以我有.war文件和.bak文件(MSSQL备份)。 非常感谢。

1 个答案:

答案 0 :(得分:1)

在我看来,你对Payara功能有点困惑。 Payara是一个基于Glassfish的应用服务器,任何已部署的应用程序必须访问的数据库类型并不重要,当然数据库应该存在。

对于MSSQL数据库,您可以使用 Microsoft JDBC驱动程序。这是一本很棒的教程here

另一方面,可以在 Payara / Glassfish 服务器中配置数据库连接池。 在Payara的官方博客中,有一些有趣的帖子和一个专注于数据库连接池的帖子here。 不要担心文章是否在讨论derby数据库,只需在配置池时正确修改Microsoft JDBC params。

此外,如果您决定使用连接池,则必须在应用程序内部进行一些更改:

  • 将方法getConnection()从DRIVER_MANAGER(jdbc)更改为DATASOURCE

<强> DRIVER_MANAGER:

        public Connection getConnection() {

        try {
            Class.forName("com.mysql.jdbc.Driver");
            Properties properties = new Properties();
            properties.setProperty("user", DB_USER);
            properties.setProperty("password", DB_PWD);
            properties.setProperty("useSSL", "false");
            properties.setProperty("autoReconnect", "true");
            if (connection == null || connection.isClosed()) {
                connection = DriverManager
                        .getConnection("jdbc:mysql://"+DB_HOST+":"+DB_PORT+"/" + SCHEMA.substring(0, SCHEMA.length() - 1), properties);
            }
        } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {

                e.printStackTrace();

            }
            return connection;
        }

<强> DATA_SOURCE:

public Connection getConnection() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Properties properties = new Properties();
            properties.setProperty("user", DB_USER);
            properties.setProperty("password", DB_PWD);
            properties.setProperty("useSSL", "false");
            properties.setProperty("autoReconnect", "true");
            InitialContext ctx;

            ctx = new InitialContext();

            ds = (DataSource) ctx.lookup("database_resource_pool");
            if (connection == null || connection.isClosed()) {

                connection = ds.getConnection();
            }

        } catch (NamingException e) {
            e.printStackTrace();

        } catch (ClassNotFoundException e) {

            e.printStackTrace();

        } catch (SQLException e) {

            e.printStackTrace();

        }
        return connection;
    }
  • 将resource-ref添加到web.xml
<resource-ref>
      <res-ref-name>database_db_pool</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
      <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
  • 将resource-ref添加到WebContent / WEB-INF / glassfish-web.xml
 <resource-ref>
          <res-ref-name>database_db_pool</res-ref-name>
          <jndi-name>database_db_pool</jndi-name>
</resource-ref>