【问题标题】:Simple OSGI web application for jboss AS7用于 jboss AS7 的简单 OSGI Web 应用程序
【发布时间】:2014-04-04 17:13:51
【问题描述】:

我是 web 开发的新手,我想开发一个 osgi web 包以部署在 jboss AS7 中,谁能告诉我它的目录结构是什么......我搜索了很多但无法找到我的解决方案目录结构如下

我的项目 --META-INF ---- 清单.mf --WEB-INF ------ web.xml index.html

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>JbossModule</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
</web-app>

manifest.mf

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: OsgiSample
Bundle-SymbolicName: osgiSample
Bundle-Version: 1.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Web-ContextPath: /osgiSample
Webapp-Context: osgiSample

我可以部署...但收到错误 404

【问题讨论】:

  • 究竟是哪个版本的 JBoss AS?
  • 我正在使用 jboss-as-7.1.1
  • 为什么选择 JBoss?在我看来,JBoss AS 7 是巨大的。在您的设置中,您将有效地获得:Tomcat + JBoss Enterprise stuff + Apache Felix + Pax Web。为什么不直接下载 Felix 和 Pax Web 并开始使用呢?我并不是说 JBoss 不好。远非如此,它非常适合企业发展。但是为了构建您的第一个 WAB?如果你使用 Felix + Pax Web 独立版,你很确定它最终会工作,因为这正是 JBoss 也使用的。编辑:刚刚意识到你也会得到码头。所以你可以在 JBoss 中运行两个网络服务器...

标签: osgi


【解决方案1】:

JBoss AS 7.1.1 不支持开箱即用的 WAB。以下信息隐藏在 JBoss OSGi 1.1.1 的用户指南中:

要在 AS7 中启用 OSGi Web 应用程序支持,您需要配置 这些能力

<capability name="org.ops4j.pax.web:pax-web-jetty-bundle:1.1.2"/>
<capability name="org.ops4j.pax.web:pax-web-jsp:1.1.2"/>
<capability name="org.ops4j.pax.web:pax-web-extender-war:1.1.2"/>

将这些行添加到standalone.xmlosgi 子系统并将激活更改为eager

 <subsystem xmlns="urn:jboss:domain:osgi:1.2" activation="eager">

然后 JBoss AS 将在启动期间下载并安装额外的捆绑包。启动这些捆绑包后,将您自己的 WAB 复制到 standalone/deployments 即可部署。

另见forum post。请注意,此 WAB 在单独的 servlet 容器 (Pax Web) 中运行,侦听端口 8090(不是 8080)。

另请注意,这些额外功能似乎会在每次服务器重新启动时再次下载。为避免这种情况,您可以手动下载额外的捆绑包(和传递依赖项)并将它们安装在 $JBOSS_HOME/bundles 下:

org/ops4j/pax/web/jetty/main/pax-web-jetty-bundle-1.1.2.jar
org/ops4j/pax/web/extender/war/main/pax-web-extender-war-1.1.2.jar
org/ops4j/pax/web/jsp/main/pax-web-jsp-1.1.2.jar
org/eclipse/jdt/core/compiler/ecj/main/ecj-3.5.1.jar

然后将上述功能替换为:

<capability name="org.ops4j.pax.web.jetty"/>
<capability name="org.eclipse.jdt.core.compiler.ecj"/>
<capability name="org.ops4j.pax.web.jsp"/>
<capability name="org.ops4j.pax.web.extender.war"/>

【讨论】:

    猜你喜欢
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多