2014-08-30 2 views
3

У меня есть источник данных JDBC, определенный в WebSphere с именем 'jdbc/dataSource1'.
В моем приложении, основанном на Spring, я хочу получить источник данных, используя jndi lookup, но другим именем, например 'jdbc/dataSource2'.
Для достижения этой цели я создал IBM-веб-bnd.xml файл, в котором я определил связь следующим образом:Источник данных автоматической привязки

<resource-ref binding-name="jdbc/dataSource2" name="jdbc/dataSource1"/> 

Также я определил источник данных в файле web.xml следующим образом:

<resource-ref> 
    <description>some awesome datasource</description> 
    <res-ref-name>jdbc/dataSource2</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 

Решение работает только при развертывании с использованием IBM Web Console. Когда я пытаюсь установить его с помощью пользовательской Jython скрипта, используя wsadmin инструмента, я получаю следующее сообщение об ошибке:

ADMA0007E: A Validation error occurred in task Mapping resource references to re 
sources. The Java Naming and Directory Interface (JNDI) name is not specified f 
or reference binding jdbc/dataSource2 in module <application_name>.war" 

В wsadmin скрипте я использую AdminApp.install (path_to_ear, опцию), где переменные варианты содержат только варианты, касающиеся виртуальных хостов отображение.

Итак, вопрос в том, что я должен делать, поэтому WebSphere получит параметры сопоставления источника данных из файла ibm-web-bnd.xml?

+0

http://stackoverflow.com/questions/ 19096482/binding-container-managed-authentication-alias-with-datasource-using-jython-scri –

ответ

3

Попробуйте вызвать AppAdmin.install (path_to_ear) без параметров. Затем параметры считываются из файла bnd и нет ошибки проверки. И убедитесь, что файл ibm-web-bnd.xml находится в ушном файле.

UPDATE

Хорошо, я заметил свою ошибку. В вашем файле связывания должно быть наоборот:

<resource-ref name="jdbc/MyRef" binding-name="jdbc/JNDI" /> 

так в вашем случае имя является datasource2 и связывание jndiname - так DataSource1:

<resource-ref binding-name="jdbc/dataSource1" name="jdbc/dataSource2"/> 
+1

Я пробовал, я дал мне ошибку, которую я поставил в вопрос. Что касается 'ibm-web-bnd.xml' - в моем приложении он находится в файле war внутри файла уха. Я делаю это правильно? :) – crew4ok

+0

Он должен быть в папке WEB-INF, рядом с вашим web.xml – Gas

+1

@ crew4ok у вас есть ошибка в файле привязки, см. Мой обновленный ответ. – Gas

2

Вам необходимо добавить MapResEnvRefToRes вариант AdminApp.install позвонить, чтобы указать ссылку на ресурс ресурса. Проверить эту ссылку для более:

http://www-01.ibm.com/support/knowledgecenter/api/content/SSEQTP_8.5.5/com.ibm.websphere.nd.multiplatform.doc/ae/rxml_taskoptions.html#rxml_taskoptions__cmd56

Самый быстрый способ сделать это, чтобы включить «команду протоколирование помощи» и продолжить установку через AdminConsole. В журнале поддержки команд вы найдете точный синтаксис AdminApp.install для развертывания и сопоставления ссылок ресурсов на реальные ресурсы.

режим Ad(я вклад в проект ОСС нижеперечисленным)

Если рассмотреть более сложный проект автоматизации (а не только один установки приложения), то вы можете найти WDR библиотеку полезной. С помощью WDR вы можете экспортировать все свои настройки приложения в файл манифеста, который включает в себя настройки MapResEnvRefToRes. Затем вы можете развернуть приложение на основе этого манифеста.

+1

Я рассматривал варианты карты * как обходной путь, так как это не похоже на дублирование определения источника данных? Я определил его уже в своем web.xml и в ibm-web-bnd.xml-файлы, не может ли WebSphere определить сопоставление данных без меня, указав его дважды (я имею в виду в ibm-web-bnd.xml И в сценарии развертывания)? – crew4ok

+1

Кстати, библиотека, которую вы упомянули, кажется мне очень полезной, но поскольку я могу ее получить, она состоит из множества файлов (которые, например, противоположны одному файлу в wsadminlib.py), и я пытаюсь оставить сценарий развертывания как маленький возможно, потому что он должен быть скопирован поверх ssh во многих экземплярах WS. – crew4ok

Смежные вопросы