【问题标题】:Configuring Spring and JBoss [closed]配置 Spring 和 JBoss [关闭]
【发布时间】:2017-01-20 19:32:07
【问题描述】:

我们正在构建一系列具有通用支持 JAR 文件的新 Spring 应用程序。在 Tomcat 环境中部署的应用程序中,世界是美好的。在非 Spring 环境中的 JBoss 下运行的遗留应用程序需要访问这些相同的 JAR。有人可以指点我一个位置或在这里解释如何配置 Spring 和 JBoss 以使 JAR 正常运行或如何打包它们以使 Spring 依赖项成为 JAR 的一部分。 Maven 也在其中。

【问题讨论】:

    标签: java spring maven jboss


    【解决方案1】:

    你可以将 Spring 定义为一个模块

    以下是创建Spring模块的步骤:

    1.下载所需版本的Spring。对于这个例子,我们使用的是 Spring 3.1.1。

    2.创建目录: $JBOSS_HOME/modules/org/springframework/spring/main.

    3.将下载的 Spring 库复制到该目录。

    4.在该目录下创建包含以下内容的module.xml。确保这些对应于库的名称:

    <?xml version="1.0" encoding="UTF-8"?>
    <module xmlns="urn:jboss:module:1.1" name="org.springframework.spring">
      <resources>
        <resource-root path="org.springframework.aop-3.1.1.RELEASE.jar"/>
        <resource-root path="org.springframework.asm-3.1.1.RELEASE.jar"/>
        <resource-root path="org.springframework.aspects-3.1.1.RELEASE.jar"/>
        <resource-root path="org.springframework.beans-3.1.1.RELEASE.jar"/>
        <resource-root path="org.springframework.context-3.1.1.RELEASE.jar"/>
        <resource-root path="org.springframework.context.support-3.1.1.RELEASE.jar"/>
        <resource-root path="org.springframework.core-3.1.1.RELEASE.jar"/>
        <resource-root path="org.springframework.expression-3.1.1.RELEASE.jar"/>
        <resource-root path="org.springframework.instrument-3.1.1.RELEASE.jar"/>
        <resource-root path="org.springframework.instrument.tomcat-3.1.1.RELEASE.jar"/>
        <resource-root path="org.springframework.jdbc-3.1.1.RELEASE.jar"/>
        <resource-root path="org.springframework.jms-3.1.1.RELEASE.jar"/>
        <resource-root path="org.springframework.orm-3.1.1.RELEASE.jar"/>
        <resource-root path="org.springframework.oxm-3.1.1.RELEASE.jar"/>
        <resource-root path="org.springframework.test-3.1.1.RELEASE.jar"/>
        <resource-root path="org.springframework.transaction-3.1.1.RELEASE.jar"/>
        <resource-root path="org.springframework.web-3.1.1.RELEASE.jar"/>
        <resource-root path="org.springframework.web.portlet-3.1.1.RELEASE.jar"/>
        <resource-root path="org.springframework.web.servlet-3.1.1.RELEASE.jar"/>
        <resource-root path="org.springframework.web.struts-3.1.1.RELEASE.jar"/>
      </resources>
      <dependencies>
        <module name="org.apache.commons.logging"/>
        <module name="javax.api" export="true"/>
        <module name="org.jboss.vfs"/> 
      </dependencies>
    </module>
    

    这是一个绝对最小的module.xml(不同的Spring版本无关):

    <?xml version="1.0"?>
    <module xmlns="urn:jboss:module:1.1" name="org.springframework.spring">
      <resources>
        <resource-root path="spring-aop-3.2.3.RELEASE.jar"/>
        <resource-root path="spring-beans-3.2.3.RELEASE.jar"/>
        <resource-root path="spring-context-3.2.3.RELEASE.jar"/>
        <resource-root path="spring-core-3.2.3.RELEASE.jar"/>
        <resource-root path="spring-expression-3.2.3.RELEASE.jar"/>
      </resources>
      <dependencies>
        <module name="javax.api"/>
        <module name="org.apache.commons.logging"/>
      </dependencies>
    </module>
    

    5. 将以下 jboss-deployment-structure.xml 放入您的应用程序存档(WEB-INF/jboss-deployment-structure.xml 用于 WAR 或 META-INF/jboss-deployment-structure.xml 用于 EAR 或 EJB- jar) 来使用上面的模块:

    如果您使用 JBoss EAP 6.1.x 或更高版本,请使用以下:

    ?xml version="1.0" encoding="UTF-8"?>
    <jboss-deployment-structure>
      <deployment>
        <dependencies>
          <module name="org.springframework.spring" export="true" meta-inf="export"/>
        </dependencies>
      </deployment>
    </jboss-deployment-structure>
    

    如果是 JBoss EAP 6.0.x,那么在下面使用

    <?xml version="1.0" encoding="UTF-8"?>
    <jboss-deployment-structure>   
      <deployment>
        <dependencies>
          <module name="org.springframework.spring" export="true">
            <imports>
              <include path="META-INF**"/>
              <include path="org**"/>
            </imports>
            <exports>
              <include path="META-INF**"/>
              <include path="org**"/>
            </exports>
          </module>
        </dependencies>
      </deployment>
    </jboss-deployment-structure>
    

    注意:jboss-deployment-structure.xml 中模块上的 meta-inf 是在 JBoss EAP 6.1.0 中添加的,它允许资源的 META-INF 中的文件可见。由于这在 JBoss EAP 6.0.x 中不可用,该部分允许您访问默认不可见的 META-INF 目录。

    注意:Spring Framework 模块不应包含 servlet-api.jar、xml-apis.jar、jta-api.jar 和其他 API 等资源。这些 API 由 JDK 或 JBoss 实现,尝试使用不同版本的 API 会导致类加载问题和其他问题。

    注意:Spring 模块应包括其所有非 Java/JavaEE 依赖项。 Spring 模块可以依赖于 JBoss 提供的 javax.api / javaee.api 和任何公共 JBoss 模块,但是对于 Spring 具有的其他依赖项,例如 aopalliance,它们需要作为资源包含在模块或另一个自定义模块中。

    【讨论】:

    • 按照这些步骤操作,现在我在尝试加载第一个 jar 时收到一个文件未找到错误。文件名是 spring-aop-4.3.2.RELEASE.jar 我已经尝试过 '' 和 '' 有什么建议@anup-dey?
    • 我发现文件未找到的问题。
    猜你喜欢
    • 1970-01-01
    • 2015-10-27
    • 2017-02-22
    • 2010-09-12
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    相关资源
    最近更新 更多