Я использую SQLServerBulkCopy API для хранения миллионов записей в базе данных SQL Server. Я получаю сообщение об ошибке
"com.microsoft.sqlserver.jdbc.SQLServerException: назначение
соединение должно быть соединением от Microsoft JDBC Driver для SQL
Сервер "
во время инициализации, как
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 используется 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 dir.
Кроме того, я удалил директорию dropins и поместил myApp в директорию apps, так как тег application
не будет работать, если приложение присутствует в директории dropins.
После всех этих изменений я получаю исключение
"com.ibm.ws.rsadapter.jdbc.WSJdbcConnection@8155ea2d не выполняет перенос
объекты типа com.microsoft.sqlserver.jdbc.SQLServerConnection. "
Кто-нибудь может выяснить, в чем решение или что мне все еще не хватает?