使用 mssql-jdbc 连接到 liberty 上的 Sql 服务器
Connect to Sql Server on liberty using mssql-jdbc
我正在尝试从 liberty 服务器连接到 Sql 服务器数据库。
不起作用,因为我从 liberty 服务器获得了 500,并且日志给我以下错误消息:The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: SQL Server did not return a response.
我的xml:
<library id="sqlServerLib2" apiTypeVisibility="spec,ibm-api,api,third-party"
<fileset dir="${server.config.dir}/lib/global" includes="mssql-jdbc-6.1.0.jre8.jar"/>
</library>
<dataSource id="myDataSource" jndiName="jdbc/myDataSource">
<jdbcDriver libraryRef="sqlServerLib2"/>
<properties.microsoft.sqlserver
serverName="localhost"
portNumber="8080"
databaseName="my_db"
user="user"
password="password"/>
<connectionManager maxPoolSize="100" minPoolSize="0"/>
</dataSource>
我看过 IBM's pages。没有提供太多帮助。
我也用谷歌搜索了错误消息,但人们通常说我应该将我的驱动程序至少更新到 4.2。我使用的是 6.1,所以这并不适用。
我在这里错过了什么?
谢谢。
编辑:
我查看了 Microsoft's pages,发现我使用的是不兼容的 jdbc-api 版本。我将其从 4.0 更改为 4.1。
<featureManager>
<feature>jdbc-4.1</feature>
</featureManager>
我还在 datasource
.
中定义了数据源和连接池 类
<jdbcDriver libraryRef="sqlserverLib2"
javax.sql.DataSource="com.microsoft.sqlserver.jdbc.SQLServerDataSource"
javax.sql.ConnectionPoolDataSource="com.microsoft.sqlserver.jdbc.SQLServerConnectionPoolDataSource"/>
现在我得到了 java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDataSource
。
我尝试改用 mssql-jdbc-6.1.0.jre7.jar
(java 7)。然后突然间我工作了。我的jre8版驱动有什么问题?
主要错误是我使用了与 mssql-jdbc-6.1.0.jre8.jar 驱动程序不兼容的 jdbc-api 版本.更改为版本 4.1 修复了它。
classNotFoundException 只是我的一个错误(忘记更新 pom.xml)
在您的示例代码片段中,指定数据源的 JNDI 名称的语法不正确,
<dataSource id="myDataSource" jndi="jdbc/myDataSource">
这应该是:
<dataSource id="myDataSource" jndiName="jdbc/myDataSource">
我正在尝试从 liberty 服务器连接到 Sql 服务器数据库。
不起作用,因为我从 liberty 服务器获得了 500,并且日志给我以下错误消息:The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: SQL Server did not return a response.
我的xml:
<library id="sqlServerLib2" apiTypeVisibility="spec,ibm-api,api,third-party"
<fileset dir="${server.config.dir}/lib/global" includes="mssql-jdbc-6.1.0.jre8.jar"/>
</library>
<dataSource id="myDataSource" jndiName="jdbc/myDataSource">
<jdbcDriver libraryRef="sqlServerLib2"/>
<properties.microsoft.sqlserver
serverName="localhost"
portNumber="8080"
databaseName="my_db"
user="user"
password="password"/>
<connectionManager maxPoolSize="100" minPoolSize="0"/>
</dataSource>
我看过 IBM's pages。没有提供太多帮助。
我也用谷歌搜索了错误消息,但人们通常说我应该将我的驱动程序至少更新到 4.2。我使用的是 6.1,所以这并不适用。
我在这里错过了什么? 谢谢。
编辑: 我查看了 Microsoft's pages,发现我使用的是不兼容的 jdbc-api 版本。我将其从 4.0 更改为 4.1。
<featureManager>
<feature>jdbc-4.1</feature>
</featureManager>
我还在 datasource
.
<jdbcDriver libraryRef="sqlserverLib2"
javax.sql.DataSource="com.microsoft.sqlserver.jdbc.SQLServerDataSource"
javax.sql.ConnectionPoolDataSource="com.microsoft.sqlserver.jdbc.SQLServerConnectionPoolDataSource"/>
现在我得到了 java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDataSource
。
我尝试改用 mssql-jdbc-6.1.0.jre7.jar
(java 7)。然后突然间我工作了。我的jre8版驱动有什么问题?
主要错误是我使用了与 mssql-jdbc-6.1.0.jre8.jar 驱动程序不兼容的 jdbc-api 版本.更改为版本 4.1 修复了它。
classNotFoundException 只是我的一个错误(忘记更新 pom.xml)
在您的示例代码片段中,指定数据源的 JNDI 名称的语法不正确,
<dataSource id="myDataSource" jndi="jdbc/myDataSource">
这应该是:
<dataSource id="myDataSource" jndiName="jdbc/myDataSource">