J2EE7与Servlet3.x
J2EE7结构图
JWS:即Java Web Service,指与webservice相关的JavaEE技术部分,webservice是一种基于XML的独立的、跨平台的、互操作的应用程序,XML又包含XSD、DTD、XPath等相关技术
JAX:即Java Xml,类似地JAXB(Java Xml Binding)
常用JWS主要有:
JAX-WS 全称JavaTM API forXML-Based Web Services 又叫JAX-RPC(远程调用),顾名思义就是基于Web Services
JAX-RS 全称JavaTM API forRESTful Web Services 即使用REST风格
两者是不同风格的SOA架构。前者以动词为中心,指定的是每次执行函数。而后者以名词为中心,每次执行的时候指的是资源。
JAX-WS是面向消息的,每次请求的时候指定了请求的方法。JAX-RS是面向资源的。后则将网络上的东西当做一种资源,每次请求都是对该资源进行操作,比如对资源的增删查改。
CDI:即Contexts Dependency Injection,和Spring的IOC差不多的东西,就是可以在组件中通过注解注入上下文、请求和响应等。
JTA:即Java Transaction API,使用过Hibernate和EJB的应该知道,就是事务处理,JTA依赖于所处的容器,如果不是分布式开发的话,我们一般使用本地事务,即是数据库本身的事务处理。
PA:即Java Persistence API,就是最常用的持久化技术,原本属于EJB中的部分,EJB3.0之后分离出来,作为一个独立的规范。作为一种ORM技术,JPA提供了基本的统一标准。
JMS:即Java Message Service,和JDBC类似,提供了一个统一的API供其他厂商实现,主要用于客户机信息的交互,JMS主要有点到点和订阅/发布两种方式。
Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布。Servlet3规范通过配置可支持异步请求(需要在xml或注解中配置参数async-supported为true),可支持插件化开发,通过注解可以让web.xml不再需要web.xml,规范本身也可以支持文件上传。该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发和部署。servlet3.1是J2EE7中规范,无阻塞 I/O、协议升级、安全性增强。
- 参考:
- 关键特性
- Asynchronization(异步支持): 通过AsyncContext另起异步线程处理业务逻辑, 不再阻塞Filter或Servlet线程. 可以实现Reactor模式.
- Pluggability(插拨支持): 通过Annotation(@WebServlet, @WebFilter, @WebListener, @WebInitParam, @MultipartConfig, @ServletSecurity, @HttpConstraint, @HttpMethodConstraint)或/META-INF/web-fragment.xml充分解耦组件,实现插拨机制.
注意: 在web.xml设置metadata-complete="true"可以关闭Pluggability特性. 但不影响@HandlesTypes+ServletContainerInitializer的动态注册机制. - Fileupload(文件上传): 通过@MultipartConfig+Part实现文件上传. 不再需要apache-fileupload.
- Dynamic Registration(动态注册):
- 通过ServletContext.addXXX()+Registration实现.
- 相关API只能在ServletContextListener.contextInitialized()或者ServletContainerInitializer.onStartup()中调用. 后者是基于java服务API机制实现, 需要在(/META-INF/services/javax.servlet.ServletContainerInitializer)配置实现类.
- 动态注册不受web.xml中metadata-complete="true"影响,但优先级低于web.xml, 相同设置会被覆盖.
以上4点是Servlet 3.0/3.1的关键特性, 其中
- Pluggabilityr的目标是"充分解耦,实现插拨"
- Dynamic Registration的目标是"动态注册,编程"
- Asynchronization的目标是提高并发性能
- FileUpload, Annotation是增加编程方便
最新文章
- 网络流dinic实现总结
- 联机事务处理OLTP(on-line transaction processing)和联机分析处理OLAP(On-Line Analytical Processing)
- mongoDB研究笔记:复制集数据同步机制
- SAP_Web_Service开发配置
- js中的referrer返回上一页使用介绍
- WinDebug 常用命令表【摘】
- OD调试3--reverseMe
- [Effective Modern C++] Item 1. Understand template type deduction - 了解模板类型推断
- 在asp.net中如何实现伪静态页 [转]
- java泛型问题 关于警告:XX is a raw type
- 手动编译生成apk
- @EnableAsync annotation metadata was not injected
- vue中实现全选功能
- Redis常用命令--Hashes
- 说一下Dubbo 的工作原理?注册中心挂了可以继续通信吗?
- 创建作业(JOB)
- [Err] 1093 - You can't specify target table 'master_data' for update in FROM clause
- gflags 学习
- HTML 第九章总结
- PHP微信公众号开发之自动回复