Spring MVC で OSGI を使用しています。詳細は次のとおりです。
バンドル b1-メッセージ ソースを Bean として宣言します。メッセージ リソースは、bundleb1 のサービスで完全に自動配線されています。xml のメッセージ ソースのエントリは
<bean id="messageSource" class="org.synyx.messagesource.InitializableMessageSource">
<property name="basename" value="ApplicationResources"/>
<property name="messageProvider">
<bean class="org.synyx.messagesource.jdbc.JdbcMessageProvider">
<property name="dataSource" ref="dataSource"/>
</bean>
</property>
</bean>
メッセージソースは、バンドル b1 の osgi-context.xml で次のようにサービスとして公開されます。
<osgi:service interface="org.springframework.context.MessageSource" ref="messageSource"/>
メッセージ リソースを WAB バンドルにインポートするには、WAB の osgi-context.xml に次のエントリを作成し、バンドル b1 によって公開されている messageSource サービスをインポートするために次のエントリを作成します。
注 - WAB で messageSource Bean を作成していません (*-servlet.xml で messageSource を定義していません)。
問題は - WAB に配置されたサンプル Jsp をヒットすると、エラーが発生することです。
javax.servlet.ServletException: javax.servlet.jsp.JspTagException: No message found under code 'user.nametext' for locale 'en_US'.
分析 - Spring コードをさらにデバッグすると、webapplication コンテキストで使用される messagesource のタイプが DelegatingMessageSource であることがわかりました。しかし、バンドル b1 からインポートされた messageSource は、タイプ InitializableMessageSource のオブジェクトを公開します。これは、webapplication コンテキストが、WAB の osgi-context.xml を介してインポートされた messageSource で初期化されていないことを意味します。
PLSヘルプ...