Vla*_*nko 1 deployment persistence jpa kundera wildfly
在工件部署的最开始,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>
Run Code Online (Sandbox Code Playgroud)
但是 wildfly 会验证持久性单元并调用KunderaPersistence.createContainerEntityManagerFactory。昆德拉反过来检查与 localhost:9165 的连接并失败。所以部署也失败了。
任何解决方法都是可以接受的。
希望我找到了解决方案。需要添加
<property name="jboss.as.jpa.managed" value="false"/>
Run Code Online (Sandbox Code Playgroud)
进入persistence.xml。Wildfly 将在启动时忽略持久性单元。
并且可以通过手动初始化它
Persistence.createEntityManagerFactory("cassandra_unit", kunderaProperties)
Run Code Online (Sandbox Code Playgroud)
并应用所有必需的覆盖逻辑。
希望这会挽救某人的生命)
org.jboss.as.jpa.config.Configuration在wildfly-jpajar内的类中播种更多特定于野蝇的属性
| 归档时间: |
|
| 查看次数: |
1673 次 |
| 最近记录: |