追加したユーザーは T.Yamamoto です。最後に編集したユーザーは T.Yamamotoで、その日時は 2009-12-23 20:06:32 です。
Groovy Jarをバンドルに同梱する
前の例では、Groovyへの依存関係をコンテナからどう解決するかを示しました。このActivatorは、Groovyバンドルが起動された後でしか起動できません。代替案として、単純にgroovy-all jarをバンドルに同梱する方法があります。この方法ではImport-Packages宣言を不要にできますが、jarのサイズは膨らむことになります。バンドルに同梱したjarファイルはプライベートな可視性を持つので、同じコンテナで実行中の他のバンドルから参照されることはありません。
groovy-all jarをコンテナからロードするのではなく、バンドルに同梱するには、次のようなレイアウトでjarを作成します:
hello-bundle-contains-groovy.jar
--groovy-all-1.7-beta-1-SNAPSHOT.jar
--META-INF
----MANIFEST.MF
--org
----codehaus
------groovy
--------osgi
----------Activator.class
そして、MANIFEST.MFには以下のテンプレートを使います:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.0
Created-By: 10.0-b19 (Sun Microsystems Inc.)
Built-By: user
provider: org.codehaus.groovy.osgi
Bundle-ManifestVersion: 2
Bundle-Name: Groovy OSGi Example Bundle
Bundle-SymbolicName: org.codehaus.groovy.osgi.hello-groovy-bundle
Bundle-Version: 1.0.0
Bundle-Activator: org.codehaus.groovy.osgi.Activator
Bundle-Vendor: Groovy
Bundle-Localization: plugin
Import-Package: org.w3c.dom,org.osgi.framework;version="1.3.0"
Bundle-ClassPath: .,groovy-all-1.7-beta-1-SNAPSHOT.jar
このJarは、事前にGroovy Jarをロードすることなく、コンテナにロードし起動することができます。コンソールで以下を実行して確認してみましょう:
osgi> install file:///home/user/dev/groovy-core/src/examples/osgi/build/hello-bundle-contains-groovy.jar
Bundle id is 14
osgi> ssFramework is launched.
id State Bundle0 ACTIVE org.eclipse.osgi_3.4.0.v20080605-1900
14 INSTALLED org.codehaus.groovy.osgi.hello-groovy-bundle_1.0.0osgi> start 14
Groovy BundleActivator started