1

我在 jboss 中部署了一个 spring 集成项目作为 WAR 文件。该项目使用 maven 和结构化来支持任何类型的档案 War 或 Jar。

但是,项目的依赖项(所有 spring jar 和自定义 jar)应该外部化

原因是,稍后将部署 100 多个 Spring Integration 流,如果我们在 WEB-INF/libs 中有 jar,则 WAR 的大小将增长到 ~ 50MB。由于我们已经在一个单独的 jar 中抽象了我们的大部分功能(将作为依赖项添加到我的 spring 集成项目中),外部化将导致 WAR 文件减少到 ~ 5 KB。

我没有 web.xml 并使用 WebInitializer 加载上下文(这是我常用功能的一部分并作为依赖项添加)

以下是我对 JBOSS 的尝试。

  1. 创建了一个模块 com.xxx.yyy 并添加了我所有的 spring/第三方和自定义 jar 作为资源。
  2. 将依赖项添加到清单文件。(这不起作用)
  3. jboss-deployment-structure.xml添加到我的战争WEB-INF中(不起作用)
  4. 如果我给出错误的模块名称,它会抛出错误,因为找不到模块。

战争被部署,但没有被初始化。如果我的 WEB-INF/lib 中有依赖项,一切都会按预期工作。

下面是我使用的jboss部署结构xml。

    <jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
    <deployment>
        <dependencies>
            <module name="com.xxx.yyy" services="import" >
                <imports>
                        <include path="META-INF**"/>
                      <include path="org**"/>
                </imports>
            </module>
        </dependencies>
    </deployment>
</jboss-deployment-structure>

这里是期待,

  1. 外部化 Jar 依赖项。
  2. 将依赖项导入我的战争(清单或 jboss-deployment-structure.xml)
  3. 应该使用 Spring Service 应该被初始化。
  4. 如果库在 WEB-INF 中,部署的战争应该像它一样工作

请帮忙...

4

1 回答 1

0

使用 JBOSS EAP 6,没有 web.xml 就无法部署战争,但只有使用 tomcat 或使用 spring boot 才有可能。此外,为了解决这个问题,我们必须创建一个虚拟的 web.xml 并使用 jboss 模块来加载依赖项。

于 2016-04-19T16:13:03.857 回答