通过实例讲解如何在OSGi应用中使用EJB技术

使用 WAS V8.5 的 OSGi 功能,不仅能够将已有的 EJB 模块转化为以 OSGi Bundle 为单位的 OSGi 应用,也可以结合 Rational Development 工具直接开发基于 EJB 的 OSGi 应用。在本文中,我们首先介绍 WAS V8.5 在 OSGi 编程方面的增强,然后通过实例讲解如何在 OSGi 应用中使用 EJB 技术。

WebSphere Application Server V8.5 对 OSGi 一个最重要的增强就是提供了对 EJB3.x 的支持(目前暂时不支持 EJB2.x 及以前的版本),OSGi 应用可以包含 EJB 模块,并能直接的访问和调用包含在其内的 EJB。我们可以在 OSGi 应用中添加包含 Stateful,Stateless,Singleton 以及 Message-Driven Beans 的 EJB 模块,所有的 EJB 功能都能在 OSGi 应用中继续保留,这与之前 JEE 应用中的 EJB 模块一样。对于包含 EJB 模块的 OSGi 应用,在对其进行部署,配置和更新的时候,采取的方法与之前对非 OSGi 应用采取的方法是一样的(包括命令行和控制台两种方法)。

开发人员可以选择将 EJB Bundle 打包到 OSGi 应用中(EBA 文件),也可以将其导入到 WAS 的内部 Bundle 存储库中,然后在 OSGi 应用的元数据文件(APPLICATION.MF)中添加对该 EJB Bundle 的引用,这两种方式达到的效果是相同的。

图 1. 管理包含 EJB 的 OSGi 应用

只需要很少的代码改动就可以将已经存在的 EJB 模块转化成 EJB Bundle 并对其添加 OSGi 的功能特性,一个 EJB Bundle 本质上就是一个 EJB 模块加上一个元数据描述文件(MANIFEST.MF)。我们通过在 MANIFEST.MF 中引入一个新的属性标识“Export-EJB:

”将一个 Bundle 定义为 EJB Bundle, EJB 容器负责加载并运行这些 EJB Bundle。

在“Export-EJB:”后面指定的 EJBs 将会以 OSGi 服务的形式进行发布,其他的 OSGi Bundle 可以查找并使用这些服务,没有在“Export-EJB:”后列出的 EJBs 依然会被加载和运行,但是这些 EJBs 对于服务存储库是不可见的,其他的 Bundle 不能使用未被列出的 EJBs。除了在“Export-EJB:”后面指定特定的 EJBs,还可以使用如下值设置:

冒号后加一个空格:表明将 Bundle 中所有的 EJBs 发布成 OSGi 服务并导出供其他 Bundle 使用 NONE:表明不将任何的 EJBs 发布为 OSGi 服务

图 2. 在 OSGi 应用中使用 EJB
&">nbsp;

时间: 2024-11-09 00:36:51

通过实例讲解如何在OSGi应用中使用EJB技术的相关文章

实例讲解如何在DB2 UDB中监控死锁的发生

前言:这篇文章通过具体的实例阐述了如何在DB2 UDB 中监控死锁的发生.在DB2 UDB中有两种类型的监控器:快照监控器和事件监控器.快照顾名思义就是数据库连续状态下的一个切面,通过快照监控器,你可以很方便地查看当前连接的应用程序,当前等待的锁,当前的死锁,以及正在执行的SQL语句,同时你可以查看缓冲区,表和表空间的用法.假如保存历史数据,并且能够做出比较,对于分析数据库的并发性能有很大的帮助. 但是我们并不能猜测什么时候发生死锁,所以假如有一个后台程序能够一直监控数据库的活动,记录下所有的死

实例讲解如何在PHP的Yii框架中进行错误和异常处理_php技巧

Yii已经默认已经在CApplication上实现了异常和错误的接管,这是通过php的set_exception_handler,set_error_handler实现的.通过这两个PHP内置函数,可以对程序中未捕获的异常以及错误进行接管处理,从而提高程序的可维护性.这在大型系统是至关重要的,当发生错误时,我们希望能将相关详细信息记录,甚至是即时发送报警,从而缩短故障修复时间,提高整个系统的稳定性. 默认情况下,Yii会将异常处理分配给CApplication::handleException,

实例讲解在C++的函数中变量参数及默认参数的使用_C 语言

包含变量参数列表的函数如果函数声明中最后一个成员是省略号 (...),则函数声明可采用数量可变的参数.在这些情况下,C++ 只为显式声明的参数提供类型检查.即使参数的数量和类型是可变的,在需要使函数泛化时也可使用变量参数列表.函数的系列是一个使用变量参数列表的函数的示例.printfargument-declaration-list 包含变量参数的函数 若要访问声明后的参数,请使用包含在标准包含文件 STDARG.H 中的宏(如下所述). 采用数量可变的参数的函数声明至少需要一个占位符参数(即使

实例讲解Java的设计模式编程中责任链模式的运用_java

定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止.类型:行为类模式类图: 首先来看一段代码: public void test(int i, Request request){ if(i==1){ Handler1.response(request); }else if(i == 2){ Handler2.response(request); }else if(i == 3){ Handler3.r

实例解析如何在Android应用中实现弹幕动画效果_Android

在B站或者其他视频网站看视频时,常常会打开弹幕效果,边看节目边看大家的吐槽.弹幕看起来很有意思,今天我们就来实现一个简单的弹幕效果.  从直观上,弹幕效果就是在一个ViewGroup上增加一些View,然后让这些View移动起来.所以,整体的实现思路大概是这样的: 1.定义一个RelativeLayout,在里面动态添加TextView. 2.这些TextView的字体大小.颜色.移动速度.初始位置都是随机的. 3.将TextView添加到RelativeLayout的右边缘,每隔一段时间添加一

实例讲解如何在iOS应用开发中使用设计模式中的代理模式_IOS

代理模式是OC中一种常见的设计模式,那么什么是代理模式呢?举个栗子,假设你是一个日发货量过万的淘宝卖家(A),但是每天的派件不可能你本人或者让你的员工去派件,因此你发布了一条信息(B),上面注明各种要求,各大快递公司看到有那么大的利益纷纷上门沟通,最后你选择了一件快递公司(C).那么在上面的例子中,我们即是委托人,发布的信息即协议(protocol),上面规定了派件人需要完成的事,而最后选择的快递公司也就是代理人(delegate),代理我们去派件. 类图: 根据以上类图,可以知道在代理模式中的

实例讲解Java的Spring框架中的控制反转和依赖注入_java

近来总是接触到 IoC(Inversion of Control,控制反转).DI(Dependency Injection,依赖注入)等编程原则或者模式,而这些是著名 Java 框架 Spring.Struts 等的核心所在.针对此查了 Wikipedia 中各个条目,并从图书馆借来相关书籍,阅读后有些理解,现结合书中的讲解以及自己的加工整理如下:   eg1问题描述: 开发一个能够按照不同要求生成Excel或 PDF 格式的报表的系统,例如日报表.月报表等等.   解决方案: 根据"面向接口

实例讲解Java的Spring框架中的AOP实现_java

简介面向切面编程(AOP)提供另外一种角度来思考程序结构,通过这种方式弥补了面向对象编程(OOP)的不足. 除了类(classes)以外,AOP提供了 切面.切面对关注点进行模块化,例如横切多个类型和对象的事务管理. (这些关注点术语通常称作 横切(crosscutting) 关注点.) Spring的一个关键的组件就是 AOP框架. 尽管如此,Spring IoC容器并不依赖于AOP,这意味着你可以自由选择是否使用AOP,AOP提供强大的中间件解决方案,这使得Spring IoC容器更加完善.

实例讲解Android多线程应用开发中Handler的使用_Android

其实可以理解Handler为主线程和另外的线程之间进行数据更新的东东,并且Handler在主线程中,并在Handler直接调用线程的run方法 package com.Handler02; import android.app.Activity; import android.os.Bundle; import android.os.Handler; public class Handler02Activity extends Activity { /** Called when the act