EJB сущность бобов JAR & RESTeasy - PullRequest
0 голосов
/ 19 мая 2011

У меня проблемы с настройкой компонентов управления данными для правильного подключения к MySQL.Вот мои настройки:

JBOSS: 6

UBUNTU: 11.04

EJB: 3.1

Я сейчас пытаюсь получить доступбины сущностей через удаленный вызов JNDI к сессионному бину JARed в корне моего файла EAR.

Мои бины сущности правильно отображаются в мою базу данных и работают в одном файле EAR, однако я хочу использовать те же бины сущности вдругой EAR-файл в том же контейнере, поэтому я JARed мои бины сущности, и я перетаскиваю их во второй EAR-файл, используя мой сценарий сборки.Я извлекаю тот же файл persistance.xml, что и мой первый EAR-файл, и он указывает на тот же XML-источник данных в корневом каталоге моего развертывания.Я могу определить свой контекст персистентности и получить доступ к своим компонентам без ошибок, и я могу скомпилировать и развернуть свой сервер JBoss без каких-либо исключений.Однако я получаю эту ошибку, когда пытаюсь получить доступ к бинам сущностей после развертывания контейнера:

java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: User is not mapped [SELECT u FROM User u WHERE u.accountId=:accountId]

Я использую этот запрос:

List<User> users = entityManager.createQuery("SELECT u FROM User u WHERE u.accountId=:accountId")
        .setParameter("accountId", accountId)
        .getResultList(); 

Может кто-нибудь сказать мне, если:

  1. существует проблема с компонентными компонентами JARing
  2. нужна ли RESTeasy специальная конфигурация для обработки объектных компонентов
  3. возможно ли даже использоватьБины сущностей JARed
  4. может возникнуть конфликт конфигурации, если я получаю доступ к одному и тому же источнику данных, используя два отдельных экземпляра одинаковых бинов сущности в одном контейнере

Заранее спасибоза любую помощь с этим.Я действительно застрял.

ДОБАВЛЕНО (20/05/2011):

Итак, теперь я объединил свои сущности и сессионные компоненты в один jar и изменил файл persistence.xml, поэтому включил autoобнаружить свойство, предложенное Наяном ниже:

<property name="hibernate.archive.autodetection" value="class"/>

, но безрезультатно.Я зарегистрировал JAR в своем файле application.xml и добавил JAR к пути к классам в моем сценарии сборки.

Имеет ли смысл помещать файл JAR в корень каталога развертывания и пытаться получить доступ к немуэто оттуда?

Ответы [ 2 ]

0 голосов
/ 02 июня 2011

Проблема была с расположением моего файла persistence.xml. У меня есть файл persistence.xml в JAR с сессионными компонентами, а не с объектными компонентами, где это было необходимо. Проблема решена!

0 голосов
/ 19 мая 2011

В вашем EAR кажется, что сущности, упакованные в jar, не распознаются, также проверьте, присутствует ли jar в classpath.

Попробуйте добавить <property name="hibernate.archive.autodetection" value="class"/> в файл persistence.xml.

Иначе, попробуйте включить класс для постоянного модуля.

<persistence-unit name="unitName">
    <class>com.package.User</class>
    ...
 </persistence-unit>
...