包装maven项目jboss保险丝

时间:2016-11-17 15:52:19

标签: jboss maven-3 jbossfuse fuseesb

在我的项目中,我连接到一个mysql数据库。要在jboss fuse上部署我的jar,我需要将mysql-connector-java添加到deploy文件夹中。你知道如何打包我的项目来提供一个罐子吗?

1 个答案:

答案 0 :(得分:2)

要在您的包中嵌入一个jar,请执行以下操作:

1)将其声明为依赖

<dependencies>
    <dependency>
        <groupId>com.your.company</groupId>
        <artifactId>your-needed-jar</artifactId>
        <version>1.3.4</version>
    </dependency>
<dependencies>

2)告诉maven-bundle-plugin嵌入它。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>3.0.1</version>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                    <Embed-Dependency>your-needed-jar</Embed-Dependency>
                    <Import-Package>
                        eventually.unneded.pkg;resolution:="optional",
                        *
                    </Import-Package>
                    <Export-Package>
                        com.your.company.app.exportedpkg
                    </Export-Package>
                </instructions>
            </configuration>
        </plugin>
    </plugins>
</build>

虽然这在一般情况下工作,但是库可能存在类加载问题,这些库执行大量运行时代理和类生成(如ORM)。

恕我直言,更好的方法是从JBoss Fuse本身提供库。为此:
1)在JBoss Fuse lib /目录中复制mysql-connector-java-xxx.java 2)在JBoss etc / Fuse目录中编辑config.properties
3)将com.mysql.jdbc包添加到列表

org.osgi.framework.system.packages= \
 ...
 org.apache.karaf.diagnostic.core;version="2.4.0.redhat-621084", \
 com.mysql.jdbc;version="xxx", \

现在您不需要将软件包嵌入到软件包中,您可以直接导入它。系统包(ID:0)正在导出它。

如需进一步参考,此PDF文档可能会提供有用的信息:Red Hat JBoss Fuse 6.2 Managing OSGi Dependencies