JBoss Modules是一个相当有趣的项目,他在Jboss应用服务器和Jboss生态系统项目中扮演者重要的角色。但是,网上关于Jboss Modules的东西却很少。甚至Jboss Modules的官方文档都是不完整的,更别提教程了。关于他你能在网上找到的最好的资料也就是介绍如何在Jboss 服务器中应用JBoss Modules。
由于我在网上没有找到一个Jboss Modules的Hello World程序,所以我决定自己写一个。
下载Jboss Modules
在http://www.jboss.org/上,你无法直接找到JBoss Modules。获取Jboss Modules有两种方法,第一种是从 Bintray 或者 Maven 仓库中下载。第二种就是拿到源码之后自己编译。
还有呢,就是下载一个项目,其中包含jboss-modules.jar的也行。比如WildFly。
Hello World
一个古老而又伟大的Hello World代码:
public class Main {
public static void main(String[] args)
{
new Hello().say();
}
}
上面的代码中用到了Hello类,这个类将会包含在另外的模块中:
public class Hello {
public void say() {
System.out.println("Hello!");
}
}
我们将上面的两个不同的类、编译后的class文件以及jar包放到不同的模块下面。我们使其符合Jboss Modules的规范,大致结构如下图:
如上图所示,Main类在app模块中,Hello类在hello模块中,每个模块还需要一个module.xml文件。关于文件的具体编写规范可以参考module命名规范和module文件可用标签。(JBoss Modules 模块描述文件解析)
app模块中的module.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.5" name="app">
<main-class name="Main"/>
<resources>
<resource-root path="main.jar"/>
</resources>
<dependencies>
<module name="hello"/>
</dependencies>
</module>
它制定了main-class为Main,指定该模块的classpath为main.jar。并且说明该模块依赖了hello模块。
hello模块中的module.xml文件内容和上面类似:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.5" name="hello"> <resources>
<resource-root path="hello.jar"/>
</resources>
</module>
好了!现在我们可以执行新的模块化的“Hello World”应用程序了:
java -jar jboss-modules-1.5.1.Final.jar -mp mods app
控制台输出内容:Hello!
通过java -jar jboss-modules-1.5.1.Final.jar
开始运行该程序,通过-mp mods
指定要运行的模块的名字。
这个例子不是很实用,但至少它给了我们一些关于如何开始使用JBoss Module的提示。希望,有一天,这个很棒的项目会有完善的文档,会有更多的教程。
古人日三省其身,我从博客里吸收养分!