Bundle-SymbolicName構文問題の解決

LiferayのOSGiランタイムフレームワークは、IllegalContextNameExceptionをスローすることがあります。多くの場合、これはOSGiバンドルのBundle-SymbolicNameマニフェストヘッダーにスペースが含まれているためです。

Bundle-SymbolicNameは、Bundle-Versionマニフェストヘッダーとともにバンドルを一意に識別するもので、スペースを含めることはできません。命名のベストプラクティスに従うには、Bundle-SymbolicNameに逆ドメイン名を使用します。たとえば、troubleshooting.liferay.comというドメインのモジュールは、com.liferay.troubleshooting.と逆になります。

バンドルのBundle-SymbolicNameを指定するには、次の3つの方法があります。

  1. バンドルのbnd.bndファイルのBundle-SymbolicNameヘッダー。

  2. プラグインWARのliferay-plugin-package.propertiesファイルのBundle-SymbolicNameヘッダー。

  3. プラグインWARのファイル名(WARのliferay-plugin-package.propertiesBundle-SymbolicName ヘッダーがない場合)。

プラグインWARの場合は、liferay-plugin-package.propertiesファイルでBundle-SymbolicNameを指定することをお勧めします。

たとえば、liferay-plugin-package.propertiesBundle-SymbolicNameヘッダーがないプラグインWARをデプロイする場合、WABジェネレーターはWARの名前をWABのBundle-SymbolicNameとして使用します。WARの名前にスペースが含まれている場合(space-program-theme v1.warなど)、デプロイ時にIllegalContextNameExceptionが発生します。

org.apache.catalina.core.ApplicationContext.log The context name 'space-program-theme v1' does not follow Bundle-SymbolicName syntax.
org.eclipse.equinox.http.servlet.internal.error.IllegalContextNameException: The context name 'space-program-theme v1' does not follow Bundle-SymbolicName syntax.

ただし、Bundle-SymbolicNameを設定する場合は、スペースを使用しないでください。

関連トピック

Using the WAB Generator

« バンドル要件の解決OSGiバンドルのClassNotFoundExceptionおよびNoClassDefFoundErrorの解決 »
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています