所以我松散地遵循 Amdatu JPA 视频教程,我几乎让它工作......
乍一看一切似乎都很好,只有 DataSource 服务没有解决,我不知道为什么。在我看来,它已注册。那么我将如何调试这个,应该有一些方法来调试这个,对吧?开始时,我在味精日志中有这个:
[CM Configuration Updater (Update: pid=org.amdatu.jpa.datasourcefactory.dd8bf61e-01b1-4732-9b0c-bba96e1f5aff)] DEBUG org.amdatu.jpa.datasourcefactory - ServiceEvent REGISTERED - [javax.sql.DataSource] - org.amdatu.jpa.datasourcefactory
“dm”的输出:
[5] org.amdatu.jpa.datasourcefactory
org.osgi.service.cm.ManagedServiceFactory(service.pid=org.amdatu.jpa.datasourcefactory) registered
org.osgi.service.log.LogService service optional available
javax.sql.DataSource(validationQuery=SELECT 1,name=ManagedDS,driverName=postgresql,serviceName=ManagedDS) registered
org.osgi.service.log.LogService service optional available
org.osgi.service.jdbc.DataSourceFactory (osgi.jdbc.driver.class=org.postgresql.Driver) service required available
javax.transaction.TransactionManager service required available
所以上面的输出应该说明DataSource已经注册了吧?
[31] org.amdatu.jpa.extender
org.amdatu.jpa.extender.PersistenceBundleManager() registered
org.osgi.service.log.LogService service optional available
javax.persistence.spi.PersistenceProvider service required available
active (Meta-Persistence=*) bundle optional available
java.lang.Object(bundle=32) registered
org.osgi.service.log.LogService service optional available
org.amdatu.jpa.extender.PersistenceBundleManager service required available
org.amdatu.jpa.extender.PersistenceUnitInfoImpl@7175ee92 unregistered
javax.persistence.spi.PersistenceProvider (javax.persistence.provider=org.eclipse.persistence.jpa.PersistenceProvider) service required available
javax.sql.DataSource (name=ManagedDS) service required unavailable
进一步依赖于 DataSource 的一切显然都没有解决
javax.persistence.EntityManager service required unavailable
所以我不明白为什么 DataSource 没有在那里解决?我检查了一下,似乎它是使用属性名称 = ManagedDS 注册的,但我对 Felix DS 很陌生,所以我不太确定这里发生了什么。
我也尝试添加这个
@ServiceDependency(filter="(name=ManagedDS)")
private volatile DataSource ds;
到我的一项服务,但这也无法解决。感谢您对此提供的任何帮助,但我最感激的是一种自己调试和解决此问题的方法。