首先,我建议您为应用程序使用 DataSource 而不是原始 JDBC 驱动程序。通过使用 DataSource(在应用程序服务器上配置时由容器管理),您将受益于应用程序服务器完成的许多固有优化,例如连接池和事务支持。
请注意,DataSource 并非特定于 WAS Liberty,在任何应用服务器中,通过使用容器管理的 DataSource 而不是原始 JDBC 驱动程序,您将以更低的开发成本获得更高的性能。
配置数据源:
在 server.xml 中配置 DataSource 和 JDBC 库:
<!-- Enable JDBC and JNDI features (at least) -->
<featureManager>
<feature>jdbc-4.1</feature>
<feature>jndi-1.0</feature>
</featureManager>
<dataSource id="MyDataSource" jndiName="jdbc/MyDataSource">
<jdbcDriver libraryRef="MSJDBCLib"/>
<properties.microsoft.sqlserver databaseName="SAMPLEDB" serverName="localhost" portNumber="1433"/>
</dataSource>
<library id="MSJDBCLib">
<fileset dir="C:/path/to/sqljdbc4.jar"/>
<!-- To have authentication support, add the dll to the library -->
<fileset dir="C:/path/to/sqljdbc_auth.dll"/>
</library>
请参阅 IBM 文档:在 Liberty 中配置数据库连接
回答您的问题的关键是在您的元素中添加<fileset>
指向 auth dll 文件的<library>
元素,如下所示:
<!-- To have authentication support, add the dll to the library -->
<fileset dir="C:/path/to/sqljdbc_auth.dll"/>
要使用数据源:
之前,你可能做过这样的事情:
String connectionURL = "jdbc:sqlserver://localhost:1433;DatabaseName=YourDBName;user=UserName;Password=YourPassword";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection con = DriverManager.getConnection(connectionUrl);
使用 DataSources,您可以注入它们或使用 JNDI 查找它们:
注入:
@Resource(lookup = "jdbc/MyDataSource")
DataSource myDataSource;
...
Connection con = myDataSource.getConnection();
JNDI 查询:
DataSource myDataSource = new InitialContext().lookup("jdbc/MyDataSource");
Connection conn = myDataSource.getConnection();