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

在做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入门教程》这本书,感觉里面说的很不错,在这里也推荐给大家。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-16 17:30:27

EJB学习(一)——EJB和WEB打包的相关文章

ejb学习1-helloword,ejb远程调用

环境 win7 myeclipse10 jboss4.0.5 创建第一个ejb项目 1. new EJB project 2.创建一个 sessionbean 接口 3.编写ejb接口 package com.mo.ejb; import javax.ejb.Stateless; @Stateless public interface HelloWorld { String sayHello(String name); } 4.实现接口 package com.mo.ejb; public cl

EJB学习随手笔记

名词: 注解方式: @persistenceContext:持续.存留:环境.上下文: @Stateless: 无状态(无权的) @Remote:  远程接口 一.EJB接口 remote和local的? 二.(Enterprice JavaBeans )EJB基础知识: ①EJB是一个用于分布式业务应用的标准服务端组件模型.采用EJB架构编写的应用是可伸的.事务性的.多用户安全的.一次编写这些应用, 然后部署在任何支持EJB规范的服务器平台,如:JBOSS/WEBLOGIC. ②EJB定义了三

EJB学习(五)——依赖注入

    一.Why? 我们在客户端调用服务端对象的时候,通常需要通过服务器的 JNDI 来查找session bean或MDB.JNDI 查找是把客户端与实际的服务端实现解藕的关键步骤. 但是, 直接使用一个字符串来进行 JNDI 查找并不优雅.有这样几个原因: · 客户端与服务端必须有一致的基于字符串的名字. 它没有在编译时得到认证或在部署时得到检查. · 从 JNDI 返回的服务对象的类型没有在编译时进行检查, 有可能在运行时出现转换(casting)错误. · 冗长的查找代码,有着自己的

EJB学习(二)——使用Eclipse+JBOSS创建第一个EJB项目

    1.环境配置 ·Eclipse Luna Service Release 1 (4.4.1) ·JBOSS AS 5.0 ·Java 1.8.0_25     2.创建一个EJB项目 依次点击File → New → EJB Project,填写项目名称如下: 然后点击Next → Finish; 选中EJB项目下的ejbModule文件夹,右击→ New→ Session Bean(EJB 3.X),创建一个Session Bean. HelloWrold接口: package com

EJB学习笔记七(依赖注入)

1.前言 在EJB中也为我们提供了依赖注入的功能,关于什么是依赖注入,在此就不再多分析了. 2.EJB注入 在EJB中注入一般使用的就是@EJB或者@EJBS,两者的区别莫过于注入的类可以实现多个接口.下面来看一下@EJB用到的属性. beanInterface:该属性指定被注入EJB所实现的接口 name:该属性用于指定被注入Bean在JNDI ENC中注册项名称,该名称在不同应用服务器中可能存在差异. beanName:该属性指定被注入EJB的名称,其值与被注入Bean中@StateLess

会话EJB系列(一)EJB概述

EJB(Enterprise Java Bean)是Java EE(以前叫J2EE)的核心规范,不仅仅是一种优秀的组件技术,而且还是Java EE 其它规范(如RMI,JNDI,JMS等)的具体应用. 一.EJB的概念和意义 (1)EJB规范的由来 随着软件规模的快速增大和技术复杂度(分布式软件的开发技术,如CORBA.RMI等)的增加,导致软件开发变得越来越复杂,使普通程序员难于处理各种系统级服务,从而使得大型软件系统的开发变得难以为继. 后来,Sun公司发布了EJB规范,目的是统一各种分布式

EJB初级篇--EJB组件之实体Bean

上文我们对会话Bean的生命周期和两个子类型(有状态会话Bean和无状态会话Bean)进行了详细解说,本篇博文中我们继续说说EJB组件中的实体Bean. 其实实体Bean就是一个加了注释符(@Entity)的简单java对象(POJO),实体关系和O/R映射也是通过注释符来定义的,并且提供了几种不同的数据库操作规范.一旦被EntityManager访问,它就成为了一个持久化对象,我们就可以像以前使用Hibernate一样来使用实体对象了. 下图是实体Bean的内容结构图,方便我们宏观的了解实体B

libgdx学习记录19——图片动态打包PixmapPacker

libgdx中,opengl 1.x要求图片长宽必须为2的整次幂,一般有如下解决方法 1. 将opengl 1.x改为opengl 2.0.(libgdx 1.0版本后不支持1.x,当然不存在这个问题,这里针对的是0.9.9版本) 2. 使用TexturePacker将图片打包好然后作成一张大图添加进来. 第二种方法是常用方法,但是不太灵活,添加.删除某些图片不太方便,改动较大.这里可以考虑使用PixmapPacker将图片进行动态打包. 主要方法: pack(String name, Pixm

PHP学习笔记-PHP与Web页面的交互2

转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/51761308 本文出自:[顾林海的博客] 前言 在<PHP学习笔记-PHP与Web页面的交互1>笔记中讲解了form表单的一些属性,包括它的输入域标记.选择域标记和文字域标记的写法,接下来的内容就是讲如何获取表单数据以及PHP数据的传递,包括对各种控件值的获取. 插入表单 提交表单之前一定得有表单,当我们的表单创建完毕后可以将表单插入Web页中,代码如下: <