把jar文件提前放到Wildfly的modules里面
如果所有jar文件全部打包进自己的war文件,会变得很大,不利于持续集成。所以可以把网上共有的已知jar包以module方式事先放入wildfly,自己的war文件中就可以不打包这些jar。
下面以mariadb连接器作为例子:
下载:
mariadb-java-client-1.4.6.jar
mariadb-java-client-1.5.4.jar
制作模块,这里建立一个模块的两个版本,其中1.5.4版本为默认使用的版本:
$ cd /data/wildfly/
建立所需目录main和1.4.6,每个目录下都要放置jar文件和module.xml文件:
$ mkdir ./modules/maxshu
$ mkdir -p ./modules/maxshu/org/mariadb/jdbc/main
$ mkdir -p ./modules/maxshu/org/mariadb/jdbc/1.4.6
拷贝jar文件到相应目录,其中main目录为默认版本的目录:
$ cd ./modules/maxshu/org/mariadb/jdbc
$ cp mariadb-java-client-1.4.6.jar ./1.4.6/
$ cp mariadb-java-client-1.5.4.jar ./main/
在各个目录建立module.xml,以便wildlfy来加载,注意name和上面目录的对应关系(需要一致,但是和jar里面的真实包名可以不一致):
$ vi ./main/module.xml
<?xml version=”1.0″ encoding=”UTF-8″?>
<module xmlns=”urn:jboss:module:1.3″ name=”maxshu.org.mariadb.jdbc”>
<!–
<properties>
<property name=”jboss.api” value=”private”/>
<property name=”jboss.require-java-version” value=”1.8″/>
</properties>
<main-class name=”org.jboss.as.server.Main”/>
–>
<resources>
<resource-root path=”mariadb-java-client-1.5.4.jar”/>
</resources>
<dependencies>
<module name=”org.jboss.logmanager” services=”import”/>
<module name=”javax.api”/>
<module name=”javax.transaction.api”/>
</dependencies>
</module>
建立模块xml:
$ vi ./1.4.6/module.xml
<?xml version=”1.0″ encoding=”UTF-8″?>
<module xmlns=”urn:jboss:module:1.3″ name=”maxshu.org.mariadb.jdbc” slot=”1.4.6″>
<!–
<properties>
<property name=”jboss.api” value=”private”/>
<property name=”jboss.require-java-version” value=”1.8″/>
</properties>
<main-class name=”org.jboss.as.server.Main”/>
–>
<resources>
<resource-root path=”mariadb-java-client-1.4.6.jar”/>
</resources>
<dependencies>
<module name=”org.jboss.logmanager” services=”import”/>
<module name=”javax.api”/>
<module name=”javax.transaction.api”/>
</dependencies>
</module>
使用模块:
在项目的WEB-INF/下面建立一个jboss-deployment-structure.xml文件,在里面定义所需要的模块即可:
$ vi testModule.war/WEB-INF/jboss-deployment-structure.xml
<?xml version=”1.0″ encoding=”UTF-8″?>
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name=”maxshu.org.mariadb.jdbc” services=”export” export=”true” optional=”false” slot=”1.4.6″ />
</dependencies>
</deployment>
</jboss-deployment-structure>
如果使用默认版本,即1.5.4这个main版本,则去掉上面的 slot=”1.4.6″ 即可:
<module name=”maxshu.org.mariadb.jdbc” services=”export” export=”true” optional=”false” />
测试是否成功:
$ cd $WILDFLY_HOME/standalone/deployments
建立项目目录:
$ mkdir testModule.war
建立一个jsp文件:
$ vi testModule.war/index.jsp
<html>
<head><title>Wildfly Module Testing </title></head>
<body>
<%
Class.forName(“org.mariadb.jdbc.Driver”);
org.mariadb.jdbc.Driver testJdbc=new org.mariadb.jdbc.Driver();
System.out.println(“OK, create testJdbc”);
out.println(“OK, create testJdbc”);
%>
Hi Check the Console/Log of your Wildfly
</body>
</html>
建立web.xml文件:
$ mkdir testModule.war/WEB-INF
$ vi testModule.war/WEB-INF/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” xmlns:web=”http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd” xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd” id=”WebApp_ID” version=”2.5″>
<display-name>Module Demo Wildfly </display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
拷贝 jboss-deployment-structure.xml文件到项目:
$ cp jboss-deployment-structure.xml testModule.war/WEB-INF/
部署:
$ touch testModule.war.dodeploy
测试:
浏览器访问:http://localhost:8080/testModule/index.jsp
可以看到输出:“OK, create testJdbc Hi Check the Console/Log of your Wildfly”,意即成功。
也可以看到这个测试项目下没有放入任何的jar文件,一样的可以访问jdbc的jar包。