LiferayのOSGiランタイムフレームワークは、IllegalContextNameException
をスローすることがあります。多くの場合、これはOSGiバンドルのBundle-SymbolicName
マニフェストヘッダーにスペースが含まれているためです。
Bundle-SymbolicName
は、Bundle-Version
マニフェストヘッダーとともにバンドルを一意に識別するもので、スペースを含めることはできません。命名のベストプラクティスに従うには、Bundle-SymbolicName
に逆ドメイン名を使用します。たとえば、troubleshooting.liferay.com
というドメインのモジュールは、com.liferay.troubleshooting.
と逆になります。
バンドルのBundle-SymbolicName
を指定するには、次の3つの方法があります。
-
バンドルの
bnd.bnd
ファイルのBundle-SymbolicName
ヘッダー。 -
プラグインWARの
liferay-plugin-package.properties
ファイルのBundle-SymbolicName
ヘッダー。 -
プラグインWARのファイル名(WARの
liferay-plugin-package.properties
にBundle-SymbolicName
ヘッダーがない場合)。
プラグインWARの場合は、liferay-plugin-package.properties
ファイルでBundle-SymbolicName
を指定することをお勧めします。
たとえば、liferay-plugin-package.properties
にBundle-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
を設定する場合は、スペースを使用しないでください。