0

だから私は大まかに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;

私のサービスの1つですが、それも解決できません。これに関してご協力いただきありがとうございますが、私が最も感謝しているのは、これを自分でデバッグして解決する方法です。

4

1 に答える 1

2

したがって、Amdatu のビデオ チュートリアルでは、追加する必要があると提案されました

Import-Package: javax.sql;version=1.0.0

私のバンドルに。私はそれを削除しようとしましたが、それは機能します(すべてのバージョンを小さな範囲に設定した後、そのインポートの解決を停止したときにそれを行いました.なぜそれが行われたのかはまだわかりません。もっと早く試してほしいと思います)

なぜ今それが機能するのかについての私の推測-私のOSGiコンテナーのパッケージは、おそらくjavax.sql.DataSourceの2つの異なるバージョン/インスタンスを使用していました。おそらく、postgres パッケージの 1 つと、他の場所 (システム?) からの 1 つです。たぶん、OSGi の専門家の 1 人がこれについてコメントして解決してくれるでしょうか?

別のサブ質問は、そのビデオがそのインポートを追加するのは良いことだと示唆しているように、それを機能させるにはどうすればよいですか、それが重要でない場合は気にしないでください。

于 2015-03-30T19:52:16.303 に答える