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

发布于 2024-12-21 18:57:49 字数 319 浏览 3 评论 0原文

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

但不幸的是我还有一些如何使用 OSGI 的问题:

  1. 我可以创建一个简单的 OGI 包并在其中放置一些 JSF 页面吗?如果不是,Web 应用程序的开发频率如何。
  2. 您能给我链接示例如何调用函数并将参数从 WAR 文件传递​​到 OSGI 模块吗?

问候

I'm new to Web java programming. I want to create a simple JSF modular application. I found a simple tutorial link

but unfortunately I still have some questions how to use OSGI:

  1. Can I create a simple OGI bundle and place in it some JSF pages? If not how usually web applications are developed.
  2. Can you give me link with example how I can call functions and pass arguments form a WAR file to OSGI module.

Regards

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烈酒灼喉 2024-12-28 18:57:49

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

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

一旦 WAR(或 WAB - 网页应用程序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

规范,请参阅 v4.2

编辑:要在 JBoss 中部署,您很可能需要要使用 WAB 支持,请参阅企业 4.2 规范的第 128 节。这也可能有帮助:http://community.jboss.org/message/619443
有趣的是,JBoss AS7 使用 pax-web,因此相关文档也应该在很大程度上适用。

Not an answer specifically for JSF (this might be), but for OSGi web-apps in general take a look at Pax-Web if you're using maven.

The easiest way to get started with Pax-Web is probably to use Karaf and then run the command features:install war

Once a WAR (or WAB - Web App Bundle) is deployed you'll be able to use the
osgi-bundlecontext attribute in Servlet initialization, eg:

extends HttpServlet {

BundleContext bundleContext;

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

}

Using this you can look up services in the OSGi registry.

You'll need to pay attention to the bundle's MANIFEST.MF entries, two in particular:

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

Or in an OSGi compliant WebApp container you'll need to add:

Web-ContextPath: context-root-name-here

There's more info in the specifications, see the enterprise or compendium PDFs for v4.2

EDIT: For deploying in JBoss you'll most likely want to use the WAB support, see section 128 of the enterprise 4.2 spec. Also this may help: http://community.jboss.org/message/619443
Interestingly JBoss AS7 is using pax-web, so the documentation for this should largely apply too.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文