我创建了一个名为:
的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但没有任何工作,
以下是我的捆绑配置的结构:
我坚持认为如何从JSP访问捆绑上下文,是否有人有任何建议/更正?
答案 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 的包。