天道不一定酬所有勤
但是,天道只酬勤
Hollis出品的全套Java面试宝典不来了解一下吗?

[译]Hello World With JBoss Modules

Hollis出品的全套Java面试宝典不来了解一下吗?

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的规范,大致结构如下图:

Screenshot 2016-05-19 00.43.36

如上图所示,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的提示。希望,有一天,这个很棒的项目会有完善的文档,会有更多的教程。

赞(0)
如未加特殊说明,此网站文章均为原创,转载必须注明出处。HollisChuang's Blog » [译]Hello World With JBoss Modules
Hollis出品的全套Java面试宝典不来了解一下吗?

评论 1

  1. #1

    古人日三省其身,我从博客里吸收养分!

    我赚啦8年前 (2017-05-20)回复

HollisChuang's Blog

联系我关于我