2

我正在尝试从自由服务器连接到 Sql Server 数据库。不起作用,因为我从自由服务器获得了 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 的页面。没有提供太多帮助。

我也用谷歌搜索了错误消息,但人们通常说我应该将我的驱动程序更新到至少 4.2。我使用的是 6.1,所以这并不适用。

我在这里想念什么?谢谢。

编辑:我查看了Microsoft 的页面,发现我使用的是不兼容的 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 版本的驱动程序做错了什么?

4

2 回答 2

1

主要错误是我使用了与 mssql-jdbc-6.1.0.jre8.jar 驱动程序不兼容的 jdbc-api 版本。更改为版本 4.1 修复了它。

classNotFoundException 只是我的一个错误(忘记更新 pom.xml)

于 2018-01-31T14:04:44.627 回答
0

在您的示例代码片段中,指定数据源的 JNDI 名称的语法不正确,

<dataSource id="myDataSource" jndi="jdbc/myDataSource">

这应该是:

<dataSource id="myDataSource" jndiName="jdbc/myDataSource">
于 2018-01-31T14:15:33.540 回答