Karaf コンテナーにデプロイする OSGI ベースのアプリケーションを開発しています。Karaf には自動デプロイ機能があり、バンドルを karaf/deploy ディレクトリにコピーすると、そのバンドルがコンテナーに自動的にデプロイされます。ただし、多くの場合、バンドルを deploy ディレクトリにコピーすると、以下のようなエラーが発生します。
org.osgi.framework.BundleException: Bundle symbolic name and version are not unique: legacy-services-impl:8.0.0.ALPHA-SPRINT9-SNAPSHOT
at org.apache.felix.framework.BundleImpl.createRevision(BundleImpl.java:1225)
at org.apache.felix.framework.BundleImpl.<init>(BundleImpl.java:95)
at org.apache.felix.framework.Felix.installBundle(Felix.java:2979)
at org.apache.felix.framework.BundleContextImpl.installBundle(BundleContextImpl.java:165)
at org.apache.felix.fileinstall.internal.DirectoryWatcher.installOrUpdateBundle(DirectoryWatcher.java:1030)[6:org.apache.felix.fileinstall:3.3.11.fuse-71-047]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.install(DirectoryWatcher.java:944)[6:org.apache.felix.fileinstall:3.3.11.fuse-71-047]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.install(DirectoryWatcher.java:857)[6:org.apache.felix.fileinstall:3.3.11.fuse-71-047]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:483)[6:org.apache.felix.fileinstall:3.3.11.fuse-71-047]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:291)[6:org.apache.felix.fileinstall:3.3.11.fuse-71-047]
すでにデプロイされているバンドルを再デプロイする代わりに、コンテナーは重複したバンドルをデプロイしようとしていると通知します。
Karaf は確かにそのバンドルを展開していますが、バンドルを再展開しないのはなぜですか? この動作の原因は何ですか? 自動展開でこのようなエラーを回避するにはどうすればよいですか?
ありがとうございました、
マイケル