使用 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">