私はosgiバンドル内のパッケージ構造に関する "良い実践"について考えてきました。現在、平均してバンドルあたり8-12クラスがあります。私のイニシアチブ/提案の1つは2つのパッケージを持つことでした。 com.company_name.osgi.services.api(外部にエクスポートされるAPI関連のクラス/インタフェース用)と実装用の1つのパッケージcom.company_name.osgi.services.impl(エクスポートされない))。これの長所は何ですか?その他の提案はありますか?OSGiバンドルのパッケージ構造
答えて
また、インターフェイスをcom.company_name.subsystem
に設定し、実装がcom.company_name.subsystem.impl
、OSGI固有のコード(ある場合)がcom.company_name.subsystem.osgi
になる可能性があります。 同じインターフェイスを複数実装していることがあります。この場合、あなたは考えることができ - com.company_name.subsystem.impl1
とcom.company_name.subsystem.impl2
を、例えば:この意味パッケージ構造で
com.company.scm // the scm api
com.company.scm.git // its git implementaton
com.company.scm.svn // its subversion implementation
com.company.scm.osgi // the place to put an OSGI Activator
をOSGiのとらわれない可能性があり、後で別のコンテナに移動して、あなただけの追加
com.company.scm.sca // or whatever component model you might think of
を置く場合
パッケージ名に常にapi
とimpl
があると迷惑になることがあります。疑わしい場合はimpl
を使用しますが、api
は使用しないでください。
これは重要なクラスの数ではなく、概念です。私の意見では、1つの概念エンティティをバンドルに入れる必要があります。場合によっては、100sのクラスを持つ他のいくつかのパッケージのほんの少数のクラスかもしれません。
重要な点は、APIと実装を分離することです。 1つのバンドルにはコンセプトのAPIがあり、もう1つの実装には実装が含まれています。このように、明確に定義されたAPIに対してさまざまな実装を提供することができます。場合によっては、バンドルからサービスをリモートで(例えばR-OGSiを使用して)アクセスする場合にも必要な場合があります。
APIバンドルはサービス共有によって実装バンドルのコード共有とサービスによって使用されます。これらの可能性を探る最良の方法は、ServiceTrackersを見ることです。
あなたの場合は、同じパッケージに実装されていても、すべてのクラスがパッケージ保護されている可能性があります。この方法では、パッケージをエクスポートすることができ、OSGiを使用していないとき(ただし、通常のjarファイルとして)でも、実装は外部には見えません。
- 1. OSGIバンドルとしてのjavax.smartcardioパッケージ
- 2. OSGiバンドルのSchemacrawler
- 3. エクスポートとOSGiバンドル
- 4. ユニットテストOSGIバンドル
- 5. ActionScript 3のパッケージ構造とディレクトリ構造
- 6. Androidパッケージの構造
- 7. DAOのパッケージ構造
- 8. OSGIの別のバンドルのパッケージをインポートできません
- 9. OSGIバンドルの要件パッケージがありません
- 10. Javaパッケージ構造とフォルダ構造
- 11. Dojo 1.7.2をOSGIバンドル
- 12. 春分とOSGiバンドル
- 13. 春ComponentScanパッケージ構造
- 14. OSGiバンドルをcxf-extension-osgiで再起動
- 15. パッケージをエクスポートするOSGIバンドルを検索しますか?
- 16. osgiバンドルのlib jarにアクセス
- 17. ステートフルEclipseプラグイン - ドメインモデルのOSGiバンドル?
- 18. ClassNotFoundException OSGiバンドルのデシリアライズ時
- 19. Maven + OSGiバンドルの複雑化
- 20. Androidインストルメンテーションテスト - パッケージ構造のベストプラクティス
- 21. テストとpythonパッケージの構造
- 22. Android用MVPのパッケージ構造
- 23. apcheフェリックスOSGiのパッケージ
- 24. モジュールは、Javaパッケージ構造
- 25. タイコとPOMレスOSGiバンドルを構築できません
- 26. 無効なバンドル構造 - AWS SDK
- 27. はServiceMixのでOSGiのパッケージを内蔵:「未解決制約をバンドルに...」
- 28. wso2 api managerでosgiバンドルのパッケージをインポートして使用する方法
- 29. OSGiのWAB - それは別のバンドル/ WAB
- 30. OSGiバンドルからのデータソースへのアクセス