如何使用OSGI模块创建简单的WAR文件

时间:2011-12-19 09:21:56

标签: jsf jsf-2 jboss osgi war

我是Web java编程的新手。我想创建一个简单的JSF模块化应用程序。我找到了一个简单的教程link

但遗憾的是我仍然有一些关于如何使用OSGI的问题:

  1. 我可以创建一个简单的OGI包并在其中放置一些JSF页面吗?如果不是,通常会开发Web应用程序。
  2. 您能否举例说明我如何调用函数并将参数从WAR文件传递给OSGI模块。
  3. 此致

1 个答案:

答案 0 :(得分:4)

不是专门针对JSF(this可能是)的答案,但对于OSGi网络应用程序,如果您使用的是Pax-Web,请查看maven

开始使用Pax-Web的最简单方法可能是使用Karaf,然后运行命令features:install war

一旦部署了WAR(或WAB - Web App Bundle),您就可以使用 Servlet初始化中的 osgi-bundlecontext 属性,例如:

extends HttpServlet {

BundleContext bundleContext;

@Override
public void init() throws ServletException
{
    bundleContext = (BundleContext) getServletContext().getAttribute("osgi-bundlecontext");

}

使用此功能,您可以在OSGi注册表中查找服务。

你需要注意捆绑的MANIFEST.MF条目,特别是两个:

Bundle-ClassPath: ./,WEB-INF/classes
Webapp-Context: context-root-name-here

或者在符合OSGi标准的WebApp容器中,您需要添加:

Web-ContextPath: context-root-name-here

specifications中有更多信息,请参阅v4.2

的企业或纲要PDF

编辑:对于在JBoss中部署,您很可能希望使用WAB支持,请参阅企业4.2规范的第128节。这也可能有所帮助:http://community.jboss.org/message/619443 有趣的是,JBoss AS7正在使用pax-web,所以这方面的文档也应该适用。