您的位置:首页 > 其它

EJB学习(一)——EJB和WEB打包

2015-07-28 22:17 232 查看
在做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即可,打包完的目录结构如下:





5.共用了第三方类库的 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入门教程》这本书,感觉里面说的很不错,在这里也推荐给大家。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: