101102346.png

 

变化:首先,你可能也注意到了,这个平台发布了一个新的名称--Java平台企业版,简称 Java EE。这个新名称去掉了令人费解的“2”,而这个简称强调了这是一个Java平台。以前的版本仍然使用旧的名称“J2EE”。

Java EE 5 的焦点是简化开发。为了帮助刚从Java EE起步的程序员简化开发流程或开发中小型应用,我们大量使用了在J2SE5.0中引入的Java语言注解。

在大多数情况下,注解减少甚至消除了对Java EE部署描述符的处理。甚至大型应用程序也能从注解所带来的简便性中受益。

注解最主要的应用之一是为Java EE组件指定资源注入和其它依赖关系。注入提高了当前JNDI的查找能力,为应用程序提供了一个新的简化模型,使它从运行环境中访问必需资源的效率得到提高。注入也可以和部署描述符一起使用,使部署者可以自定义或重写应用程序源代码中的资源设置。

通过使用注解,优化的默认值将发挥更大的效用。在大多数没有注解或部署描述符的情况下,优化的默认行为和优化的默认配置,可以使大多数应用程序能在大部分时间内获得想要的行为。但是,当默认值不被应用程序需要时,一个简单的注解就可以指定所需的行为或配置。

注解与优化的默认值的组合大大地简化了使用EJB技术的应用程序和使用Web服务的应用程序的部署。现在,开发企业Bean相当地简单。通过使用Web服务元数据规范定义的注解,Web服务的开发也变得更加容易。

Web服务领域的发展日新月异。为了对最新的Web服务提供支持,JAX-RPC演变成了JAX-WS技术,它大量使用JAXB技术将Java对象绑定到XML数据。JAX-WS和JAXB都是本平台的新内容。

Java EE 5新增的主要内容还包括JSTL和JSF技术,用它们可以简化Web应用程序的部署。还有EJB3.0专家组开发的Java持久化API,它极大地简化了从Java对象到数据库的映射。

另外还增加了用于解析XML的StAX API。先前版本的大多数API都得到了或多或少地改善。

 

引用和注入

  • l5.2,“JNDI命名上下文”为JNDI命名上下文以及它与Java语言注解的交互定义了通用规则,Java语言注解会引用命名上下文的入口。 

  • l5.3,“Java EE平台角色的职责”为每个Java EE平台角色定义了公共的职责,这些角色包括应用程序组件供应商,应用程序组装者,部署者和Java EE产品供应商等等。 

  • l5.4,“简单环境入口”定义了指定和访问应用程序组件命名环境的基本接口。此节阐述了应用程序组件命名环境的使用,以自定义应用程序组件的业务逻辑。 

  • l5.5,“企业级JavaBeansTM(EJB)的引用”为获取主接口或企业Bean实例定义了接口。这用到了EJB的引用,它是应用程序组件环境中的特定入口。 

  • l5.6,“Web服务的引用”为Web服务的引用制定了规范。 

  • l5.7,“资源管理器连接工厂的引用”为获取资源管理器连接工厂定义了接口。这用到了资源管理器连接工厂的引用,它是应用程序组件环境中的特定入口。 

  • l5.8,“资源环境的引用”为获取与资源关联的受管理对象定义了接口。这用到了资源环境的引用,它是应用程序组件环境中的特定入口。 

  • l5.9,“消息目的地的引用”为声明和使用消息目的地的引用定义了接口。 

  • l5.10,“用户事务的引用”描述了特定应用程序组件引用组件环境中的UserTransaction对象来启动,提交和中止事务。 

  • l5.11,“事务同步注册表的引用”描述了特定应用程序组件引用组件环境中的TransactionSynchronizationRegistry 对象。 

  • l5.12,“ORB的引用”描述了特定应用程序组件引用组件环境中的CORBA ORB对象。 

  • l5.13,“持久化单元的引用”描述了特定应用程序组件引用组件环境中的EntityManagerFactory 对象。 

  • l5.14,“持久化上下文的引用”描述了特定应用程序组件引用组件环境中的EntityManager对象。 

     

 

125928748.png

 

部署javaee程序:

a. 应用程序包中所有带有.war后缀名的文件被认为是Web模块。Web模块的上下文root就是模块的名称(参见8.1.1, “创建组件”)。

b. 应用程序包中所有带有.rar后缀名的文件被认为是资源适配器。 

c. 名称为lib的目录被认为是库目录,正如EE8.2.1,“绑定的库”中所描述的。 

d. 对于应用程序包中带有.jar后缀名,但却不在lib目录下的所有文件,按下列方式处理:

i. 如果这个JAR文件中包含了一个META-INF/MANIFEST.MF文件,其中带有一个Main-Class属性,或者它包含了一个META-INF/application-client.xml文件,那么它就被认为是一个应用程序客户端模块。

ii. 如果这个JAR文件包含了一个META-INF/ejb-jar.xml文件,或者它包含了任何带有EJB注解(Stateless等等)的类,那么它就被认为是一个EJB模块。 

iii. 所有其它的JAR文件将会被忽略,除非它被某个JAR文件引用,并通过一种JAR文件引用机制找到,比如,Manifest文件中的Class-Path头元素。