middleware4

三层Web应用程序模型

  • 第一层浏览器是表示层,完成用户接口功能。更“瘦”
  • 第二层Web服务器是功能层,完成客户的应用功能。
  • 第三层数据库服务器是数据层,完成数据处理请求。
    Web服务器接受客户请求,建立数据库连接,请求数据处理,而后数据库结果返回Web服务器,再传至客户端。

    功能层的缺点:1.体积庞大、功能臃肿、复用性差
    2.须自己考虑诸如分布处理、负载平衡、事务逻辑、持久性和安全性等诸多问题
    所以:一分为二:显示逻辑层和业务逻辑层
    1.显示逻辑层:接受客户请求,调用业务逻辑层的服务,并将结果呈现给客户端。
    2.业务逻辑层:完成具体的业务处理。其中隐含了分布处理、负载平衡、事务逻辑、持久性和安全性等技术

    容器类型

  • Java EE服务器:是Java EE产品的运行部分。一个Java EE服务器提供EJB容器和Web容器。
  • Enterprise JavaBeans(EJB)容器:管理Java EE应用程序的enterprise bean的执行。Enterprise bean和它的容器运行在Java EE服务器中。
  • Web容器:管理Java EE应用程序的JSP和Servlet组件的执行。Web组件和它的容器也运行在J2EE服务器中。
  • 客户端应用程序容器:管理应用程序客户端组件的运行。
  • Applet容器:管理applet的执行。由运行在客户端的一个Web浏览器和Java插件一同组成。

公共服务

  • JNDI (名字和目录服务):共享用户,网络设备,软件组件,应用模块,服务及其他信息
  • RMI/IIOP (支持IIOP协议的远程方法调用): 访问与RMI编程规则兼容的CORBA服务
  • JMS(消息服务):在企业中异步交换业务数据和事件的灵活而可靠的机制
  • JDBC (数据库连接服务)
  • JTS(java transaction service)/JTA (java transaction API)
  • JavaMail和JAF(JavaBeans Activation Framework)
  • JCA/JCE/JSSE/JAAS(安全服务体系)//Cryptography
  • 使用JAXP(Java API for XML Parsing)的XML解析服务
  • Java Servlet——是用Java写的一个服务器端小程序,可以处理用户的HTTP请求,返回结果。
  • JSP (JavaServer Page)——一种基于HTML文件(就是一个模板)处理之后能够生成静态内容。可以包含脚本代码的片段,以在最终生成的脚本静态文件中生成。
  • JSTL (JSP标准标签库,JavaServer Page Standard Tag Library)——一组可以模仿脚本代码功能的用在JSP的标准标签。例如,遍历客户端并显示他们对应的信息。
  • JSF (Java Server Face)——包含JSF标签(类似于LSTL标签)的JSP页面。此外,JSF允许在页面中定义导航模块(类似于Spring web flow),包括Facelets。
  • The Java API for XML-based Web Services (Java中用来创建基于XML的Web的API,JAX-WS)——对于使用XML通信的Web服务来说至关重要。
  • The Java API for XML Binding (序列化为XML的API,JAXB)——一种可以在JavaBeans和XML文件之间相互转化的方式
  • JMS(Java信息服务,Java Message Service)——这个API保证服务器和应用在网络上的通信可靠、异步。ActiveMQ实现了JMS。
  • JavaMail API——提供通过应用程序发送邮件方式。
  • JAXR(提供XML注册的API,Java API for XML Registries)——一个可以注册包含了元数据的XML的API。
  • JPA(Java持久化API,Java Persistence API)——这是一个在数据库中存储对象的ORM(对象关系表,Object/relational mapping)定义。
  • JNDI(Java命名和目录接口)——能存储和检索资源、通过名字查找信息的方式
  • JAAS(Java鉴别与授权服务,Java Authentication and Authorization Service)——识别并控制服务权限的一张方式。
  • JAX-RS——定义REST(含状态传输)之类的服务的API。
  • Managed Beans——一个可以执行嵌入代码的Java对象。在Sping框架中,这是一些添加了@Autowired注释的对象。
  • CDI(上下文和依赖注入,Contexts and Dependency Injection for Java EE)——CDI是Java EE整个下一代类型安全的依赖注入的事实上的API。在Sping框架中,应用程序可以设计应用的上下文,控制反转(IoC)和依赖注入功能(DI)。
  • Bean确认——通过设定好的规则判断Java Beans的状态是有效的。
  • JACC(Java Authorization Contract for Containers)——在J2EE应用服务器和特定的授权认证服务器之间定义的一个连接的协约。
  • JASPIC(Java认证服务提供者接口,Java Authentication Service Provider Interface)——这是与JACC互补认证的SPI(也就是服务API,Service API)。它定义了应用程序如何通过传统的认证服务。

Java EE 7新特征

  • 低延迟数据交换:Java API for WebSocket 1.0
    • 基于 HTTP 的 WebSockets 为解决低延迟和双向通信提供了一种解决方案
  • 简化应用数据分析和处理:Java API for JSON Processing 1.0
    • 通过 Java API 中的 JSON Processing 1.0,JSON 处理过程标准化为一个单一的 API,应用程序不需要使用第三方的类库。
  • 可扩展的RESTful服务:JAX-RS 2.0
    • 增加了异步响应处理,这对于支持对数据有着高要求的 HTML5 客户端的扩展是至关重要的
    • 可以使用过滤器和实体拦截器。这样开发人员就可以使用标准的 API 来实现过滤和拦截功能,使开发过程变得更加便捷和高效
  • 增强开发的易用性:JSF 2.2
    • 增加了对 HTML5 的支持

EJB

  • EJB容器是一个EJB引擎,它提供了EJB组件运行的环境,并对EJB组件进行管理
  • EJB容器一般包含在EJB服务器(或应用服务器)中,EJB服务器可以拥有一到多个EJB容器
  • 比较有名的支持EJB的服务器有GlassFish ,Sun One,Interstage,Websphere,Weblogic,JBoss,JRun等

Enterprise Bean

  • Enterprise beans are Java EE components that implement Enterprise JavaBeans (EJB) technology
  • 在EJB容器里运行
  • 使用java语言编写,是封装了应用的业务逻辑的服务端组件

什么时候使用Enterprise Bean?

  • 应用必须可扩展
  • 事物必须确保数据的完整性
  • 程序将拥有各种各样的客户端

Enterprise Bean类型

  • session
  • message-driven:一种enterprise bean允许java EE程序异步处理消息

什么是session bean?会话bean有几种子类型?分别的应用场合。

session bean 是一种非持久的bean,封装了业务逻辑,可以在本地、远程或者web service 客户端以编程形式调用,分为三类:

- 有状态session bean:状态代表着服务器与某一特定客户端的交互,通过方法调用,bean可以保持客户端的信息协调客户端和应用程序其他组件,为客户端提供一个简单视图,并负责管理enterprise bean 的工作流          
- 无状态session bean:实现了web service,为所有客户端提供服务    
- 单例 session bean:可以被多线程访问,状态全局共享          

JPA : Java Persistence API

JPA是基于Java持久化的解决方案,主要是为了解决ORM框架的差异,它的出现在某种程度上能够解决目前ORM框架之间不能够兼容的问题,对开发人员来说,能够更好的在JPA规范下进行系统开发。

JPA并不是一项技术,而是一种标准,因为JPA只是一套接口,本身不能完成任何事情。JPA只是规范了Java持久化的官方标准。JPA有以下几个优点:

- 可持久化Java对象
- 使用简单
- 规范标准化
- 事务性、大数据量