资源环境和管理对象
资源环境的进入对象,不需要放入资源参考目录.一些资源可能有需要进入你的组件类别之内被从 JNDI ENC 获得或注入的其他额外的被管理的对象。
一个执行对象是一个资源,在部署时配置,并且在运行期间被EJB容器所管理.它们常常定义和部署通过一个JCA资源适配器.
此外的执行对象,资源环境项目被用到参考服务,像javax.transaction.UserTransaction 和javax.transaction.TransactionSynchronizationRegistry .
为了获取引用到其它的服务,可以使用@Resource注释。当使用这个注释时,authenticationType( ) 和 shareable( )属性是无意义的,并且指定它是不合法的.
@Stateful
public class TravelAgentBean implements TravelAgentRemote {
@Resource private javax.transaction.UserTransaction utx;
...
}
如果你使用XML,你必需使用一个分开的<resource-env-ref>元素,它包含子元素<resource-env-ref-name> (必需的), <resource-env-ref-type> (必需的), and <mapped-name> (可选的), 如同<injection-target> (可选的)元素.
<resource-env-ref-name>元素与JNDI ENC名字相关联.<resource-env-ref-type>为引用的类型,<mapped-name> 和<injection-target>的使用相同的方法如同它们使用在<resource-ref>:
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>TravelAgentBean</ejb-name>
<resource-env-ref>
<resource-env-ref-name>UserTransaction</res-ref-name>
<resource-env-ref-type>javax.transaction.UserTransaction
</res-type>
<injection-target>
<injection-target-class>
com.titan.travelagent.TravelAgentBean
</injection-target-class>
<injection-target-name>utx
</injection-target-name>
</injection-target>
</resource-env-ref>
</enterprise-beans>
</ejb-jar>
XML攫取引用到一个javax.transaction.UserTransaction 对象并且注入到travelAgentBean类的utx字段.
环境项目
ProcessPayment EJB 有一个配置属性为最小检查数.这些类型的配置属性被叫做环境项目.组件类使用环境项目来满足客户的需求.
虽然他们的定义可以使用注释,环境项目总是配置通过XML,通过他们配置数值并且不是注释.<env-entry>元素用于定义他们.这个元素包含子元素<description> (可选的), <env-entry-name> (必需的), <env-entry-type> (必需的), and <env-entry-value> (可选的),如同<injection-target> (可选的)元素.这是一个典型的<env-entry>定义:
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>ProcessPaymentBean</ejb-name>
<env-entry>
<env-entry-name>minCheckNumber
</env-entry-name>
<env-entry-type>java.lang.Integer</env-entry-type>
<env-entry-value>2000</env-entry-value>
</env-entry>
</enterprise-beans>
</ejb-jar>
<env-entry-name>元素与java:comp/env上下文关联,例如,minCheckNumber项目可以访问使用java:comp/env/minCheckNumber路径的JNDI ENC查找:
InitialContext jndiContext = new InitialContext( );
int minValue = (Integer)jndiContext.lookup("java:comp/env/minCheckNumber");
作为一种选择,它可以查找同 EJBContext.lookup( )方法使用minCheckNumber名字.
<env-entry-type>的类型可以是String或多个原始包装类型中的一个,包括Integer, Long, Double, Float, Byte, Boolean, 和Short.
<env-entry-value>是可选的.它的值的指定可以通过Bean的开发者或延期的应用程序的集合或部署.
<injection-target>元素可以用于初始化一个字段或setter方法在环境项目值中.
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>ProcessPaymentBean</ejb-name>
<env-entry>
<env-entry-name>minCheckNumber</env-entry-name>
<env-entry-type>java.lang.Integer</env-entry-type>
<env-entry-value>2000</env-entry-value>
<injection-target>
<injection-target-class>
com.titan.processpayment.ProcessPaymentBean
</injection-target-class>
<injection-target-name>minCheckNumber</injection-target>
</injection-target>
</env-entry>
</enterprise-beans>
</ejb-jar>
前面的XML将会注入2000到minCheckNumber字段或调用一个setter方法名字为setMinCheckNumber( )在组件类中:
@javax.annotation.Resource注释可以用于引用环境项目代替<injection-target>元素:
@Resource(name="minCheckNumber") private int minCheckNumber = 100;
在这个例子中,2000将会被放入环境项目,描述在XML和注入到minCheckNumber字段.如果没有XML配置这个值,默认值将会是100,但是没有项目被创建在ENC中.一个通常的方式是注释你的字段使用@Resource和提供一个默认值为字段可以随意的覆盖在XML中.使用@Resource注释同String或原始类型值标识作为一个环境项目到EJB容器.当 @Resource指明环境项目,仅有name()属性是允许指定的.它不会做很多的判断使用@Resource为环境项目在类级,同样的没有方法初始化值在注释中.
分享到:
相关推荐
### Seam JSF EJB 资源相关连部分详解 #### 一、概述 Seam、JSF(JavaServer Faces)和EJB(Enterprise JavaBeans)都是Java企业级开发的重要组成部分,它们各自解决了不同的问题,并且可以很好地协同工作来构建...
开发者只需将打包好的EJB模块部署到JBoss服务器,服务器会自动处理EJB的实例化、生命周期管理和资源管理。 **网上订餐系统的功能模块** 1. **用户管理**:包括用户注册、登录、个人信息管理等。EJB可能定义了对应...
- 配置`ejb-jar.xml`以包含这些依赖项。 **3.6 共用了第三方类库的J2EE项目如何打包** - 采用类似的方法,将第三方类库统一管理。 - 在项目的`pom.xml`或构建脚本中指定依赖,确保所有必需的类库都被正确地打包。 ...
3. **服务分发**:J2EE支持服务分发,通过RMI(Remote Method Invocation)和JNDI(Java Naming and Directory Interface)等机制,使得服务可以在网络中的任何节点上注册、查找和调用,从而实现服务的透明分布。...
- **在服务器中部署解决方案**:熟悉EJB容器环境,能在服务器上部署EJB应用程序。 - **创建独立的企业Bean客户端**:学会编写独立于服务器的应用程序,这些程序可以调用EJB服务。 - **在会话Bean中使用实体Bean**:...
- 资源环境引用类似于资源引用,但它们引用的是环境条目。 - 这种机制允许组件访问环境条目,而无需显式指定名称。 - **支持EJB引用(ejb-ref)**: - EJB引用允许一个组件引用另一个EJB组件。 - 通过在部署描述...
3. **运行环境管理**:EJB Server负责管理组件的运行环境,包括资源分配和协调,确保组件的高效运行。 4. **生命周期管理**:EJB Container管理EJB对象的整个生命周期,包括安全性、事务处理、上下文切换等关键功能...
- 访问官方网站或可信第三方资源下载 MyEclipse 6.0 安装包。 - 运行安装程序并按照向导提示完成安装过程。 2. **激活步骤**: - 启动 MyEclipse 6.0 软件。 - 打开“帮助”菜单,选择“许可证”选项。 - 输入...
总结,学生宿舍管理系统的设计与实现是一项结合了软件工程理论、JavaEE技术实践的重要项目。通过本系统的实施,可以提升高校的管理效率,改善学生的生活体验,同时也是对学生开发者技术能力的一次锻炼和检验。
EJB有三种类型:会话Bean(Session Beans)、实体Bean(Entity Beans)和消息驱动Bean(Message-Driven Beans),分别用于业务逻辑处理、数据持久化和消息处理。 5. Spring框架与分布式 Spring框架提供了多种分布式...
分布式JAVA应用基础与实践是Java开发领域中一个重要的主题,主要涵盖了如何在大规模网络环境中设计、部署和管理Java应用程序。本书由林昊编著,旨在帮助开发者深入理解分布式系统的基本概念,掌握Java在分布式环境中...
5. **EJB的查找与注入**:在Java EE环境中,EJB可以通过JNDI名查找和注入到其他组件中。 总之,`fscontext.jar`和`providerutil.jar`是JNDI技术的重要组成部分,它们提供了对本地文件系统和JNDI服务提供者管理的...
3. **改进的EJB**:在Java EE 6中,Enterprise JavaBeans (EJB)得到了重大改进,EJB 3.1引入了更简单的编程模型,如无状态会话bean(@Singleton和@Stateless)、有状态会话bean(@Stateful)、消息驱动bean(@...
7. 分布式服务治理:包括服务注册与发现、熔断、降级、限流、隔离等,如Netflix的Hystrix和Spring Cloud的相关组件。 “源码”部分很可能是书中示例代码的实现,通过阅读和运行这些代码,读者可以更直观地理解...
在IT行业中,尤其是在互联网领域,大型分布式网站架构设计与实践是一项至关重要的技术。随着互联网业务的飞速发展,单体架构已经无法满足高并发、高可用性以及可扩展性的需求,因此分布式系统的概念应运而生。本资料...
- Spring Cloud:为微服务提供一套完整的解决方案,包括服务注册与发现、配置中心、负载均衡、熔断器等。 - Dubbo:阿里巴巴开源的分布式服务框架,提供服务治理功能。 6. 高可用与容错: - 负载均衡:如Nginx、...