Wildfly:禁用持久性单元查找

时间:2015-07-13 22:23:07

标签: jpa deployment persistence wildfly kundera

在工件部署的最开始,Wildfly验证persistence.xml中描述的所有持久性单元。负责类的一个是来自org.jboss.as.jpa.processor.PersistenceUnitServiceHandler库的wildfly-jpa

主要问题:是否有可能以某种方式禁用此验证?或者只是将持久性单位标记为忽略?

详细说明根本原因:

我们将构建无环境的工件。因此,persistence.xml中的配置将在最初的Java代码中被覆盖。默认配置是虚拟的,如下所示:

<persistence-unit name="cassandra_unit" transaction-type="RESOURCE_LOCAL">
    <provider>com.impetus.kundera.KunderaPersistence</provider>
    <class>sample.model.Manager</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
        <property name="kundera.nodes" value="localhost"/>
        <property name="kundera.port" value="9165"/>
        <property name="kundera.username" value="test"/>
        <property name="kundera.password" value="test"/>
        <property name="kundera.keyspace" value="keyspace"/>
        <property name="kundera.dialect" value="cassandra"/>
        <property name="kundera.client.lookup.class" value="com.impetus.kundera.client.cassandra.dsdriver.DSClientFactory"/>
    </properties>
</persistence-unit>

但是wildfly会验证持久性单位并调用KunderaPersistence.createContainerEntityManagerFactory。昆德拉在其中检查与localhost:9165的连接并失败。因此部署也失败了。

任何解决方法都可以接受。

1 个答案:

答案 0 :(得分:4)

希望我找到解决方案。 需要添加

<property name="jboss.as.jpa.managed" value="false"/>

进入persistence.xml。 Wildfly将在启动时忽略持久性单元。

可以通过

手动初始化它
Persistence.createEntityManagerFactory("cassandra_unit", kunderaProperties)

并应用所有必需的覆盖逻辑。

希望这会挽救某人的生命)

org.jboss.as.jpa.config.Configuration jar

内的wildfly-jpa类中播种更多特定于野生蝇的属性