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

这半年来公司一直在用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")

以上是一些暂时小总结.有时间再进行详细点的整理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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
EJB(Enterprise JavaBeans),Session Bean 和 Entity Bean 是两种不同类型的组件,用于实现不同的功能。 1. Session Bean(会话Bean): Session Bean 是用于处理业务逻辑的组件。它代表了一个特定的会话,可以执行一系列相关的操作。Session Bean 可以分为以下两种类型: - Stateless Session Bean(无状态会话Bean):它不保存客户端的状态信息,每个方法调用都是独立的。适用于无需保存客户端状态的业务逻辑。 - Stateful Session Bean(有状态会话Bean):它保存了客户端的状态信息,可以跟踪多个方法调用之间的状态。适用于需要保存客户端状态的业务逻辑。 2. Entity Bean(实体Bean): Entity Bean 用于表示业务领域的实体对象,例如数据库表的行。它们持久化到数据库,并提供对这些实体对象的增删改查等操作。Entity Bean 可以分为以下两种类型: - Container-Managed Persistence(CMP):容器管理持久化。在 CMP ,容器负责管理实体的持久化,开发人员只需定义实体类和相关的映射关系。 - Bean-Managed Persistence(BMP):Bean管理持久化。在 BMP ,开发人员需要自己编写代码来控制实体的持久化和数据库访问。 区别和含义: - Session Bean 主要用于处理业务逻辑,不负责持久化数据,而 Entity Bean 用于表示实体对象,并负责将实体对象持久化到数据库。 - Session Bean 可以是无状态或有状态的,而 Entity Bean 通常是有状态的,因为它们需要维护实体对象的状态和标识。 - Session Bean 的生命周期由客户端决定,而 Entity Bean 的生命周期由容器管理。 - CMP 提供了更简单的持久化解决方案,开发人员无需编写 SQL 或 JDBC 代码,而 BMP 需要开发人员手动管理数据库访问和事务。 需要注意的是,EJB 在 Java EE 6 版本之后已经进入了轻量级的 CDI(Contexts and Dependency Injection)时代,推荐使用 CDI 来管理会话和实体等组件。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值