在做Java版高校云平台的时候,每个模块在搭建底层的时候都建立了三个项目,分别是jar项目(对象core层)、war项目(对应web层)和ear项目(对应ear层),刚开始接触这好几个项目,有些蒙了。最近在总结EJB的相关知识,对这些项目有了一些基本的了解,下面就对各个项目如何打包进行一个总结。
在这之前,我们先来认识一下EJB,EJB是sun的JavaEE服务器端组件模型,设计目标与核心应用是部署分布式应用程序。简单来说就是把已经编写好的程序(即:类)打包放在服务器上执行。那么打包是怎么个回事呢?这就是我们今天要讨论的问题。
1.EJB打包
要发布 EJB 时必须把她打成*.jar 文件, 一个 EJB 打包后的目录结构如下:
比如我们在高校项目中teacher模块总的core层:
2.WEB应用打包
一个 Web 应用发布到 Jboss 服务器时需要打成 war 包。 Web 应用打包后的目录结构如下:
比如我们在高校项目中teacher模块总的web层:
3.企业应用打包
一个完整的企业应用包含 EJB 模块和 WEB 模块, 在发布企业应用时, 我们需要把它打成*.ear 文件, 在打包前我们必须配置
application.xml 文件, 该文件存放于打包后的 META-INF 目录。 我们在 application.xml 文件中需要指定 EJB 模块和 WEB 模块的信息, 比如我们高校中application.xml 配置如下,从这份XML文件中就可以看到我们Teacher模块下所有的EJB模块和WEB模块,其中tool、base、api、core是EJB模块,而web是WEB模块。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE application PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN" "http://java.sun.com/dtd/application_1_3.dtd"> <application> <display-name>itoo-basic-teacher-ear</display-name> <module> <ejb>itoo-tool-0.0.1-20150511.192711-61.jar</ejb> </module> <module> <ejb>itoo-base-0.0.1-SNAPSHOT.jar</ejb> </module> <module> <ejb>itoo-basic-api-0.0.1-SNAPSHOT.jar</ejb> </module> <module> <ejb>itoo-basic-teacher-core-0.0.1-SNAPSHOT.jar</ejb> </module> <module> <web> <web-uri>itoo-basic-teacher-web-0.0.1-SNAPSHOT.war</web-uri> <context-root>/itoo-basic-teacher-web</context-root> </web> </module> <module> <ejb>itoo-excelV2.0-api-0.0.1-20150716.044824-29.jar</ejb> </module> <module> <ejb>itoo-cloud-api-0.0.1-20150716.233937-30.jar</ejb> </module> <module> <ejb>itoo-authority-api-0.0.1-20150717.015628-31.jar</ejb> </module> </application>
4.使用第三方类库的EJB打包
对于针对特定应用的第三方类库, 最理想的选择是把他们放入 EJB Jar 文件中。 每一个 JAR 文件里都有一个
manifest 文件, 这个文件由 jar 工具自动创建, 默认名字是 MANIFEST.MF。 我们可以在 manifest 文件中加入一个Class-Path 属性, 引用它所依赖的 JAR 文件。 我们可以手工编辑 manifest.mf文件, 在原有内容的基础上, 添加Class-Path 属性。Class-Path 属性的值是用来搜索第三方类库的相对 URL。 这个 URL 总是相对于包含 Class-Path属性的组件。 单个 Class-Path 属性内可以指定多个 URL, 一个 manifest
文件可以包含多个 Class-Path 属性。
加入我上面的Teacher模块中引用了第三方类库,名为Upload.jar, Socket.jar,我们只需在MANIFEST.MF文件中手动添加Class-Path:
Upload.jar Socket.jar即可,打包完的目录结构如下:
4.共用了第三方类库的 J2EE 应用打包
一个 J2EE 项目通常由多个 EJB 和 Web 应用构成, 如果多个 EJB 及 Web 应用共用了一个第三方类库,假设一个 J2EE 项目含有两个 EJB 及一个 Web 应用, 他们的文件名分别为: HelloWorld.jar,
HelloChina.jar,MyEJBTest.war。 这三个模块都使用了一个第三方类库, 名为: Tools.jar现在我们要做的是编辑这三个模块的 manifest.mf文件, 在原有内容的基础上, 添加 Class-Path 属性。
打包后的目录如下:
J2EE 应用的文件后缀为 ear, 应用使用到的各模块在 application.xml 文件中定义, 本例的 application.xml 内容如下:
<?xml version="1.0" encoding="UTF-8"?> <application xmlns="http://java.sun.com/xml/ns/j2ee" version="1.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com /xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/application_1_4.xsd"> <display-name>EJB3Trail</display-name> <description>J2EE Made Easy Trail Map</description> <module> <ejb>HelloWorld.jar</ejb> </module> <module> <ejb> HelloChina.jar</ejb> </module> <module> <web> <web-uri>MyEJBTest.war</web-uri> <context-root>MyEJBTest</context-root> </web> </module> </application>
以上就是对EJB和WEB项目打包的一些简单介绍,其中的大部分内容参考了《EJB 3.0入门教程》这本书,感觉里面说的很不错,在这里也推荐给大家。
版权声明:本文为博主原创文章,未经博主允许不得转载。