EJB容器简单介绍(一)

EJB跟我们之前所了解的组件,框架,,类等都有什么关系?接下来主要是从容器入手来理解这些概念.

J2EE中容器充当中间件的角色。主要的容器包括:

WEB容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接更容器中的环境变量接口交互,不必关注其它系统问题。主要有WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。

EJB容器:Enterprise java bean 容器。更具有行业领域特色。他提供给运行在其中的组件EJB各种管理功能。只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如邮件服务、事务管理。WEB容器和EJB容器在原理上是大体相同的,更多的区别是被隔离的外界环境。WEB容器更多的是跟基于HTTP的请求打交道。而EJB容器不是。它是更多的跟数据库、其它服务打交道。但他们都是把与外界的交互实现从而减轻应用程序的负担。例如SERVLET不用关心HTTP的细节,直接引用环境变量session,request,response就行、EJB不用关心数据库连接速度、各种事务控制,直接由容器来完成。

       对象,,,模块,组件,容器,框架,这些java属于他们都有一个共同的特点:容纳.但是他们彼此之间又有什么关系和联系么?


对象(Object):

      java的世界里,对象是通过属性和方法来分别对应事物所具有的静态属性和动态属性.


(Class):

      用于描述同一类型的对象的一个抽象的概念.

对象和类的关系:

      类是具有共同的属性名称和行为的一组对象的抽象,而对象则是一个类的真实的例子。

 

组件(component):

      组件也是抽象的概念,可以理解为一些符合某种规范的类组合在一起就构成了组件。他可以提供某些特定的功能。J2EE来说,有什么servletjsp, javabeanejb都是组件。但实际他们都是类,只不过有他们特殊的规定。

 

组件和类的关系:符合某种规范的类的组合构成组件.

 

容器(Container):

        容器也叫做组件容器,组件容器是一种比较特殊的组件,它可以包含其他的组件。我们可以把组件放在组件容器中。反之,如果一个组件不是组件容器,则其中不能包含其他的组件。

      组件容器也是一种组件,所以一个组件容器可以放在另一个组件容器中。 组件容器的出现使得事情变得复杂了起来。我们可以把组件放在组件容器里,也可以把组件容器放在另一个组件容器里,这样就形成了有层次的组件结构。

     我们可以把普通的组件想像成为鸡蛋,而把组件容器想像成为篮子。那么,鸡蛋可以放在小篮子里,小篮子和别的鸡蛋又可以放在大篮子里。于是 ,篮子里可以有鸡蛋,还可以有其他的篮子,可以通过下面的手绘图进行理解.

 

 

 

计算机生成了可选文字:篮子(容器)鸡蛋(组件)O一、...,少O卜0


容器和组件的关系:容器是特殊的组件,可以包含其他组件的组件.

 

框架(framework):

就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统.java框架就是一些类和接口的集合,通过这些类和接口协调来完成一系列的程序实现。框架又叫做开发中的半成品,它不能提供整个WEB应用程序的所有东西,但是有了框架,我们就可以集中精力进行业务逻辑的开发而不用去关心它的技术实现以及一些辅助的业务逻辑。我们熟知的StructsSpring就是表示层和业务层框架的代表。


框架和组件的关系:框架是一组组组件构成的.


架构:

软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口()来实现。


架构和框架的关系:


框架不是构架。架构确定了系统整体结构、层次划分,不同部分之间的协作等设计考虑。框架比架构更具体,更偏重于技术涉嫌。对于同一架构(比如Web开发中的MVC),可以通过多种框架来实现。

 

     如果按照包含或者容纳的关系来汇总这些概念,得到下面的一张图,

 

计算机生成了可选文字:架构框架(1)框架(2)容器组件类对象」L二丁型


  • 17
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
好的,下面是一个简单EJB3 的示例: 首先,我们需要创建一个 EJB 接口: ``` @Remote public interface GreetingService { public String sayHello(String name); } ``` 然后,我们需要创建一个 EJB 实现类: ``` @Stateless public class GreetingServiceImpl implements GreetingService { @Override public String sayHello(String name) { return "Hello, " + name + "!"; } } ``` 在这个示例中,我们使用了 `@Remote` 注解将 `GreetingService` 标记为远程 EJB 接口,表示这个接口可以通过网络被远程调用。同时,我们使用了 `@Stateless` 注解将 `GreetingServiceImpl` 标记为无状态会话 EJB,表示这个 EJB 实现类没有状态,每次调用都是独立的。 最后,我们需要在 EJB 容器中部署这个 EJB,这里我们使用了 JavaEE 容器来完成这个任务。在项目的 `pom.xml` 文件中添加如下依赖: ``` <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> <scope>provided</scope> </dependency> ``` 然后,我们在容器中添加以下配置: ``` <ejb-jar> <enterprise-beans> <session> <ejb-name>GreetingService</ejb-name> <ejb-class>com.example.GreetingServiceImpl</ejb-class> <session-type>Stateless</session-type> </session> </enterprise-beans> </ejb-jar> ``` 现在,我们可以通过 JNDI 查找这个 EJB,然后调用它的方法: ``` Properties props = new Properties(); props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory"); props.put(Context.PROVIDER_URL, "remote://localhost:4447"); props.put(Context.SECURITY_PRINCIPAL, "username"); props.put(Context.SECURITY_CREDENTIALS, "password"); InitialContext context = new InitialContext(props); GreetingService service = (GreetingService) context.lookup("ejb:/myapp/GreetingService!com.example.GreetingService"); String message = service.sayHello("World"); System.out.println(message); ``` 这个示例中,我们使用了 JBoss AS 7 作为容器,通过 JNDI 查找 `GreetingService` EJB,然后调用它的 `sayHello` 方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值