我需要一些帮助来解决为什么我的持久性单元没有使用Hibernate加载到Karaf中的问题。日志文件报告
Bundle com.vogelware.simple.remote.combined is waiting for dependencies [(&(&(org.apache.aries.jpa.proxy.factory=true)(osgi.unit.name=person)(objectClass=javax.persistence.EntityManagerFactory))].
我认为问题是EntityManagerFactory服务未运行。根据SO消息Jpa-hibernate错误,启动服务时所有必需的服务都在运行。见下文。
我尝试在hibernate bundles之前启动我的持久性bundle,但是得到了相同的行为。
下面列出了数据源、持久性和persistence.xml.的蓝图
关于如何运行这个简单的示例有什么建议吗?
已安装版本的功能和捆绑包
karaf@root> feature:list -i
Name | Version | Installed | Repository | Description
-------------------------------------------------------------------------------------------------------------------------
standard | 3.0.1 | x | standard-3.0.1 | Karaf standard feature
config | 3.0.1 | x | standard-3.0.1 | Provide OSGi ConfigAdmin support
region | 3.0.1 | x | standard-3.0.1 | Provide Region Support
package | 3.0.1 | x | standard-3.0.1 | Package commands and mbeans
http | 3.0.1 | x | standard-3.0.1 | Implementation of the OSGI HTTP Service
kar | 3.0.1 | x | standard-3.0.1 | Provide KAR (KARaf archive) support
ssh | 3.0.1 | x | standard-3.0.1 | Provide a SSHd server on Karaf
management | 3.0.1 | x | standard-3.0.1 | Provide a JMX MBeanServer and a set of MBeans in K
transaction | 1.0.1 | x | enterprise-3.0.1 | OSGi Transaction Manager
jpa | 1.0.1 | x | enterprise-3.0.1 | OSGi Persistence Container
hibernate | 4.3.1.Final | x | enterprise-3.0.1 | Hibernate 4.3.x JPA persistence engine support
jndi | 3.0.1 | x | enterprise-3.0.1 | OSGi Service Registry JNDI access
pax-jetty | 8.1.14.v20131031 | x | org.ops4j.pax.web-3.1.0 | Provide Jetty engine support
pax-http | 3.1.0 | x | org.ops4j.pax.web-3.1.0 | Implementation of the OSGI HTTP Service
karaf@root> bundle:list
START LEVEL 100 , List Threshold: 50
ID | State | Lvl | Version | Name
---------------------------------------------------------------------------------------
86 | Active | 80 | 3.0.1 | Apache Karaf :: JNDI :: Command
114 | Active | 80 | 2.7.7.5 | Apache ServiceMix :: Bundles :: antlr
115 | Active | 80 | 1.8.2.2 | Apache ServiceMix :: Bundles :: ant
116 | Active | 80 | 1.6.1.5 | Apache ServiceMix :: Bundles :: dom4j
117 | Active | 80 | 1.14.1.1 | Apache ServiceMix :: Bundles :: serp
118 | Active | 80 | 0.9.0 | ClassMate
119 | Active | 80 | 3.18.1.GA | Javassist
120 | Active | 80 | 1.0.2.Final | JACC 1.4 API
121 | Active | 80 | 0 | wrap_mvn_org.jboss_jandex_1.1.0.Final
122 | Active | 80 | 3.1.4.GA | JBoss Logging 3
123 | Active | 80 | 4.0.4.Final | hibernate-commons-annotations
124 | Active | 100 | 4.3.1.Final | hibernate-core
125 | Active | 100 | 4.3.1.Final | hibernate-entitymanager
126 | Active | 100 | 4.3.1.Final | hibernate-osgi
127 | Active | 80 | 10.10.1000001.1458268 | Apache Derby 10.10
128 | Active | 80 | 0.0.0 | derby-datasource.xml
129 | GracePeriod | 80 | 0.1.0.201411290933 | Remote with JPA
130 | Active | 80 | 0.1.0.201411280737 | Simple Model API
为EntityManager运行服务
karaf@root(service)> list javax.transaction.TransactionManager
[org.apache.aries.transaction.AriesTransactionManager, javax.transaction.TransactionManager, javax.transaction.TransactionSynchroniz
ationRegistry, javax.transaction.UserTransaction, org.apache.geronimo.transaction.manager.RecoverableTransactionManager]
------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------
service.id = 662
Provided by :
Apache Aries Transaction Manager (93)
Used by:
Aries JPA Container Managed Contexts (91)
karaf@root(service)> list DataSource
[javax.sql.DataSource]
----------------------
osgi.jndi.service.name = jdbc/MotorDB
osgi.service.blueprint.compname = MotorDB
service.id = 713
Provided by :
Bundle 130 (my datasource bundle)
@root(service)> list PersistenceProvider
[javax.persistence.spi.PersistenceProvider]
-------------------------------------------
javax.persistence.provider = org.hibernate.jpa.HibernatePersistenceProvider
service.id = 708
Provided by :
hibernate-osgi (125)
Peristence XML
<?xml version="1.0" encoding="UTF-8" ?>
<persistence version="2.0"
xsi:schemaLocation="
http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<persistence-unit name="person" transaction-type="JTA">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/MotorDB)</jta-data-source>
<class>com.vogelware.simple.model.impl.jpa.Person</class>
<class>com.vogelware.simple.model.impl.jpa.Address</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
</properties>
</persistence-unit>
</persistence>
数据源蓝图
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
default-activation="eager">
<bean id="MotorDB" class="org.apache.derby.jdbc.EmbeddedDataSource">
<property name="databaseName" value="D:\dev\projects\EASA-DB\motordb" />
</bean>
<service ref="MotorDB" interface="javax.sql.DataSource">
<service-properties>
<entry key="osgi.jndi.service.name" value="jdbc/MotorDB" />
</service-properties>
</service>
</blueprint>
持久性beans
<?xml version="1.0" encoding="UTF-8"?>
<blueprint default-activation="eager"
xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jpa="http://aries.apache.org/xmlns/jpa/v1.0.0" xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.0.0"
xsi:schemaLocation="
http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0
http://www.w3.org/2001/XMLSchema-instance http://www.w3.org/2001/XMLSchema-instance
http://aries.apache.org/xmlns/jpa/v1.0.0 http://aries.apache.org/xmlns/jpa/v1.0.0
http://aries.apache.org/xmlns/transactions/v1.0.0 http://aries.apache.org/xmlns/transactions/v1.0.0 ">
<bean id="personService" class="com.vogelware.simple.remote.jpa.PersonEntityImplJpa">
<jpa:context unitname="person" property="entityManager" />
<tx:transaction method="*" value="Required" />
</bean>
<service ref="personService"
interface="com.vogelware.simple.service.IPersonEntity">
<service-properties>
<entry key="osgi.jndi.service.name" value="hibernate/con_managed_personService" />
</service-properties>
</service>
</blueprint>
您很可能在aries jpa中遇到错误。你能试试karaf 3.0.2吗?它包括更新的aries jpa功能。您还应该检查是否只加载了JPA2.1API。如果加载了JPA2.0和2.1 API,它将无法工作。
问题内容: 我正在尝试实现一个简单的DAO。我有道: 和一个实体: 这是appContext.xml: 除非我在之后调用或插入未执行。这是为什么?如果删除,则刷新时会出现“没有正在进行的事务”的错误,但是如果删除刷新,则不会插入到数据库中。 问题答案: 之所以这样工作是因为您使用标记了事务为只读。 如您所见,由于您仍然可以通过手动调用保留更改,因此它不会使您的事务实际上是只读的。但是,它在事务结束
问题内容: 如果设置了FlushMode.AUTO,当我调用session.close()时,Hibernate会刷新我更新的持久对象吗? 我知道session.close()通常不会刷新会话,但是我不确定FlushMode.AUTO如何影响它。 从文档中: FlushMode.AUTO 有时会在执行查询之前刷新会话,以确保查询永远不会返回陈旧状态。这是默认的刷新模式。 这是否意味着我有时可以在会
问题内容: 我有一个Express 4应用程序设置来进行会话。 当我提交表单时,它将user_id保存到req.session中。但是,当我重新启动服务器时,会话消失了。 为什么不持续?我是否缺少某些配置? 问题答案: express-session的默认会话存储是MemoryStore,顾名思义,该存储仅将会话存储在内存中。如果需要持久性,则有许多可用于Express的会话存储。一些例子: co
问题内容: 从列表中删除项目时遇到麻烦。该列表是在超类中定义的,但是Hibernate批注将应用于子类中的属性访问器。超类中有两种方法可以操作列表。“添加”方法可以正常工作,但“删除”不能持久保存更改。我检查了我的Cascade设置,似乎一切正确。我在做一些不可能的事情吗?如果不是,我做错了什么吗? 这是我的课程: 我按如下方式使用TemporalAsset类的实例(请注意,我仅使用“refres
问题内容: 在CentOS 6.3上与Python 2.7,Apache + mod_wsgi一起运行 当我在localhost上时,一切正常。但是,当我在Azure中的vm上运行代码时,我看不到会话信息在页面之间保留。 基本上我的看法是: 打印输出为: 我对apache的wsgi配置是: 我设置了secret_key: 我尝试同时设置SERVER_NAME,但这无济于事: 关于如何进行更多调试的
问题内容: 我有一个托管bean,其中包含当前页面的实体对象列表。在我创建一个新对象并在事务中使用persist()将其持久保存到数据库之后;在另一个事务中,当我调用merge时(由于该实体由于先前的事务提交而处于分离状态);实体管理器无法在持久性上下文中找到对象,并向数据库抛出选择查询。我是否缺少某些东西,或者是正常行为? 更新:当我使用mysql数据库和自动生成的ID列时,存在上述问题。当我在