0

次の名前のOGIバンドルを作成しました:

com.sdl.ws.integration.profserv.webservice.connector.server.external.beans

私は下のバンドルを見ることができます:

 http://localhost:4502/system/console/bundles

以下は、bundlecontextにアクセスしようとしているJSPコードです。

 <%@ page import="org.osgi.framework.BundleContext"%>  
 <%@ page import="org.osgi.framework.FrameworkUtil"%>
 <%@ page import="com.sample.osgi.components.FormattingServiceImpl.*"%>  
 <%@ page import="org.osgi.service.cm.ConfigurationAdmin"%>
 <%@ page import="org.osgi.service.cm.Configuration"%>   
  <%@ page import="org.osgi.service.packageadmin.PackageAdmin"%>   

 <%
    BundleContext bundleContext =      FrameworkUtil.getBundle(FormattingServiceImpl).getBundleContext();  

  %>

次のエラーが発生します:FormattingServiceImplを解決できません

jarをインポートするために複数の方法を使用しようとしましたが、何も機能していません。

これが私のバンドルがどのように構成されているかの構造です:

ここに画像の説明を入力してください

JSPからバンドルコンテキストにアクセスする方法に固執していますが、誰か提案/修正がありますか?

4

1 に答える 1

2

おそらく、FormattingServiceImpl クラスを参照するための .class が欠落しているだけです。以下は、FormattingServiceImpl の代わりに Sling の Resource インターフェイスを使用するが、同じパターンで、裸の Apache Sling インスタンスで機能します。

  <%@ page import="org.osgi.framework.BundleContext"%>  
  <%@ page import="org.osgi.framework.FrameworkUtil"%>
  <%@ page import="org.apache.sling.api.resource.Resource"%>  

  <%
    BundleContext bc = FrameworkUtil.getBundle(Resource.class).getBundleContext();
  %>

  <%= bc %>

そうは言っても、JSPスクリプトでBundleContextを取得するための有効なユースケースはIMOにはほとんどありません。そもそもその必要性に疑問があります。

また、コードは、 FormattingServiceImpl が実装クラスであり、それを定義するバンドルによってエクスポートされることを示しているようです。これも通常は悪い考えです。一般に、バンドルは提供するサービスのインターフェースを含むパッケージのみをエクスポートする必要があります。

于 2013-03-18T10:04:05.043 に答える