标签归档:Linux

Tomcat请求HTTPS的注意事项

需要在catalia.sh里给JAVA_OPTS再增加一个参数

-Dsun.security.ssl.allowUnsafeRenegotiation=true

在解决这个问题上,我走了不少弯路
在开发过程中(Windows)项目使用了cxf来进行webservice的请求封装,一切正常
部署到服务器(Linux)后总是报SocketTimeOutException
在排除了编码问题、IP限制和证书错误(命令行使用curl请求获取到了正确的响应)的可能之后,基本定位在cxf本身的问题

由于cxf代码过于庞杂,部署源码环境很痛苦,最后使用HttpClient拼装满足格式的xml请求模拟SOAP写了一个测试类
使用java命令行执行后得到正确结果,将测试程序放到Tomcat启动,这时候出现了异常的错误信息:

SSLException: HelloRequest followed by an unexpected handshake message

以这个异常为关键词搜索很容易得到本文开头加参数的解决办法,于是加上以后cxf的连接也正常了
那为什么cxf不报正确的异常信息呢?大概是两种可能:
1、cxf的封装太严实了,没有给出正确的日志信息,不过对于这种成型的框架应该不会有这种低级问题
2、大概看了一下cxf的实现,有点类似异步模型,在允许的超时时间内没有取到响应导致抛出的异常为超时

至于Windows下不会出现这个问题,大概是因为不同系统的安全策略吧,不求甚解了
希望对在非Windows系统(MacOS下也是一样的症状)下碰到此问题的人有帮助

PS. 此问题应该不仅限于Tomcat,其他web容器估计也是一样的

UNetbootin – U盘安装Linux

U盘装系统也不是啥新鲜事了,以前都是通过量产
奈何最近装了win7量产程序无法识别到设备
用UltroISO写入硬盘镜像的方式又不知道为何会把isolinux目录自动重命名

只好用这个UNetbootin了,看其官方说明支持大量的发行版,我等俗人使用的ubuntu自然不在话下

配个官网的图:
UNetbootin

fcitx or scim?

最早的最早,都是用fcitx,不过以前用linux都是三天热度

然后有了ubuntu,开始把linux作为日常使用,集成的输入法是scim
类似微软拼音(必须要说我对微软拼音很推崇,虽然现在Windows下我用谷歌拼音),较强的智能性
缺点也很明显:占用内存多,输入法状态条总是占个地方且时不时消失,不能用小键盘选词(从小没养成良好的指法习惯)

于是开始使用fcitx(小企鹅输入法) ,一切看上去很美好,输入条占住正上方的工具条,不会挡住别的窗口,词组记忆也不错,小键盘选词也支持了
然而好景不长,用了两个月以后噩梦来了,随着词库越来越大,fcitx的智能性越来越差(很奇怪不是么,一般应该词库越大越准确),随便打四五个字的常用字组成的词组就会出来N多的备选词,而且很多都是被从中间断开,可见fcitx对于语义并没有进行多少的分析

终于忍无可忍,换回来了scim,相比之下scim的智能性实在是高多了,世界清静了

Linux中文输入法这个领域也挺无奈的,就这两个选择,而且基本开发都处于半停滞状态(主要是国内的土壤不好),只能寄希望于谷歌拼音推出Linux版了

Ubuntu Gutsy安装MapXtreme

首先从官方网站下载MapInfo® MapXtreme® Java Edition(需要注册用户)
目前最新版是4.8.0,推荐使用最新版,之前安装4.7会提示NoClassDefineFound

下载完了如果直接安装会报一大堆librt.so.1之类的找不到的错误,实际上在/lib目录下都有,
具体解决办法参考这篇文章,是因为2.6的内核启用了LinuxThread线程库的原因

下面以下载完的安装文件install.bin为例,

/* 把原本安装文件中的LD_ASSUME_KERNEL操作注释掉,并写入新文件 */
cat ./install.bin | sed “s/export LD_ASSUME_KERNEL/#xport LD_ASSUME_KERNEL/” > ./installnew.bin

接下来就可以通过运行生成的installnew.bin来安装MapXtreme了,

sudo sh ./installnew.bin

一切顺利就会启动图形安装界面,按照提示安装即可,如果不顺利我也不知道了
需要注意的是安装程序默认使用安装文件自带的jre,中文显示有问题,最好在安装过程中设置使用其他的jre(安装完成后也可以修改启动脚本中的JRE_HOME环境变量进行修改)