2015-07-25 8 views
2

Я стараюсь следовать руководству this и в то же время адаптировать его для работы в Websphere 8.5.5 с использованием по умолчанию Websphere JPA (OpenJPA).Взаимосвязь между persistence.xml datasource и web.xml/ibm-web-bnd.xml resource-ref

Я создал проект в Eclipse и использовал WAS для разработчиков.

Первоначально, при запуске приложения, я получал сообщения об ошибках, ресурсосбережение исх не доступны (не помню точное сообщение об ошибке)

После некоторых исследований и много методом проб и ошибок, я получил приложение для работы. Мне пришлось сделать (или сделать) изменения в web.xml и ibm-web-bnd.xml, чтобы добавить ref-ref в источник данных, определенный в файле persistence.xml (не помните, если бы я изменил что-либо еще в пробной версии и ошибка).

Но теперь у меня есть следующие вопросы

  • Какие изменения, которые на самом деле должны были быть сделаны, чтобы сделать работу в приложений?

  • Какова связь между источником данных в persistence.xml и ресурсо-ref в web.xml/ibm-web-bnd.xml?

  • В настоящее время это выполняется в динамическом веб-проекте. Какие еще изменения мне нужно сделать, если я хочу создать JPA в проекте EJB или проект JPA ?

  • В этом учебном пособии JPA находится в динамическом веб-проекте. Какие изменения делают Мне нужно сделать, если я создам проект проекта ejb/JPA и хочу, чтобы выполнял приложение таким образом, вместо определения JPA в веб-проекте ?

  • Есть ли какая-либо техническая или другая документация, которая объясняет это?

ответ

2

Я попытаюсь прояснить некоторые вопросы.

Datasource обычно определяется и настраивается в файлах конфигурации сервера. Он может быть определен в приложении (через web.xml или annotations), но я бы избегал этого, так как он является менее гибким и жестким кодом базы данных в самом приложении.

Источник данных доступен для приложения через JNDI-имя, допустим, jdbc/myDS.

В persistence.xml вы можете указать имя JNDI источника данных, которое будет использоваться вашим приложением JPA. Имя JNDI может быть либо в глобальном имени (в этом случае оно должно соответствовать имени JNDI, определенному на сервере, поэтому в нашем случае jdbc/myDS) или в качестве имени ссылки ресурса (например, java: comp/env/jdbc/myDSReference) ,

Если вы используете ссылку на ресурс, она обеспечивает лучшую гибкость, поскольку она не должна соответствовать имени JNDI, определенному на сервере, однако вам нужно будет определить эту ссылку в своем приложении и обеспечить ее привязку.

Есть несколько способов определения ссылок и связывания:

  • Аннотация
    Используйте @Resource аннотацию в сервлете чтобы определить имя ссылки и привязку с помощью атрибута поиска: дескриптор

    @Resource(type=DataSource.class, name="jdbc/myDSReference", lookup="jdbc/myDS") 
    
  • развертывания
    Используйте web.xml, чтобы получить ссылку на источник через <resource-ref>

ibm-mmm-bnd.xml файл (где ммм может быть web в случае веб-модуля или ejb-jar в случае модуля EJB) является обязательным файл, который может обеспечить соответствие между вашими ссылками и глобальные имена JNDI, определенных на сервере , Вы можете использовать его вместо атрибута lookup (вы должны использовать его в приложениях pre Java EE 6, так как тогда не было атрибута поиска).

Эта привязка также может быть определена и изменена с помощью веб-административной консоли WebSphere во время или после установки приложения или через скрипты wsadmin.

В случае проекта EJB - если вы хотите использовать ссылки, вам нужно будет определить их как ссылку на ресурс для любого компонента, который получит доступ к EntityManager. Опять же через аннотацию или дескриптор развертывания.

+0

Спасибо за газ, для объяснения. – adbdkb

1

Я бы предложил использовать профиль Websphere Liberty Profile, 8.5.5.6 (текущая версия).

Некоторые пояснения (которые вы уже могли бы знать):

web.xml содержит ваши сервлеты, отображения, инициализации Params, слушателей, безопасность, источник данных и т.д.

persistence.xml требуется при работе с единицей постоянства. Он определяет конфигурацию (возможности доступа к JPA, уровень изоляции, уровни блокировки и т. Д.). Он содержит классы сущностей и используемый источник данных.

ibm-web-bnd.xml содержит сопоставления логических ресурсов. Datasource, Jms bindings, Ejb bindings ...

Я бы порекомендовал IBM redbooks, например.WebSphere Application Server V8.5 Administration and Configuration Guide for the Full Profile

Сопоставление ссылки ресурсов между web.xml и JNDI-именем с сервера приложений может быть сохранено в 2-х местах. Вы можете определить это сопоставление во время разработки в файле привязки - в случае, если веб-модуль хранится в файле WEB-INF/ibm-web-bnd.xml. Если вы используете RAD, вы можете создать файл привязки, щелкнув правой кнопкой мыши на веб-проекте JEE -> генерировать дескриптор развертывания Bindings. И тогда в дескрипторе вы помещаете что-то вроде этого: Затем он используется во время установки. Если вы не указали bindig через файл, вы можете сделать это во время установки приложения, например. через консоль. Затем создается файл привязки и сохраняется в: PROFILE_ROOT \ installedApps \ cellName \ Application.ear \ WebModule.war \ WEB-INF \ ibm-web-bnd.xml и в PROFILE_ROOT \ config \ cells \ cellName \ applications \ Application.ear \ развертываний \ Application \ WebModule.war \ WEB-INF \ Ibm-веб-bnd.xml

developerworks forum

+0

Спасибо. Мой вопрос больше связан с определением resource-ref в web.xml и ibm-web-bnd.xml для сопоставления данных с данными между persistence.xml, определенными jta-datasource и resource-ref в этих двух файлах, и должны ли эти определения ДОЛЖНЫ существовать во всех трех xml-файлах JPA для работы в динамическом веб-приложении? – adbdkb

+0

Я уверен, что вам не нужен источник данных в web.xml, поиск будет выполняться непосредственно против сервера приложений. У меня было динамическое веб-приложение, созданное всего 3 дня назад. Без источника данных в web.xml он работал нормально. Источник данных был настроен для конфигурации WLP. Файл привязки важен, если вы не настроили его в консоли администратора, так что часть также может быть оставлена ​​без внимания. Единственный, который нужно настроить в вашем случае, - это persistence.xml – MrSimpleMind