EJB中bean的调用

1 篇文章 0 订阅

    最近这段时间一直在做分布式系统的开发,分布式系统的特点在百度上的解释是高度的内聚性和透明性,内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统,透明性是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。然而分布式系统不仅仅局限在数据库的多地点分布。

    现在从事的项目中分布式的实现方式是通过EJB来部署分布式应用程序,这样一来提高了开发的效率,突破了项目开发的很多限制,而且EJB具有很好的拓展性,支持分布式、事务处理、数据存储,具有很高的安全性。

    下边结合自己实际在项目中对EJB的使用来介绍一下如何实现EJB中各个bean之间的调用。不同bean之间的调用分为本地调用@local和远程调用@remote,本地调用即自己开发接口,自己使用;而远程调用即去调用别人已经开发好的接口,这也是前边提到的提高开发效率的所在!

一、本地调用

@Stateless(name = "publicChooseCourseBeanImpl")
@TransactionManagement(TransactionManagementType.CONTAINER)
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class PublicChooseCourseBeanImpl extends
		BaseBeanImpl<PublicChooseCourse> implements PublicChooseCourseBean {
	
	@EJB(name = "publicChooseCourseDaoImpl")
	private PublicChooseCourseDao publicChooseCourseDao;

	public PublicChooseCourseDao getPublicChooseCourseDao() {
		return publicChooseCourseDao;
	}

	public void setPublicChooseCourseDao(
			PublicChooseCourseDao publicChooseCourseDao) {
		this.publicChooseCourseDao = publicChooseCourseDao;
	}
	List list = new ArrayList();
	list = publicChooseCourseDao.queryinstitutionList(dataBaseName);
}
    通过本地的EJB注解,实现对本地的调用。

二、远程调用

<span style="font-family:KaiTi_GB2312;font-size:18px;">@Stateless(name = "publicChooseCourseBeanImpl")
@Remote(PublicChooseCourseBean.class)
@TransactionManagement(TransactionManagementType.CONTAINER)
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class PublicChooseCourseBeanImpl extends
		BaseBeanImpl<PublicChooseCourse> implements PublicChooseCourseBean {
	ChooseCourseRoundBeanImpl chooseCourseRoundBeanImpl = new ChooseCourseRoundBeanImpl();
	private ChooseCourseRoundBean chooseCourseRoundBean = null;
	private ChooseCourseRoundGradeCollegeBean chooseCourseRoundGradeCollegeBean;
	private CourseRoundBean courseRoundBean;

	public PublicChooseCourseBeanImpl() {
		/* 轮次地址 */
		String ronndAddress = "itoo-basic-publicchoosecourse-ear/itoo-basic-publicchoosecourse-core-0.0.1-SNAPSHOT/ChooseCourseRoundBeanImpl!com.tgb.itoo.basic.service.ChooseCourseRoundBean";
		
		try {
			chooseCourseRoundBean = (ChooseCourseRoundBean) this
					.lookupRemoteBean(ronndAddress);			

		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		ChooseCourseRound roundResult = new ChooseCourseRound();
		roundResult = chooseCourseRoundBean.saveRound(roundid, beginTime,
				endTime, leaststTime, dataBaseName);

	}
}</span>

    这里的远程调用需要根据远程接口的地址来完成对接口的远程访问,远程地址的获取方式可以通过JBoss Management来获取。

拓展:

    EJB通过hibernate实现了数据层的持久化,使开发人员从繁琐的数据持久化解脱出来,而且hibernate在数据查询、更新、数据池、事务处理、实体关系处理方面都做的非常好,之后也会做出细致的分享。

    以上便是自己总结的EJB中bean之间的调用关系,初次接触难免会有疏漏之处,还望大家多多指教!

    

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值