我是Payara的新手,我对如何部署使用现有数据库的应用程序有疑问?所以我有.war文件和.bak文件(MSSQL备份)。 非常感谢。
答案 0 :(得分:1)
在我看来,你对Payara功能有点困惑。 Payara是一个基于Glassfish的应用服务器,任何已部署的应用程序必须访问的数据库类型并不重要,当然数据库应该存在。
对于MSSQL数据库,您可以使用 Microsoft JDBC驱动程序。这是一本很棒的教程here:
另一方面,可以在 Payara / Glassfish 服务器中配置数据库连接池。 在Payara的官方博客中,有一些有趣的帖子和一个专注于数据库连接池的帖子here。 不要担心文章是否在讨论derby数据库,只需在配置池时正确修改Microsoft JDBC params。
此外,如果您决定使用连接池,则必须在应用程序内部进行一些更改:
<强> 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> <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> <res-ref-name>database_db_pool</res-ref-name> <jndi-name>database_db_pool</jndi-name> </resource-ref>