wildfly-swarm jpa/dadatasources yaml.xml

У меня есть вопрос. Я интегрирую EJB, JAX-RS, CDI, JPA и источники данных. Когда я интегрирую их в wildfly-swarm, возникают некоторые проблемы, которые не могут работать должным образом.

 yaml.xml:

        datasources:

          jdbc-drivers:
                    com.mysql:
                    driver-class-name: com.mysql.jdbc.Driver
                    xa-datasource-class-name: com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
                    driver-module-name: com.mysql

          data-sources:
                    PicketlinkDS:
                    driver-name: com.mysql
                    connection-url: jdbc:mysql://localhost:3306/testjpa
                    user-name: root
                    password: javacom2
                    jta : true
                    use-java-context: true 
                    min-pool-size : 8
                    max-pool-size : 20
                    pool-prefill  : true
                    connection-checker-class-name : org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker
                    background-validation : true
                    exception-sorter-class-name : org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter
                    connection-properties : CharacterEncoding/ UTF-8 UseUnicode/true

постоянство.xml:

<persistence-unit name="picketlink" transaction-type="JTA">
<jta-data-source>java:jboss/datasources/PicketlinkDS
</jta-data-source>

                <!-- 声明是否扫描jar文件中标注了@Enity类加入到上下文.若不扫描,则如下:(可选) -->
                <exclude-unlisted-classes>false</exclude-unlisted-classes>

                <properties>
                    <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
                    <property name="hibernate.query.substitutions" value="true=1, false=0" />
                    <property name="hibernate.dialect.storage_enginet"
                              value="innodb" />
                    <!-- JBoss/Wildfly JTA Transaction -->
                    <property name="hibernate.transaction.jta.platform"
                        value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" />

                    <property name="hibernate.cache.use_query_cache" value="false" />
                    <property name="hibernate.cache.use_second_level_cache"
                        value="false" />
                    <property name="hibernate.show_sql" value="true" />
                    <property name="hibernate.format_sql" value="false" />

                    <property name="hibernate.hbm2ddl.auto" value="create-drop" />
                    <property name="hibernate.hbm2ddl.import_files" value="initial_data.sql" />
                    <property name="hibernate.jdbc.batch_size" value="1000" />
                    <property name="hibernate.order_inserts" value="true" />
                    <property name="hibernate.order_updates" value="true" />
                    <property name="hibernate.connection.characterEncoding"
                        value="UTF-8" />
                    <property name="hibernate.current_session_context_class"
                        value="jta" />
                    <property name="wildfly.jpa.default-unit" value="true" />  
                </properties>
            </persistence-unit>

основной класс:

ClassLoader cl = Main.class.getClassLoader();
URL stageConfig = cl.getResource("project-development.yml");
Swarm swarm = new Swarm().withConfig(stageConfig);

// Create one or more deployments
JAXRSArchive deployment = ShrinkWrap.create(JAXRSArchive.class);
deployment.addAsWebInfResource(new ClassLoaderAsset("META-INF/persistence.xml", Main.class.getClassLoader()), "classes/META-INF/persistence.xml");
// Add resource to deployment
//deployment.addClass(PmsPersonService.class);
deployment.addClass(Person.class);
// deployment.addClass(EntityManagerProvider.class);
deployment.addAsWebInfResource(new ClassLoaderAsset("META-INF/load.sql", Main.class.getClassLoader()), "classes/META-INF/load.sql");
deployment.addResource(RestApplication.class);
deployment.addResource(HelloWorldEndpoint.class);
deployment.addAllDependencies();
swarm.start();
swarm.deploy(deployment);

исключение: «WFLYCTL0412: необходимые службы, которые не установлены:» => «jboss.naming.context.java.jboss.datasources.PicketlinkDS»],

idea , Беги о том, как бороться с этим исключением? Очень волнуюсь!


person htl    schedule 27.07.2017    source источник


Ответы (1)


Во-первых, я бы предложил удалить пользовательский метод main(), так как там нет ничего конкретного, чего нельзя было бы достичь с помощью упаковки Maven war.

Во-вторых, я думаю, что в вашем yaml отсутствует swarm: в качестве первого уровня, и вы также можете удалить создание драйвера JDBC и позволить WF Swarm сделать это за вас. Для этого я переключил driver-name на mysql, что будет работать до тех пор, пока зависимость драйвера JDBC для MySQL является частью проекта.

swarm:
  datasources:
    data-sources:
      PicketlinkDS:
        driver-name: mysql
        connection-url: jdbc:mysql://localhost:3306/testjpa
        user-name: root
        password: javacom2
        jta: true
        use-java-context: true 
        min-pool-size: 8
        max-pool-size: 20
        pool-prefill: true
        connection-checker-class-name: org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker
        background-validation: true
        exception-sorter-class-name: org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter
        connection-properties: CharacterEncoding/ UTF-8 UseUnicode/true
person Ken    schedule 27.07.2017
comment
Вы же не имеете в виду, что основная реализация, прямо под командной строкой mvn do? - person htl; 28.07.2017
comment
Вижу кто то говорил что под релиз jndi на нем. Но не знаете, как опубликовать? - person htl; 28.07.2017
comment
Привет, я работал в командной строке. По-прежнему сообщается о WFLYCTL0412: необходимые службы, которые не установлены: => [jboss.naming.context.java.jboss.datasources.PicketlinkDS] myhtls$ mvn package && java -jar target/coreApi-swarm.jar -Dswarm.project.stage= разработка - person htl; 29.07.2017
comment
Под main() я имел в виду удаление основного класса, который вы указали в вопросе. То, что это делает, может быть легче достигнуто с помощью обычной обработки Maven WAR. - person Ken; 31.07.2017