2015-09-14 4 views
0

Я работаю с JBoss wildfly 9. У меня есть поставщик развертывается как модуль в: папкуEntityManager не вводят в модуль JBoss

wildfly > modules > com > mycompany > myprovider 

. Тогда у меня есть проект jpa с написанием и чтением диаграммы DAO внутри моей базы данных. Я хочу обработать транзакцию DAO с использованием JTA, но для того, чтобы сделать класс DAO для myprovider, мне нужно также поставить проект DAO JPA внутри каталога модулей.

Теперь сталкивается с реальной проблемой: кажется, я не могу использовать @PersistenceContext аннотации впрыснуть лицо managare в мою EntityManager varible:

@PersistenceContext(unitName = "KAS-Mapping") 
private EntityManager entityManager; 

это мой persistence.xml

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.1" 
xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> 
    <persistence-unit name="KAS-Mapping"> 
     <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 
      <class>my.class.persistence.model.MapGroup</class> 
      <class>my.class.persistence.model.MapUser</class> 
      <properties> 
       <property name="javax.persistence.provider" value="org.hibernate.ejb.HibernatePersistence" /> 
       <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/> 
       <property name="javax.persistence.provider" value="org.hibernate.jpa.HibernatePersistenceProvider"/> 
       <property name="javax.persistence.transactionType" value="JTA"/> 
       <property name="javax.persistence.jtaDataSource" value="java:jboss/datasources/MyDS"/> 

     </properties> 
    </persistence-unit> 
</persistence> 

Почему Я не могу вставить контекст в модули jar? Что я не так?

ответ

0

Модули WildFly/JBoss не являются концепцией Java EE, поэтому нецелесообразно ожидать ввода ресурсов, контекстов постоянства или компонентов CDI для работы через границы модулей.

Вы попробовали meta-inf="import" на вашей зависимости от модуля? См. https://docs.jboss.org/author/display/WFLY9/Class+Loading+in+WildFly

0

Почему ваш провайдер зависит от вашего уровня DAO? Это плохая модель, которую вы действительно должны избегать. Теперь вы также помещаете свой persistence.xml в свои модули?

Вы пытались использовать стандартные теги persistence.xml, а не свойства?

<persistence-unit name="KAS-Mapping" transaction-type="JTA"> 
    <jta-data-source>jboss/datasources/MyDS</jta-data-source> 
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 

    <class>my.class.persistence.model.MapGroup</class> 
    <class>my.class.persistence.model.MapUser</class> 
    <properties> 
     <property name="javax.persistence.provider" value="org.hibernate.ejb.HibernatePersistence" /> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/> 
    </properties> 
</persistence-unit> 
+0

Почему вы считаете, что это плохой образец? Мне нужен доступ к базе данных togheter с другим уровнем приложения/приложения. Не следует ли бесполезно воспроизводить то же самое dao для всех из них? – Alex

+0

Я думаю, мне нужно будет узнать больше о том, что делает ваш провайдер. Поставщик не должен зависеть от дао, хотя, если есть какая-либо зависимость, он должен быть провайдером <-dao <-applicaiton только одним способом. Более типичным способом сделать это вместо развертывания модуля является создание вашего dao в виде файла с версией .jar, а затем включить его в ваши различные файлы .war. – teacurran

+0

Это поставщик ключей и нужен для аутентификации puropse. Дао используется для синхронизации файла свойств keycloak с моей собственной базой данных пользователей. Ограничение заключается в том, что keycloak spi можно развернуть как модуль внутри jboss, поэтому он обрабатывается как модуль jboss, то есть отдельный баннер с собственной областью изоляции. Кто-то сказал мне, что модули jboss не интересуются контекстом сервера приложений, поэтому невозможно сделать инъекцию – Alex

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