无法在CQ5.5中从JSP访问捆绑上下文

时间:2013-03-17 17:39:47

标签: jsp osgi cq5 osgi-bundle

我创建了一个名为:

的OGI包
com.sdl.ws.integration.profserv.webservice.connector.server.external.beans

我可以看到下面的包:

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

以下是我的JSP代码,我正在尝试访问bundlecontext

 <%@ 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但没有任何工作,

以下是我的捆绑配置的结构:

enter image description here

我坚持认为如何从JSP访问捆绑上下文,是否有人有任何建议/更正?

1 个答案:

答案 0 :(得分:2)

你可能只是缺少.class来引用你的FormattingServiceImpl类 - 下面的代码适用于我在一个裸的Apache Sling实例上,使用Sling的Resource接口而不是FormattingServiceImpl但具有相同的模式:

  <%@ 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 %>

话虽如此,IMO在JSP脚本中获取BundleContext的有效用例很少,我首先会质疑它的必要性。

此外,您的代码似乎表明FormattingServiceImpl是一个实现类,并由定义它的bundle导出,这通常也是一个坏主意。通常,bundle应该只导出包含它们提供的服务的 interfaces 的包。