Tomcat中Session对象部分属性值丢失问题的分析与解决

2017-11-05

我们最近的一个Java项目在从开发环境迁移到测试环境之后,遇到了一个非常诡异的问题——在将一个Java对象存储到SESSION会话中而后从中取出时,这个对象的部分属性在SESSION会话刚创建的一段时间内是正确的,但是一段时间过后,虽然SESSION没有失效,但是这部分属性的值却变成NULL了。更令人奇怪的是,无论是变成NULL的属性,还是未变成NULL的属性,都是最简单的String类型变量,实在让人看不明白他们之间到底有何不同。

为了将问题表述清楚,下面我举个例子来详细说明下。我们定义的类信息大概如下图所示:

Tomcat Session中数据部分属性值丢失/变为NULL示例代码

其中,SessionBean是我们将要放到SESSION中的对象,而BaseBean则是SessionBean继承的父类。无论是在开发还是测试环境,SessionBean对象都可以不抛出任何异常地存取值,但是其中的属性则不一定:属性a和属性b在SESSION创建之后,只要SESSION没有失效,就一直可以正常读取其值;但是其中的属性c,只在SESSION创建不久的一段时间内有效,如果一段时间后再取值,属性c的值就变成NULL了。没有任何认为操作,变量值却改变了,是不是很神奇? 阅读全文 »

Nginx按天切分日志并自动备份到七牛云存储

2017-10-18

上篇文章中我曾讲到,数天前我将本站从阿里云的虚拟主机迁移到了ECS云主机上。在迁移过程中,我在安装Nginx服务器的时候遇到了一个非常典型的问题——如何将Nginx服务器的日志按日期进行切分?Nginx服务器的日志默认是存放在access_log.log和error.log两个文件中的。如果不对这两个文件进行切分处理,长此以往,这两个文件将变得非常巨大,以致影响数据的存储和分析,难以使用。所以,对这两个文件进行切分,尤其是按时间进行切分,还是非常有必要的。

其次,我国相关法律规定,“互联网信息服务提供者、互联网接入服务提供者应当记录日志信息,保存12个月”。出于网站的合规性考虑,我们需要将网站服务日志做较长时间的保留。可是ECS的自带磁盘无论是出于存储代价还是服务可靠性的考虑,都不适合这种持久性保存的应用场景,最好的处理方式还是将这些日志存放到专业的云存储服务中。鉴于七牛提供了10GB的免费存储空间和较为完善的命令行工具,而阿里云的OSS云存储多多少少仍需要付些费用,所以我最终还是决定采用七牛家的服务来做这件事情。那么,怎样才能将Nginx的日志增量备份到七牛云存储呢?

网络上关于Nginx日志按时间切分的文章很多,Google一搜一大把;而且,七牛也为Linux操作系统提供了现成的QSHELL上传工具。所以,只要对网络上的现有脚本稍加改造,便可以实现我们需要的功能。下面我简单介绍一下我是如何实现这两个功能的。 阅读全文 »

SoftEther VPN进阶:静态路由表推送(拆分隧道)

2015-01-15

SoftEther-VPN-logo

前段时间我曾介绍过SoftEther VPN在Linux系统下的安装和配置,今天咱们再进一步,介绍一个SoftEther VPN的高级功能——静态路由表推送(拆分隧道)。

以Windows操作系统为例,默认情况下建立VPN连接后所有网络流量都是经由VPN隧道进行传输的。但是很多时候这是完全没必要的,甚至是低效的,其实只要一部分特定流量通过VPN隧道即可。在实际应用场景中,假如我是一名电信用户,我只需要对访问联通的流量进行加速,而电信流量,直接走电信的网络就可以了。为达到这个目的,我们通常是在建立VPN隧道后采用路由表来为不同的目的IP设定不同的路由信息。但是由于路由表配置起来比较麻烦,而且稍有不慎就会导致机器上不去网,而且这种路由表错误一般人根本查不出来,所以如果能在建立VPN隧道的同时配置好路由表,自然是最好不过的事情了。

在对SoftEther VPN这款神器进行一番把玩后,我发现SoftEther VPN还真有这样的功能——静态路由表推送(拆分隧道)。根据我的理解,静态路由表推送就是在建立VPN隧道的同时,服务器端将预先设定的路由条目一并推送给客户端,而后客户端再把它加入到本地的路由表中。这样一来,客户端(本地PC)只需将发往推送路由条目包含网段的数据包转发给VPN服务器,从而达到了智能传输的目的。 阅读全文 »

360安全路由器P1(公测版)试用报告

2014-11-28

360安全路由器P1

能够在公测期间拿到了360安全路由器P1,而且是陆战队专版,真的非常幸运,我在此我对360的工作人员表示感谢。我是前天下午收的货,经过了两天的测(zhe)试(teng)后,我把自己感觉不错的、以及有待改进的地方整理了下,也欢迎各位网友讨论。 阅读全文 »

使VSFTPD Ftp Server同时支持IPv4和IPv6网络

2014-10-10

VSFTPD Ftp Server

虽然VSFTPD Ftp Server本身支持IPv6网络,而且在配置文件(/etc/vsftpd/vsftpd.conf)中就有一个“#listen_ipv6=YES”选项,但是默认情况下IPv6服务是不生效的。在实际应用中,如果我们想让VSFTPD同时支持IPv4和IPv6,似乎只要把“#listen_ipv6=YES”取消注释、然后重启VSFTPD服务就OK了。不过我在实际操作中发现,如果只是简单地取消掉“listen_ipv6=YES”的注释,重启服务时会提示VSFTPD在IPv4和IPv6网络下同时运行产生冲突,错误信息如下:

500 OOPS: run two copies of vsftpd for IPv4 and IPv6

这可咋办,难道VSFTPD不能同时在IPv4和IPv6网络下运行吗?我经过查资料后发现,根本不是这样,VSFTPD可以同时运行在IPv4和IPv6网络下,不过需要使用两个配置文件,将“listen=YES”和“listen_ipv6=YES”分别放在两个配置文件中,一个负责监听IPv4,一个负责监听IPv6,这样就不会冲突了。

经过测试,IPv4和IPv6确实都可以正常连接。

阅读全文 »

利用Chrome Data Compression作桌面版Chrome代理的扩展

2014-02-22

数月前,Google针对手机版Chrome浏览器推出了数据压缩(Data Compression)功能,其利用Google强大的服务器集群做代理服务器进行数据中转。

当用户打开代理功能后,所有的Web请求都将经过谷歌的服务器进行处理,而服务器会使用PageSpeed工具对相应内容进行压缩和优化,而Chrome与服务器之间采用谷歌的SPDY协议,从而对内容进行进一步的优化。经过这两次优化,传输的数据量就大大地减少了。 阅读全文 »

盘点近年来比较严重的DNS安全事件

2014-01-22

DNS安全

2014年1月21日下午,继上午腾讯旗下的QQ邮箱、QQ秀等业务因网络系统故障一度无法使用后,大陆境内发生了迄今为止最严重的DNS故障,大陆境内所有的通用顶级域(.com/.net/.org等)遭到DNS劫持/污染,所有域名被指向到一个位于美国的IP地址(65.49.2.178)。为了提高大家对DNS服务重要性的认识,下面由我带领大家盘点下近年来比较严重的DNS安全事件。 阅读全文 »

手机QQ v4.6(内测版)推出语音通话功能!

2013-12-24

手机QQ v4.6内测版

今天才得到的消息,希望还不晚。12月10日左右,腾讯在“腾讯体验中心”推出了“QQ for Android v4.6体验版”。值得关注的是,该版本攻破了长久以来的“技术难题”,开始支持免费语音通话!要知道, 借助于互联网的手机语音通话,因为直接影响到了电信运营商最大的利润点,加之不利于“网络的可控性”(你懂的), 所以在国内一直是一个讳莫如深的问题。如今腾讯“明目张胆”地把“语音通话”加入了手机QQ当中,绝对可以说得上说是一个巨大的进步!不过,接下来运营商做何反应,QQ机房的光缆会不会也被挖断,还需要我们拭目以待。 阅读全文 »

浅谈PaaS服务(xAE)发展缓慢的原因

2013-09-22

PaaS云计算

最近在某社区网站上看到一位网友的吐槽——“免费云空间除了搭博客还能干点啥?”,看到这个问题,我的心情完全可以用五味杂陈来形容。一方面,功能强大的PaaS服务,竟被看做一个只能搭建博客的玩具,心里多少有些不舒服;另一方面,PaaS服务近年来鲜有大的发展,各方面依然有待提高,所以更多的是被作为免费空间或搭建个人博客使用。作为一个长期关注并看好PaaS服务的IT爱好者,看到PaaS的这种窘境,心中有种说不出的痛。那么,究竟是什么原因使得PaaS(xAE)服务发展缓慢?我认为是下面几个因素造成的。

第一、政策因素。有关政策规定,服务器位于国内的网站必须先备案才能上线运营。然而,国内各大PaaS服务商普遍面临的一个窘境就是,一方面用户有强烈的绑定独立域名的需求,而另一方面,受制于现有政策,PaaS服务商没有提供ICP备案的资格。 阅读全文 »

解决Google Drive IPv6环境下出现“无法连接”错误的问题

2013-09-10

Google-Drive

因为教育网支持IPv6,而且IPv6较IPv4安全性更高、受某些因素的影响更小,所以使用教育网上网的孩纸们,可以借助于强大的HOSTS文件,完美顺畅地使用Google带给我们的强大服务。而且,由于各高校往往对IPv6网络免费,而对IPv4网络收取昂贵的流量费用,所以,使用IPv6访问Google的服务,还可以节省一笔可观的流量费用。

根据我的亲身实验,使用网络上的HOSTS文件后,基本上所有的Google服务都能正常使用,如Google搜索、Google登陆、Gmail邮箱等;但Google Drive就没这么幸运了,出现了一个非常奇怪的问题——在纯IPv6环境下,可以正常登陆并下载服务器上的文件,而一旦需要将本地文件上传到云端服务器时,Google Drive客户端便会提示“无法连接”错误。原因很明显,就是上传文件时没有使用IPv6网络,而是使用的IPv4网络。 阅读全文 »

第 1 页,共 8 页12345...最旧 »