首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Amdatu (bndtools,felix )没有解析DataSource服务

Amdatu (bndtools,felix )没有解析DataSource服务
EN

Stack Overflow用户
提问于 2015-03-29 22:30:33
回答 1查看 321关注 0票数 0

所以我松散地跟随着安达图JPA的视频教程,我几乎让它发挥作用.

乍一看,一切似乎都很好,只有DataSource服务没有得到解决,我也不知道为什么。在我看来,它似乎是注册的。那么我如何去调试这个,应该有一些方法来调试这个,对吗?启动时,我在msg日志中有如下内容:

代码语言:javascript
复制
[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”的产出:

代码语言:javascript
复制
[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,对吗?

代码语言:javascript
复制
[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的事情都没有解决。

代码语言:javascript
复制
    javax.persistence.EntityManager service required unavailable

所以,我不明白的是,为什么DataSource没有解决呢?我检查了一下,它似乎是用属性name=ManagedDS注册的,但是我对Felix非常陌生,所以我不太确定这里发生了什么。

我也试着添加这个

代码语言:javascript
复制
    @ServiceDependency(filter="(name=ManagedDS)")
private volatile DataSource ds;

为我的一个服务,但这也无法解决。谢谢您在这方面的帮助,但是我最感激的是一种自己调试和解决这个问题的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-30 19:52:16

所以,Amdatu视频教程建议我应该添加

代码语言:javascript
复制
Import-Package: javax.sql;version=1.0.0

给我的包。我试着删除它,它起作用了(当它在我将所有版本设置为小范围后停止解析该导入时,我就这样做了。)我还是不知道它为什么这么做,希望我能早点尝试)

因此,我猜想它为什么现在起作用了--我的OSGi容器中的包可能使用了两个不同的javax.sql.DataSource版本/实例。可能是来自postgres包裹和其他地方(系统?)。也许OSGi的一位专家可以对此发表评论并澄清这一点?

另一个子问题是,正如那个视频所暗示的那样,添加这个导入是一件好事,我能做些什么来使它发挥作用,或者如果它不重要,我就不去费心了?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29335706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档