科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道快速应用EJB控件访问EJB资源

快速应用EJB控件访问EJB资源

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

EJB是J2EE框架中最重要的部分,也是企业应用中最常用的技术之一,然而EJB的客户端编写对于开发者而言不是一件轻松的事情。

作者:佚名 来源:ZDNet China 2007年11月18日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共3页)

开发EJB控件

我们现在来开发一个EJB控件-- HelloWorldSessionEJBControl,通过它我们能够直接访问1、开发SessionBean中开发和部署的EJB。

HelloWorldSessionEJBControl通过JBoss提供的org.jnp.interfaces.NamingContextFactory工厂类获取EJB访问的上下文环境。

清单4中是EJB控件的全部源代码。

清单4:srcorgvivianjbeehivecontrolsexamplescontrolsHelloWorldSessionEJBControl.java

1. package org.vivianj.beehive.controls.examples.controls;
2.
3. import org.apache.beehive.controls.api.bean.ControlExtension;
4. import org.apache.beehive.controls.system.ejb.SessionEJBControl;
5. import org.vivianj.beehive.controls.examples.ejb.helloworldHome;
6. import org.vivianj.beehive.controls.examples.ejb.helloworldRemote;
7.
8. /**
9. * HelloWorldSessionEJBControl 用于封装访问远程JBoss服务器上
10. * SessionBean的操作方法
11. */
12. @ControlExtension
13. @SessionEJBControl.EJBHome(jndiName = “jndi/helloworld”)
14. @SessionEJBControl.JNDIContextEnv(
15. contextFactory = “org.jnp.interfaces.NamingContextFactory”,
16. providerURL = “jnp://localhost:1099”)
17. public interface HelloWorldSessionEJBControl
18. extends SessionEJBControl,
19. HelloWorldHome, HelloWorldRemote {
20. }

EJB控件调用

我们可以通过下面的几个步骤,实例化EJB控件并调用它的业务方法。

在Controller中使用声明式控件实例化定义成员变量_ejbControl。

@Control
HelloWorldSessionEJBControl _ejbControl;

完成控件的业务方法调用

在控件的某个Action方法中完成EJB业务方法的调用,这里要注意的是控件的业务方法通常都声明抛出RemoteException,所以调用的时候需要调用try … catch处理。

try {
_ejbControl.sayHello();
} catch (Exception e) {
e.printStackTrace();
}

移除控件实例,释放EJB引用

在控件使用完毕以后,应该调用控件的remove方法,以便释放对于EJB的引用,避免可能出现的服务器性能问题。

try {
_ejbControl.remove();
} catch (Exception e) {
e.printStackTrace();
}

测试EJB控件

一切准备就绪后,启动JBoss服务器,参考《控件入门》中“使用JUnit测试控件”部分的内容,编写单元测试TestCase测试新创建的EJB控件。

实例分析

从上面的例子中我们可以看到,使用EJB控件访问EJB资源的时候,开发者的工作被大大的简化了。开发者只需要开发一个继承自EJB控件的控件,使用EJB控件中规定的注释提供访问EJB所需要的一些环境参数,随后便可以使用声明式控件实例化方式完成控件的实例化,通过调用该控件实例的相关业务方法完成EJB资源的访问。

现在我们来分析一下上面创建的EJB控件-- HelloWorldSessionEJBControl (参见清单4)中的主要代码。

12. @ControlExtension 

在控件例子的12行,我们通过@ControllerExcention注释来说明接下来声明的这个接口是另外一个控件的扩展。HelloWorldSessionEJBControl控件继承自SessionEJBControl,所以必须使用在接口定义前使用ControllerExcention。

13. @SessionEJBControl.EJBHome(jndiName = “jndi/helloworld”)

在第13行代码中我们使用@SessionEJBControl.EJBHome关键词和它的jndiName属性来设置我们要访问EJB在目标服务器中发布时使用的jndiName。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章