追加したユーザーは 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> ss

Framework is launched. id State Bundle

0 ACTIVE org.eclipse.osgi_3.4.0.v20080605-1900 14 INSTALLED org.codehaus.groovy.osgi.hello-groovy-bundle_1.0.0

osgi> start 14 Groovy BundleActivator started

子ページ 追加

©2008-2009 grails.jp