zoukankan      html  css  js  c++  java
  • J2EE

    1.EJB


    在J2EE里,Enterprise Java Beans(EJB)称为Java 企业Bean,是Java的核心代码,分别是会话Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。

    •  EJB (Enterprise JavaBeans) :
    •  
    • EJB不是一个具体的产品,而是一个Java服务器端组件开发的规范,软件厂商根据它来实现EJB服务器。
    • 使用EJB,Java程序员可以将一些定义明确的程序块组合到一起,从而方便、快捷地建构分布式应用程序
    • 使用EJB可以使整个程序分块明确,并且EJB可以使用其它EJB或JDBC等服务,从而增强了分布式应用程序的可扩展性和性能;
    • EJB规范在简化分布式应用程序开发复杂性方面做了大量的工作,所以EJB程序员不必太担心事务处理、多线程、资源管理等方面的问题,可以专注于支持应用所需的商业逻辑,而不用担心周围框架的实现问题。
    • EJB的使用增强了整个系统程序的可靠性、可管理性和可移植性。

    这种基于组件,具有平台无关性的J2EE 结构使得J2EE 程序的编写十分简单,因为业务逻辑被封装成可复用的组件,并且J2EE 服务器以容器的形式为所有的组件类型提供后台服务. 因为你不用自己开发这种服务, 所以你可以集中精力解决手头的业务问题.
    容器和服务
    容器设置定制了J2EE服务器所提供得内在支持,包括安全,事务管理,JNDI(Java Naming and Directory Interface)寻址,远程连接等服务,以下列出最重要的几种服务:J2EE安全(Security)模型可以让你配置 web 组件或enterprise bean ,这样只有被授权的用户才能访问系统资源. 每一客户属于一个特别的角色,而每个角色只允许激活特定的方法。你应在enterprise bean的布置描述中声明角色和可被激活的方法。由于这种声明性的方法,你不必编写加强安全性的规则。 J2EE 事务管理(Transaction Management)模型让你指定组成一个事务中所有方法间的关系,这样一个事务中的所有方法被当成一个单一的单元. 当客户端激活一个enterprise bean中的方法,容器介入一管理事务。因有容器管理事务,在enterprise bean中不必对事务的边界进行编码。要求控制分布式事务的代码会非常复杂。你只需在布置描述文件中声明enterprise bean的事务属性,而不用编写并调试复杂的代码。容器将读此文件并为你处理此enterprise bean的事务。JNDI 寻址(JNDI Lookup)服务向企业内的多重名字和目录服务提供了一个统一的接口,这样应用程序组件可以访问名字和目录服务.J2EE远程连接(Remote Client Connectivity)模型管理客户端和enterprise bean间的低层交互. 当一个enterprise bean创建后, 一个客户端可以调用它的方法就象它和客户端位于同一虚拟机上一样. 生存周期管理(Life Cycle Management)模型管理enterprise bean的创建和移除,一个enterprise bean在其生存周期中将会历经几种状态。容器创建enterprise bean,并在可用实例池与活动状态中移动他,而最终将其从容器中移除。即使可以调用enterprisebean的create及remove方法,容器也将会在后台执行这些任务。 数据库连接池(Database Connection Pooling)模型是一个有价值的资源。获取数据库连接是一项耗时的工作,而且连接数非常有限。容器通过管理连接池来缓和这些问题。enterprise bean可从池中迅速获取连接。在bean释放连接之可为其他bean使用。
    容器类型
    J2EE应用组件可以安装部署到以下几种容器中去:
    EJB 容器管理所有J2EE 应用程序中企业级bean 的执行. enterprise bean 和它们的容器运行在J2EE 服务器上.
    Web 容器管理所有J2EE 应用程序中JSP页面和Servlet组件的执行. Web 组件和它们的容器运行在J2EE 服务器上.
    应用程序客户端容器管理所有J2EE应用程序中应用程序客户端组件的执行. 应用程序客户端和它们的容器运行在J2EE 服务器上.
    Applet 容器是运行在客户端机器上的web浏览器和 Java 插件的结合.

    EJB — J2EE的基石:

    EJB服务器是:

    管理EJB容器的高端进程或应用程序,并提供对系统服务的访问。EJB服务器也可以提供厂商自己的特性,如优化的数据库访问接口,对其他服务(如CORBA服务)的访问。一个EJB服务器必须提供支持对JNDI的名字服务和TS事务服务的可访问。

    EJB分为两种:

    会话EJB和实体EJB,会话EJB向客户提供一定的服务,如:特定的商业逻辑、数据库查询等;而实体EJB则代表数据对象,通常代表的是数据表记录集的一行,一个实体EJB可以同时与多个客户进行交互

     

    2.CORBA技术:


    CORBA(Common Object Request Broker Architecture)是一个分布式对象体系结构,它独立于平台,也独立于语言。

    在这个体系结构中,一个对象可以被本机上的客户或远程客户通过方法激活来存取。客户(一个对象或应用)无须知道被调用对象(称为服务对象)的运行环境,也无须知道实现这个对象的编程语言,客户只要知道服务对象的逻辑地址和提供的接口。

    这种互操作性的关键是IDL(Interface Definition Language、接口定义语言),IDL说明对象接口中的方法,这些方法可以被其它对象(或应用)激活。

     

    3.RMI技术:


    RMI(Remote Method Invoke)是一种被EJB使用的更底层的协议,RMI协议调用远程对象上方法,使用序列化方式在客户端和服务器端的对象之间传递数据。

    RMI和CORBA相比:

    两者的关键差别在于语言环境,Java RMI是一个分布式对象计算的纯Java解决方案(如,在Java RMI中,对象的接口用Java定义,而不是用IDL);

    其次,CORBA没有定义安全服务,而Java RMI继承了Java的安全性;

    再者,CORBA有不同的实现,不同的独立软件开发商的不同实现均有独特性,这使得在不同平台上的匹配比较困难,而且不是所有CORBA产品开发商都支持所有平台,而几乎所有平台都支持Java虚拟机,因此Java RMI具有更高的可移植性。如果客户对象和服务对象都基于Java虚拟机,那么Java RMI是分布对象计算的最好选择

    最后,IIOP已经提供了Java RMI和CORBA的互操作能力,而且两者的发展有互相借鉴的趋势。

     

    4.JSP技术:


    JSP是服务器端的脚本语言,是以Java和Servlet为基础开发而成的动态网页生成技术,它的底层实现是Java Servlet。

    JSP(Java Server Pages)页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。

    特点:面向对象,跨平台,和Servlet一样稳定,可以使用Servlet提供的API,克服了Servlet的缺点。

    应用:一般和JavaBeans结合使用,从而将界面表现和业务逻辑分离。

    JSP是由Sun推出的一项技术,是基于JavaServlet以及整个java体系的Web开发技术,利用这一技术可以建立先进、安全和跨平台的动态网站。ASP是MS公司推出的技术,只能在MS的平台上运行,无法实现跨平台,也无安全性保障。

    ASP下的编程语言是 VBScript 之类的脚本语言,而JSP 使用的是Java。

    ASP 与 JSP 还有一个更为本质的区别:两种语言引擎用完全不同的方式处理页面中嵌入的程序代码。在 ASP 下, VBScript 代码被 ASP 引擎解释执行;在 JSP 下,代码被编译成 Servlet 并由 Java 虚拟机执行,这种编译操作仅在对 JSP 页面的第一次请求时发生。

     

    5.Java Servlet技术:


    Servlets(=Server +Applet):是一些运行于Web服务器端的Java小程序,用来扩展Web服务器的功能。

    Servlet是一种扩展Web服务器功能的技术,而且由于它是用Java编写的,所以能够访问整个Java API库,包括用于访问企业数据库的JDBC API。

    Servlets用特定的Java解决方案替代了其它的Web服务器方编程模式(如:CGI,ISAPI等),因而继承了Java的所有特性(跨平台、多线程、OO)。

    用来编写Servlets的Servlet API对于服务器环境和协议没有任何特殊的要求,所以Servlets具有很强的可移植性,也不像利用CGI程序等其它方式那样具有性能局限。

    Servlets也同样使用HTTP协议与客户端进行通讯,所以有时也称Sevlets为“HTTP Servlets”。

     

     

     

    Java Servlet和JSP的比较:

    相似:

    n两者都是基于Java的技术,所以都继承了Java的所有特性(跨平台、多线程、OO ),都可以使用Java强大的API。

    n两者工作方式相似:JSP代码先被JSP容器转换为Servlet代码再编译为类。

    n两者在J2EE体系结构中的工作层次相同,都负责与客户端的连接。

    不同:

    n编程方式不同。Servlets是一些运行于Web服务器端的Java小程序;而JSP是脚本,编写起来更简单容易。

    n应用目的不同。Servlet主要用于从客户端接收请求信息,而JSP主要负责将服务器端信息传送到客户端。

    n使用JSP的真正意义在于:可以将界面设计和业务逻辑设计分离。

    n

     

     

     

    6.JavaBean技术:


    nJavaBean是基于Java的组件模型,有点类似于Microsoft的COM组件。

    nJavaBean通过Java虚拟机(Java Virtual Machine)执行,运行JavaBean最小的需求是JDK1.1或者以上的版本。

    n在Java平台中,通过JavaBean可以无限扩充Java程序的功能,通过JavaBean的组合可以快速的生成新的应用程序。

    n对于程序员来说,最好的一点就是JavaBean可以实现代码的重复利用,另外对于程序的易维护性等等也有很重大的意义。

    nJavaBean传统的应用在于可视化的领域,如AWT下的应用。自从Jsp诞生后,JavaBean更多的应用在了非可视化领域,在服务器端应用方面表现出来了越来越强的生命力。

     

    7.JDBC技术:


    n

    nJDBC是一组API,定义了用来访问数据源的标准Java类库,使用这个类库可以以一种标准的方法、方便地访问数据库资源。

    nJDBC对数据库的访问具有平台无关性。

    nJDBC API为访问不同的数据库提供了一种统一的途径,象ODBC一样,JDBC对开发者屏蔽了一些细节问题。

    nJDBC的目标是使应用程序开发人员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。

     

    8.XML技术:


    nXML(Extensible Markup Language)是一种可以用来定义其它标记语言的语言,被用来在不同的商务过程中共享数据。

    nXML的发展和Java是相互独立的,但是它和Java具有的相同目标即平台独立性。通过将Java和XML的组合,可以得到一个完美的具有平台独立性的解决方案。

    nJ2EE平台全面支持和实施XML,这种强大的组合可使XML具备跨平台的兼容性,甚至用于对XML代码进行语法检查和调试的工具也可与平台无关。

     

     

    9.JMS技术:


    JMS是一种基于 Java的技术,因此是平台无关的。它为消息服务定义了通用 Java 语言接口,支持最常见的消息传递模型(发布/订阅和点到点)。通过对JMS(Java消息服务)API的访问可实现面向消息的通信 。 JMS通常用来实现异构系统之间的松散集成。

     

     

    10.消息系统的特点:


    - 消息是异步的。

    - 允许不同的应用程序之间进行通讯。

    -消息应用程序之间是对等的,服务器与客户机之间没有明显的界限。 消息的生产者可以消费消息,消费消息的应用程序也可以生产消息。

    消息系统的优势:

    -与平台无关,与在网络上所处的位置无关。

    -是可伸缩,可扩展的。需更大的吞吐量,只需添加硬 件即可。可支持数万台客户机,每秒钟可处理事件的数目可达几万。

    -在异构的环境中可以很好地工作。

    -是健壮的,发送接受可以失败,网络也可以失败,这时Messaging System可以继续执行它的职责。

     

    11.几个对应于几种服务的企业级API


    JNDI(Java Naming and Directory Interface)
    JMAPI(Java Management API)
    JTS/JTA(Java Transaction Service/API)
    Java Security API

     

    12.J2EE核心技术中最常用的技术:


    EJB CORBA RMIJSP

    Java ServletJavaBeanJDBCXMLJMS……

    n开发大型企业级应用:异构、分布、数据交换

    CORBA RMIXMLJMS……

     

     

    13.sleep 和wait


    1. sleep是线程被调用时,占着cpu去睡觉,其他线程不能占用cpu,os认为该线程正在工作,不会让出系统资源,

    2. wait是进入等待池等待,让出系统资源,其他线程可以占用cpu,一般wait不会加时间限制,因为如果wait的线程运行资源不够,再出来也没用,要等待其他线程调用notifyall方法唤醒等待池中的所有线程,才会在进入就绪序列等待os分配系统资源,
    3. sleep是静态方法是谁掉的谁去睡觉就算是在main线程里调用了线程b的sleep方法,实际上还是main去睡觉,想让线程b去睡觉要在b的代码中掉sleep
    sleep(100L)是占用cpu,线程休眠100毫秒,其他进程不能再占用cpu资源,

    4. wait(100L)是进入等待池中等待,交出cpu等系统资源供其他进程使用,在这100毫秒中,该线程可以被其他线程notify,但不同的是其他在等待池中的线程不被notify不会出来,但这个线程在等待100毫秒后会自动进入就绪队列等待系统分配资源,换句话说,sleep(100)在100毫秒后肯定会运行,但wait在100毫秒后还有等待os调用分配资源所以wait100的停止运行时间是不确定的,但至少是100毫秒。

    14.线程 (这篇文章非常好,今天没有看完。。。


    start()方法最本质的功能是从CPU中申请另一个线程空间来执行 run()方法中的代码,它和当前的线程是两条线,在相对独立的线程空间运行,也就是说,如果你直接调用线程对象的run()方法,当然也会执行,但那是 在当前线程中执行,run()方法执行完成后继续执行下面的代码.而调用start()方法后,run()方法的代码会和当前线程并发(单CPU)或并行 (多CPU)执行。

  • 相关阅读:
    FreeCAD框架解析
    Python源码的编译与加密
    centos 8及以上安装mysql 8.0
    浮点数运算丢失精度
    使用 Nginx 代理内网 GitLab 并确保 SSH / HTTP 克隆地址正确
    如何实现一个简易版的 Spring
    Spring 是如何造出一个 Bean 的
    从CPU缓存看缓存的套路
    Java 集合类 List 的那些坑
    react 项目中使用antd框架,对导航多层渲染
  • 原文地址:https://www.cnblogs.com/iamgoodman/p/3398183.html
Copyright © 2011-2022 走看看