摘要: 1、通过catalina.sh start脚本启动,调用org.apache.catalina.startup.Bootstrap的main方法,传人参数start,首先是创建一个Bootstrap的实例并付给static变量daemon,然后调用daemon的init方法,在init方法中设置ca... 阅读全文
posted @ 2014-08-04 17:52 7mile 阅读(637) 评论(0) 推荐(0) 编辑
摘要: 安装redmine2.3.3,需要首先安装ruby,rubygems,这里使用的版本是ruby-1.9.2-p320,rubygems-1.8.25。安装步骤可以参考redmine的官方网站:http://www.redmine.org/projects/redmine/wiki/RedmineInstall。期间遇到问题如下:问题1:执行 “bundle install --without development test” 时遇到如下问题:遇到问题:Can't install RMagick 2.13.1. Can't find Magick-config解决方法:sudo 阅读全文
posted @ 2013-10-14 15:53 7mile 阅读(278) 评论(0) 推荐(0) 编辑
摘要: Spring通过对Javamail的封装来简化发送email的步骤,提供易于使用的接口,发送时通过发送html类邮件或者结合velocity更能够提供样式丰富的邮件。需要引入spring的jar包(特别是spring-context-support-RELEASE.jar)及mail-1.4.5.jar。首先定义自己的邮件发送工具类,封装用到的velocity引擎,邮件的主题、内容、模板等信息,然后提供邮件发送方法,使用spring提供的邮件接口实现类org.springframework.mail.javamail.JavaMailSenderImpl来发送邮件。package com.xx 阅读全文
posted @ 2013-08-29 11:27 7mile 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 文件下载可以通过nginx直接实现,不必通过后端server程序就能直接下载,而且通过nginx下载效率很高,但是有时候需要在server端处理一些业务逻辑,比如统计下载次数,判断是否有权限下载等。如果通过server端程序实现下载,返回文件流,当文件比较大或者并发下载压力较大的时候,效率上跟nginx比就会差很多。现在很多web服务器都提供了相应的解决方法,使用response header来控制下载,nginx相应的response header叫X-Accel-Redirect。客户端下载文件的时候,最初header中没有X-Accel-Redirect,nginx并不会将文件直接返回, 阅读全文
posted @ 2013-07-28 22:39 7mile 阅读(1210) 评论(0) 推荐(0) 编辑
摘要: JQuery插件 Ajaxupload实现文件上传功能时无需创建form表单,就可以通过ajax的方式实现文件上传,功能丰富,可以设置上传之前、上传之后的动作,方便做一些处理工作。Ajaxupload可以实现上传文件时页面无刷新,当选择一个文件之后,就开始了上传动作,不会刷新或跳转页面。使用Ajaxupload,需要下载jquery及Ajaxupload,然后在html页面中引入jquery及Ajaxupload。下面通过一个例子说明Ajaxupload的使用方法。首先创建一个html页面,然后创建div元素用来显示需要上传的文件输入区域,这里创建2个分别上传图片和zip文件, 图片: ... 阅读全文
posted @ 2013-06-26 17:23 7mile 阅读(2390) 评论(0) 推荐(0) 编辑
摘要: Spring提供了抽象类AbstractRoutingDataSource,允许动态设置数据源,从而实现对多数据源进行数据读写操作。1、首先需要定义一个类继承抽象类AbstractRoutingDataSource,并实现相应的方法determineCurrentLookupKey:protected Object determineCurrentLookupKey() { }决定使用哪个LookupKey作为目前的数据源key。2、写一个辅助类,用于实现数据源的选择、切换,由于数据源是多线程共享的,需要确保线程安全,可以使用ThreadLocal来保存每个线程的数据源key。public c 阅读全文
posted @ 2013-05-27 12:50 7mile 阅读(460) 评论(0) 推荐(0) 编辑
摘要: Spring支持的远程调用方式有RMI、Caucho的Hessian和Burlap,使用SOAP和JAX-RPC的Web Services,以及Spring自己的Http invoker。RMI需要客户端、服务器都使用Java,使用标准的java序列化机制,但是容易受到网络限制(如防火墙)。Hessian或Burlap通过HTTP协议访问,但是序列化不是java的序列化机制。Spring自己的Http invoker则融合了RMI和Hessian的优点,能通过HTTP访问,不受防火墙限制,同时使用标准的java序列化机制,但是需要Spring框架的支持。1、Spring对RMI的支持如果从头写 阅读全文
posted @ 2013-04-24 19:13 7mile 阅读(997) 评论(0) 推荐(0) 编辑