Ejb中jar war ear的理解和Local和remote的理解(一)

本文介绍了使用EJB3、Struts2和JPA技术进行分布式开发的经验,重点讨论了不同类型的文件(jar、war、ear)在JBoss环境下的作用及session bean和entity bean之间的本地与远程调用区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这半年来公司一直在用EJB3+strust2+JPA进行开发...使用Jboss作为服务器的分布式开发。这里对ejb进行一些了解总结
1.jar,war,ear
1.1 Jar文件 (扩展名为. Jar)我们进行使用一些框架还有java包都是jar后缀的.它存放的是一些可以使.class文件.资源(resources)、辅助文件(auxiliary files)、
配置文件(xml等).主要是提供别人便捷!
JBOSS环境下:当我们使用Myeclipse建立一个ejb项目的时候.它add deployment进行jboss的时候就会产生一个.jar的文件..这就是一个可以进行远程和本地调用的ejb项目.
我们一般将各个功能部分进行代码的分拆然后产生多个ejb jar项目.再使用ant将他们的接口进行打包给予别的项目进行调用.这样便于以后的分布式开发


1.2 War文件(扩展名为.War)使用tomcat开发过的和下载一些网上的源码在tomcat运行过的就知道web应用的后缀名为war..一般定制成这样的格式是方便管理...一个Web应用程序被定义为单独的一组文件、类和资源,用户可以对jar文件进行封装,并把它作为小型服务程序(servlet)来访问。
我们最常使用建立一个web项目然后导进一些框架包(如shh的框架jar包)。然后对这些jar包的类进行调用完成我们项目开发.
JBOSS环境下:当我们使用Myeclipse建立一个web项目的时候.它add deployment进行jboss的时候就会产生一个.war的文件..如何一个.war中servlet需要使用同在JBoss下的ejb项目需要使用remote来进行调用(虽然在同一个Jboss环境下.反正web应用对Jar的调用都要是有remote接口...)

1.3 Ear文件(扩展名为.Ear)包含全部企业应用程序。在这种情形下,一个企业应用程序被定义为多个jar文件、资源、类和Web应用程序的集合。(一般我们完成开发后会将ejb的jar项目和相应的web项目使用ant进行打包成ear方便部署)

2.local和remote的区别
在一个ejb项目中.session bean和entity bean之间调用使用的是local接口.
@Local({ContentMgr.class})--标志bean可以进行本地调用
@Remote({ContentMgr.class})--标志bean可以进行远程调用
由于remote接口对性能的影响很大.所以我们在能使用Local进行调用的时候尽量使用local
这里使用本地调用方式有2种
1.


Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url", "localhost:1099");
props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");
InitialContext context = new InitialContext(props);
RankDao rankDao = (RankDao)context.lookup("RankDaoImpl/local");

2.使用@EJB(beanName="RankDaoImpl")

以上是一些暂时小总结.有时间再进行详细点的整理
Files contained in javax.ejb.jar: META-INF/MANIFEST.MF javax.ejb.AccessLocalException.class javax.ejb.AccessTimeout.class javax.ejb.ActivationConfigProperty.class javax.ejb.AfterBegin.class javax.ejb.AfterCompletion.class javax.ejb.ApplicationException.class javax.ejb.Asynchronous.class javax.ejb.AsyncResult.class javax.ejb.BeforeCompletion.class javax.ejb.ConcurrencyManagement.class javax.ejb.ConcurrencyManagementType.class javax.ejb.ConcurrentAccessException.class javax.ejb.ConcurrentAccessTimeoutException.class javax.ejb.CreateException.class javax.ejb.DependsOn.class javax.ejb.DuplicateKeyException.class javax.ejb.EJB.class javax.ejb.EJBAccessException.class javax.ejb.EJBContext.class javax.ejb.EJBException.class javax.ejb.EJBHome.class javax.ejb.EJBLocalHome.class javax.ejb.EJBLocalObject.class javax.ejb.EJBMetaData.class javax.ejb.EJBObject.class javax.ejb.EJBs.class javax.ejb.EJBTransactionRequiredException.class javax.ejb.EJBTransactionRolledbackException.class javax.ejb.embeddable.EJBContainer.class javax.ejb.EnterpriseBean.class javax.ejb.EntityBean.class javax.ejb.EntityContext.class javax.ejb.FinderException.class javax.ejb.Handle.class javax.ejb.HomeHandle.class javax.ejb.IllegalLoopbackException.class javax.ejb.Init.class javax.ejb.Local.class javax.ejb.LocalBean.class javax.ejb.LocalHome.class javax.ejb.Lock.class javax.ejb.LockType.class javax.ejb.MessageDriven.class javax.ejb.MessageDrivenBean.class javax.ejb.MessageDrivenContext.class javax.ejb.NoMoreTimeoutsException.class javax.ejb.NoSuchEJBException.class javax.ejb.NoSuchEntityException.class javax.ejb.NoSuchObjectLocalException.class javax.ejb.ObjectNotFoundException.class javax.ejb.PostActivate.class javax.ejb.PrePassivate.class javax.ejb.Remote.class javax.ejb.RemoteHome.class javax.ejb.Remove.class javax.ejb.RemoveException.class javax.ejb.Schedule.class javax.ejb.ScheduleExpression.class javax.ejb.Schedules.class javax.ejb.SessionBean.class javax.ejb.SessionContext.class javax.ejb.Session
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值