Я использую API SQLServerBulkCopy для хранения миллионов записей в базе данных SQL Server. я получаю сообщение об ошибке
«com.microsoft.sqlserver.jdbc.SQLServerException: целевое соединение должно быть соединением из драйвера Microsoft JDBC для SQL Server»
во время инициализации, как
SQLServerBulkCopy bulkCopy = new SQLServerBulkCopy(conn);
Итак, я развернул соединение
SQLServerConnection conn = connection.unwrap(SQLServerConnection.class);
Исходное соединение com.ibm.ws.rsadapter.jdbc.WSJdbcConnection@8da2f3e2
После рассмотрения следующих ранее заданных вопросов
1. WSJDBCConnection не упаковывает объекты типа Oracle jdbc Connection
2. Я получаю сообщение `DSRA9122E: com.ibm.ws.rsadapter.jdbc.WSJdbcConnection@d3t7e556 не содержит объектов типа oracle.jdbc.OracleConnection
Я обнаружил, что это из-за classLoader для sqljdbc42.jar, несоответствия между источником данных и приложением
Итак, я изменил свой server.xml следующим образом
<library id="global">
<fileset dir="${server.config.dir}/lib/global" includes="*.jar"/>
</library>
<jdbcDriver id="SqlJdbcDriver"
javax.sql.DataSource =
"com.microsoft.sqlserver.jdbc.SQLServerConnectionPoolDataSource"
libraryRef="global"/>
<application id="myApp" name="myApp" type="ear" location="myApp.ear">
<classloader commonLibraryRef="global"/>
</application>
Тег источника данных находится в другом файле server.xml, специфичном для env by env.
<dataSource id="myDS" jdbcDriverRef="SqlJdbcDriver" jndiName="jdbc/myDS">
<connectionManager agedTimeout="2m" connectionTimeout="2s" maxPoolSize="50" minPoolSize="0" />
<properties.microsoft.sqlserver databaseName="myDB" serverName="xxx.com" />
</dataSource>
sqljdbc42.jar также находится в каталоге lib/global.
Кроме того, я удалил каталог dropins и поместил myApp в каталог apps, поскольку тег application
не будет работать, если приложение присутствует в каталоге dropins.
После всех этих изменений тоже получаю исключение
«com.ibm.ws.rsadapter.jdbc.WSJdbcConnection@8155ea2d не упаковывает объекты типа com.microsoft.sqlserver.jdbc.SQLServerConnection».
Может ли кто-нибудь понять, какое решение или что еще мне не хватает?