
-
利用maven的profile功能直接打包不同环境的配置文件(附例子下载)
最近刚接手一个历史遗留的应用,打包的时候采用了很古老的方式,用maven 打包成war包,然后到生产环境解压之后,逐个替换配置文件中的值,但这个应用是分布式的,是有几个小应用组成的,所以一旦修改配置文件,得分别到几个应用里面修改。而且几个系统有依赖关系的。毕竟是分布式部署的。姑且不管如何部署,就修改配置文件这点来说,我就不满意了。因为产品生产环境也是我们自己可以控制的,所以完全可以在打包前就准备好。但由于生产环境与开发环境的配置是不一样的。所以完全可以提前准备好需要变化的值作为属性,在打包时去替换配置文件中的变量就好了,maven 的 profile 就具备这样的功能,所以做了一个例子,给team 成员,让他们去效仿完成.
Date: 2015-01-15 View: 8413
-
Tomcat 中部署多个应用,自定义应用的启动顺序
在Tomcat 中部署了多个应用,但这些应用之间是有依赖关系的,比如 A 应用依赖于Core 应用,B应用也依赖于Core应用,必须在Core 应用启动之后才能启动A应用,否则会报错,原因是在A 启动的时候会去调用Core 的API 去做一些事情,所以启动的顺序肯定不能颠倒,但通常用tomcat 都是将应用的war包放到 webapps 目录下,但如果将所有应用都放到这个目录下,完全没有办法控制应用的启动顺序,虽然网上有人说会根据应用的名称来排序启动,但更改名字也许并不是很好的办法,我也没测试,但我找到了另外一个方法来定义应用的启动顺序,就是更改tomcat安装目录conf目录下的service.xml 文件来实现
Date: 2014-12-11 View: 5995
-
利用DWR实现网页推送,逆向AJAX的例子, 附源码
这段时间需要做一个POC给客户演示,恰好有一个功能是需要从服务端向客户端推送,类似于做移动开发Android,iOS 的功能一样,但是需要在网页端实现,在网上看到最多的就是 comnet 技术的介绍,很多网页聊天或者咨询类似功能就是采用这种技术实现的,当然html5的 websocket 是肯定支持的,但需要点时间去学些,POC时间比较紧,所以我最终采用DWR 来实现,DWR 在多年前就用过来实现AJAX请求,当时印象并不是很好,一直钟情于jquery, 但DWR 的实现方式确实令人印象深刻. 能模拟直接操作java 对象的方式. 为了这个POC 再次采用了 DWR 的逆向AJAX ,也就是从服务端向网页端推送消息的技术.
Date: 2014-12-03 View: 8422
-
判断Httprequest 是否ajax 请求的方法
在写后台程序时,有时候需要知道客户端发送的是普通的请求,还是ajax 请求,至少在我目前所做的项目中有这样一个用途:如果session 过期的时候,如果是普通请求,跳转到登录页面,但如果是ajax 请求,如果后台session 已经过期了,这时候会返回登陆界面的的html 代码作为ajax 的返回值,这样就很郁闷,不好处理,如果是ajax 请求,理想的方式是返回json给客户端,这样客户端就好处理. 目前我采用了比较笨的一个方法来实现,可以在 请求的参数中加入一个标志来判断.
Date: 2014-11-27 View: 6523
-
java 动态load class 的方法之二:从网络动态加载一个类
前面测试过最基本的从本地文件动态加载一个类 最基本的java 动态加载类方法, 今天测试一个从网络上动态加载一个类的方法。
Date: 2014-11-19 View: 3922
-
java 动态load class 的方法之一
动态加载类是在运行时在有需要的时候再加载这个类,这在大型系统中是很重要的一个机制,也就是采用lazy模式,在有需要的时候才加载,而不是在application server 一启动的时候就加载了很多类。当然,动态加载类的技术,最主要的也就是应用java的反射机制(java refection来实现), 另外,很多系统采用插件方式开发,部署,在这样的情况下,动态加载类就显得更重要。目前根据开发过的项目经验,基本可以总结为三总类型:1、加载一个普通的类2、从网络上加载另外一个类3、从其他jar包里面加载一个类.
Date: 2014-11-14 View: 3986
-
org.apache.commons.io.FileUtils例子
用apache.commons.io 中的一些方法来操作文件,会减轻程序员的很多负担,文件操作经常会用到FileUtils这个类,今天在这里对最常用的一些方法做一个总结,当然最全面的东西,还是应该看apache.commons.io 的文档或者示例。
Date: 2014-11-09 View: 4848
-
java 连接 sqlite 的一个例子。
用java 连接 sqlite 的一个例子,主要用来测创建表,增加数据,以及在多线程的情况下读写数据的并发操作。因为有人反映在sqlite 中读数据与写数据不能同时进行,所以写了个小程序,测试,结果证实是可以的,也许与这个特定的驱动包相关,但在Android 下就是不能同时进行读与写,很奇怪。按照数据库的锁机制来说,同时写也许是不可以的,但一个读一个写,只要不是表锁,应该是可以的,但是sqlite 不行,很奇怪. 但我测试的这个例子又是可以的。
Date: 2014-10-23 View: 2878
-
Linux 下定时执行JAR 文件
用 Quartz 去定时执行一个任务是一个很好的方法,但有时候我们需要一个简单的方法去定时执行一个jar 文件,这在linux 中可以很方便的用cron 去做到.
Date: 2014-10-09 View: 3526
-
jsp不支持${pageContext.request.contextPath} jstl表达式
今天在做程序代码查看的时候,发现开发者都喜欢直接在JSP中用request去获得网站的contextPath, 但web应用已经引入了 jstl 包,为什么不用了。于是自己做了一个页面测试
Date: 2014-08-29 View: 4626
-
在servlet中用spring @Autowire 注入.
今天在改版以前老应用程序的时候,发现很多系统是直接用servlet做的,当初也用到了 spring, 所以自然想到也用 spring 的 @autowire 注入 来引入 service 层, 但发现如果直接用,有时候成功,有时候报错,失败。貌似就是不稳定,一直搞不清楚原因, 后来在网上找到了一个简单的方法. 这个简单的方法也是 spring 提供的,解决方法如下
Date: 2014-08-22 View: 3172
-
Java里各种路径的区别:getPath(), getCanonicalPath()
写程序时,通常会听到各种不同的路径,比如:相对路径,绝对路径等. 对于 java 文件操作来说,一样有这些路径,在以前 没怎么注意到这个api: getCanonicalPath(), 其实这个东西很重要,因为这个api 是真正能拿到一个文件的唯一路径的api, 它的返回值一定是一个绝对路径.唯一指向一个文件.
Date: 2014-08-17 View: 7023
-
Java 取随机数的两种方法
用 java 编写程序时,取随机数通常有两种方法,1. 采用 Ramdom(), 2. 采用 Math.random(), 其实这两种方式基本差不多,写一个简单的例子,从一个list 中随机抽取一个记录.
Date: 2014-08-12 View: 3719
-
Ubuntu下更改Tomcat使用的JDK
以前在Ubuntu下安装了JDK 1.6, 现在又装了Jdk 1.7 , 测试一些JDK 1.7 的一些新特性, 然后我原来的Tomcat 是采用的JDK 1.6, 这需要更改到1.7, 正常情况下 Tomcat 会使用我们配置的环境变量:JAVA_HOME 这里面配置的JDK, 当然这种方式你可以修改etc/profile 文件。其实更好的做法是修改 /etc/default/tomcat7 这个文件。
Date: 2014-07-29 View: 3227
-
java编译的包兼容性问题Unsupported Major.Minor Version 51.0
有时候在运行一个 jar 文件时,会出现类似如下的错误 :Exception in thread "main" java.lang.UnsupportedClassVersionError:     com/mkyong/whois/job/RipeCrawlJob : Unsupported major.minor version 51.0这是因为本机java 版本不对.
Date: 2014-07-13 View: 4526