Java NIO 中的 ServerSocketChannel 是一个可以监听新进来的 TCP 连接的通道, 就像标准 IO 中的 ServerSocket 一样。ServerSocketChannel 类在 java.nio.channels 包中。这里有个例子:ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();serverSocketChannel.socket().bind(new InetSocketAddress(9999));
Java NIO 中的 SocketChannel 是一个连接到 TCP 网络套接字的通道。可以通过以下 2 种方式创建 SocketChannel:打开一个 SocketChannel 并连接到互联网上的某台服务器。一个新连接到达 ServerSocketChannel 时,会创建一个 SocketChannel。打开 SocketChannel下面是 SocketChannel 的打开方式:SocketChannel socketChannel = SocketChannel.open();socketChannel.
Java NIO 中的 FileChannel 是一个连接到文件的通道。可以通过文件通道读写文件。FileChannel 无法设置为非阻塞模式,它总是运行在阻塞模式下。打开 FileChannel在使用 FileChannel 之前,必须先打开它。但是,我们无法直接打开一个 FileChannel,需要通过使用一个 InputStream、OutputStream 或 RandomAccessFile 来获取一个 FileChannel 实例。
Selector(选择器)是 Java NIO 中能够检测一到多个 NIO 通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个 channel,从而管理多个网络连接。下面是本文所涉及到的主题列表:为什么使用 Selector?Selector 的创建向 Selector 注册通道SelectionKey通过 Selector 选择通道wakeUp()close()完整的示例为什么使用 Selector?
Java NIO 中的 Buffer 用于和 NIO 通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成 NIO Buffer 对象,并提供了一组方法,用来方便的访问该块内存。
Java NIO 的通道类似流,但又有些不同:既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。通道可以异步地读写。通道中的数据总是要先读到一个 Buffer,或者总是要从一个 Buffer 中写入。正如上面所说,从通道读取数据到缓冲区,从缓冲区写入数据到通道。
Java NIO 由以下几个核心部分组成:ChannelsBuffersSelectors虽然 Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的 API。其它组件,如 Pipe 和 FileLock,只不过是与三个核心组件共同使用的工具类。因此,在概述中我将集中在这三个组件上。其它组件会在单独的章节中讲到。
本章介绍了如何使用 JDBC 应用程序将表中记录进行排序的示例。该示例将使用 asc 和 desc 作为关键字将记录按升序或降序排序。执行下面的示例之前,请确保你已做好以下工作-在运行下面的例子之前,你需要用你实际的用户名和密码去代替 username 和 password。你的 MySQL 或者其他数据库已经启动了并在运行中。
Elasticsearch 是用于运行 Apache Lucene(基于 Java 的搜索引擎)分布式管理框架。Lucene 是实际保存数据并进行索引和搜索的地方。ES 位于它之上,让你可以并行运行数千个 Lucene 实例。
简介重写 Valve(Rewrite Valve) 实现 URL 重写功能的方式非常类似于 Apache HTTP Server 的 mod_rewrite 模块。 配置重写 Valve 是通过使用 org.apache.catalina.valves.rewrite.RewriteValve 类名来配置成 Valve 的。 经过配置,重写 Valve 可以做为一个 Valve 添加到 Host 中。参考虚拟服务器文档来了解配置详情。该 Valve 使用包含重写指令的 rewrite.
简介Tomcat 支持由 RFC 6455 所定义的 WebSocket。应用开发Tomcat 实现由 JSR-356 定义的 Java WebSocket 1.1 API。 关于 WebSocket API 的使用方法,可查看相关范例,既需要查看客户端 HTML 代码,也需要查看服务器代码。
简介JDBC 连接池 org.apache.tomcat.jdbc.pool 是 Apache Commons DBCP 连接池的一种替换或备选方案。 那究竟为何需要一个新的连接池? 原因如下: Commons DBCP 1.x 是单线程。为了线程安全,在对象分配或对象返回的短期内,Commons 锁定了全部池。但注意这并不适用于 Commons DBCP 2.x。 Commons DBCP 1.x 可能会变得很慢。
概述集成 Windows 验证(Integrated Windows authentication)往往用于局域网环境中,因为需要使用服务器执行验证,被验证的用户也必须处于同一域内。为了能够自动验证用户,用户所用的客户端机器也必须处于同一域内。 可以利用以下几种方案来实现 Tomcat 下的集成 Windows 验证: 内建 Tomcat 支持。 使用第三方库,比如 Waffle。
Tomcat 服务应用Tomcat8 是一个服务应用,能使 Tomcat 8 以 Windows 服务的形式运行。 Tomcat 监控应用Tomcat8w 是一个监控与配置 Tomcat 服务的 GUI 应用。 可用的命令行选项为: //ES// 编辑服务配置 这是默认操作。如果没有提供其他选项,则调用它。但是可执行未见被重命名为servicenamew.exe。
简介对于大多数用例来说,默认配置下的 Tomcat 都是相当安全的。有些环境可能需要更多(或更少)的安全配置。本文统一介绍了一下可能影响安全性的配置选项,并适当说明了一下修改这些选项所带来的预期影响。目的是为了在评价 Tomcat 安装时,提供一些应值得考虑的配置选项。注意:本章内容毕竟有所局限,你还需要对配置文档进行深入研究。在相关文档中有更完整的属性描述。
简介Tomcat 可以使用许多附件组件。这些附加组件有可能是由用户在需要时创建的,或者是从镜像下载站下载而来的。 下载打开 Tomcat 下载页面,在“快速导航链接”(Quick Navigation Links)中点击“浏览”(browse)链接。在随后打开页面的 bin/extras 中可以找到附加组件。 构建附加组件使用 Tomcat 标准的 Ant 脚本的 extras 目标构建而成。
简介Tomcat 的内部日志使用 JULI 组件,这是一个 Apache Commons 日志的重命名的打包分支,默认被硬编码,使用 java.util.logging 架构。这能保证 Tomcat 内部日志与 Web 应用的日志保持独立,即使 Web 应用使用的是 Apache Commons Logging。
简介监控是系统管理中的重要环节。系统管理员的日常工作就包括:观察服务器的运行细节,获取统计数据,或者重新配置应用的某些内容。 启用 JMX 远程监控注意:该配置只适用于需用远程监控 Tomcat 的情况,使用同样的用户在本地监控 Tomcat 则不需要这么配置。 Oracle 的网站上介绍了如何在 Java 6 上配置 JMX 远程:http://docs.oracle.
使用 JK 1.2.x 原生连接器请参考 JK 1.2.x 文档。使用 Apache HTTP Server 2.x请参阅 Apache HTTP Server 2.2 的 mod_proxy 文档。它能支持 HTTP 或 AJP 负载均衡。新版的 mod_proxy 也能适用于 Apache HTTP Server 2.0 ,但必须使用 Apache HTTP Server 2.2 的代码独立编译。
什么是 DefaultSeveletDefaultSevelet 是处理静态资源的 Sevelet。在什么位置声明它?它在 $CATALINA_HOME/conf/web.xml 中被全局声明。默认形式的声明是这样的: $CATALINA_HOME/conf/web.xml <servlet> <servlet-name>default</servlet-name> <servlet-class> org.apache.catalina.servlets.
关注时代Java