Создайте источник данных db2 в профиле свободы WAS

Я разрабатываю для Websphere 8.5 (для z/OS), но я хотел бы использовать Liberty для локальной разработки на моем компьютере с Windows. Я не могу заставить источник данных работать.

Я создал следующую запись в Server.xml для определения источника данных.

<library id="DB2JCC2Lib">
    <fileset dir="C:\Program Files\IBM\SQLLIB\java"/><!--includes="db2jcc.jar db2jcc_license_cu.jar db2jcc_license_cisuz.jar"-->
</library>

<dataSource id="xxdb" jndiName="jdbc/xxxx" type="javax.sql.ConnectionPoolDataSource">
    <jdbcDriver libraryRef="DB2JCC2Lib" id="db2-driver" javax.sql.ConnectionPoolDataSource="com.ibm.db2.jcc.DB2ConnectionPoolDataSource"/>

    <properties.db2.jcc driverType="2" databaseName="xxxx" portNumber="50000" user="xxxx" password="{aes}xxxx"/>
</dataSource>

Когда мое приложение инициализируется, я получаю следующее сообщение об ошибке:

[jcc][4038][12241][3.61.65] Исключение T2LUW: SQL30081N Kommunikationsfehler. Протокол связи Vervendetes: "TCP/IP". Verwendete Kommunikations-API: "РАЗЪЕМЫ". Должность, an der Fehler erkannt wurde: «127.0.0.1». Übertragungsfunktion, die den Fehler festgestellt hat: «подключение». Protokollspezifische(r) Fehlercode(s): "10061", "", "". SQLSTATE=08001

Я думаю, что это сообщение исходит от драйвера db2, к сожалению, я пока не нашел способа изменить его на английский язык; но я думаю, что это понятно для англоговорящих.

У меня есть источник данных системы ODBC, который подключается к уровню обслуживания 015 DB2 v10 для z/OS. Моя локальная установка DB2 Connect — v9.7.300.3885.

В моей обычной Websphere мой рабочий источник данных имеет тип драйвера 2, имя базы данных установлено на имя odbc и номер порта 50000. Имя сервера не установлено (пусто). Путь к классам и класс реализации такие же, как и в server.xml.

Я пробовал все, что мог найти, есть идеи?

Примечание. Я не могу вносить изменения на сервере db2, и нет проблем с подключением к базе данных с помощью других инструментов и обычной WebSphere. Также имя сервера в конфигурации websphere пусто, задано только имя базы данных. Когда я попытался установить имя сервера в server.xml на localhost или сервер db2, я получил тот же результат.

Любая помощь приветствуется!

Изменить: обновлено с правильной информацией о версии

Редактировать 2: Пока это работает, мне все равно, какой тип (2 или 4) драйвера jdbc используется. Я просто хочу еще раз указать, что тип 2 в настоящее время работает на моей машине. Я попробовал это с типом 4 и получил следующее сообщение:

[jcc][t4][2043][11550][3.61.65] Исключение java.net.ConnectException: ошибка при открытии сокета на сервер xxx/xxx.30.3.34 через порт 50 000 с сообщением: Отказано в подключении: подключение. ERRORCODE=-4499, SQLSTATE=08001 DSRA0010E: состояние SQL = 08001, код ошибки = -4499


person styx    schedule 25.05.2016    source источник
comment
1. Для z/OS не существует db2 v9.7. 2. Не следует использовать драйвер типа 2. 3. Сообщение об ошибке означает, что вы подключаетесь к своему локальному компьютеру (127.0.0.1), а не к фактическому серверу базы данных, поэтому ваше определение DSN, вероятно, неверно.   -  person mustaccio    schedule 25.05.2016
comment
1 Моя ошибка, я обновил сообщение правильной версией 2 Как я уже сказал в своем сообщении, моя эталонная установка использует тип 2 и работает нормально. Я только что попробовал тип 4 и получил аналогичное сообщение об ошибке 3. Когда я устанавливаю свойство serverName для db2server, я получаю то же самое сообщение, но с IP-адресом сервера вместо localhost. Как я уже сказал, DSN работает нормально, потому что я использую его из своего локального приложения Websphere и из AQT (инструмент sql). В рабочей конфигурации в Websphere имя сервера установлено пустым, поэтому я его пропустил (я также читал в Интернете, что вы не должны устанавливать его при использовании драйвера типа 2)   -  person styx    schedule 25.05.2016
comment
Ошибки указывают на то, что экземпляр DB2 не работает на вашем локальном компьютере через порт 50000 или что брандмауэр запрещает соединения через этот порт.   -  person mustaccio    schedule 25.05.2016
comment
Экземпляр db2 работает на удаленном компьютере с z/OS. Локально у меня есть источник данных ODBC. Мой локальный источник данных websphere использует драйвер типа 2 для подключения к удаленному серверу z/OS db2 (через локальный источник данных ODBC). Проблем с сетью/брандмауэром нет, соединение на этом компьютере работает нормально (источник данных websphere и инструмент SQL). В Liberty у меня не работает ни тип 2, ни тип 4.   -  person styx    schedule 25.05.2016


Ответы (1)


Извините, предыдущий пост съел мой xml. Повторная попытка:

Вам понадобится источник данных типа 4 для подключения к удаленному серверу базы данных, т.е.

<dataSource id="xxdb" jndiName="jdbc/xxxx" type="javax.sql.XADataSource">
<properties.db2.jcc driverType="4" serverName="the.db2.host.com" portNumber="50000" user="xxxx" password="xxxx" databaseName="LOC1" currentSQLID="SYSA"/>
<jdbcDriver libraryRef="DB2JCC2Lib">
</dataSource>

Тип 2 предназначен только для локального подключения z/OS к ресурсу базы данных. Ваша Windows, удаленная от z/OS, требует, чтобы вы использовали соединение типа 4. Тип 4 требует указания как serverName, так и portNumber. Они не применимы к соединению типа 2.

person Evan    schedule 25.05.2016
comment
Удалите предыдущую попытку ответа. Вы должны были просто отредактировать его в первую очередь. - person mustaccio; 25.05.2016
comment
Спасибо, но, как я уже сказал, я уже использую драйвер типа 2 с моей машины Windows для подключения к серверу db2 на z/os через локальный источник данных ODBC. Он отлично работает в веб-сфере, я просто хочу использовать Liberty. Также я попробовал тип 4 и получил похожее сообщение об ошибке (см. мой отредактированный пост). Драйвер типа 2 — это установка, установленная на всех компьютерах разработчиков (в качестве источника данных веб-сферы), я не знаю, поддерживается ли/разрешен ли тип 4 в этой среде. - person styx; 25.05.2016
comment
Хорошо, я должен изучить это. - person Evan; 25.05.2016
comment
Что ж, соединение типа 4, прямо указывающее на z/OS, должно работать (в обход локального ODBC). - person Evan; 25.05.2016
comment
db2 connect имеет помощника по конфигурированию; я просмотрел настройки и увидел, что там используется другой порт. Я попробовал тип 4 с этим портом, и это сработало. Этот порт даже не отображается при сканировании портов nmap, странно (надеюсь, меня за это не уволят). Я приму ваш ответ, так как он заставил меня искать в нужном месте :) спасибо - person styx; 25.05.2016