Spring 2.5提供了自动在当前ClassPath搜索被标注有特定注解的类,这个特性非常有用,跟踪了一下源码,发现其实核心代码就是利用ClassLoader的方法:
发表于07-11-27 17:00 | 阅读 801 |
评分 (暂无)
由于MVC框架的设计,必须保证配置IoC容器时指定正确的Scope,否则无法正常工作:
用户定义的所有的Action类必须是Prototype域,即Guice默认的作用域,如果定义为Singleton会导致并发请求的数据混乱;
用户定义的所有的Interceptor,ViewResolver和ExceptionResolver应该是Singleton的,MVC框架会保持其引用,即时定义为Prototype也是无效的。
在实现Interceptor时需要注意,如果要继续处理请求,就必须调用
chain.doInterceptor(action);
否则请求不会被继续处理。多个Interceptor的排列顺序很重要,用@Order指定,小的在前,即优先级高。
下面是几个简单的示例:
一个处理事务的Interceptor,能保证每个Action的执行都在事务范围内:
package com.javaeedev.lightweight.mvc.sample;
@Singleton
@Or ...
发表于07-11-22 16:27 | 阅读 981 |
评分 (暂无)
Subversion是新一代的开源版本控制系统,和CVS相比,Subversion最大的特点是支持事务,可以确保一个提交是原子操作。此外,Subversion还支持更多的协议,包括HTTP访问。在Eclipse中,使用Subverison和CVS一样简单,只需安装Subclipse插件就可以了。
本文以Eclipse 3.3为例,安装Subclipse非常容易,打开Eclipse,选择菜单Help->Software Updates->Find and Install…,在弹出的对话框中选择“Search for new features to install”,然后点击“New Remote Site…”,填入Subclipse的在线安装的URL:
按照提示安装完毕后,我们就可以打开Subversion的资源库了。选择Eclipse菜单Window->Show View->Other…, ...
发表于07-11-21 16:33 | 阅读 1003 |
1人对此综合评价
在设计完API后,我们就需要实现这个MVC框架。MVC框架的核心是一个DispatcherServlet,用于接收所有的HTTP请求,并根据URL选择合适的Action对其进行处理。在这里,和Struts不同的是,所有的组件均被IoC容器管理,因此,DispatcherServlet需要实例化并持有Guice IoC容器,此外,DispatcherServlet还需要保存URL映射和Action的对应关系,一个Interceptor拦截器链,一个ExceptionResolver处理异常。DispatcherServlet定义如下:
package com.javaeedev.lightweight.mvc;
/**
* Core dispatcher servlet.
*
* @author Xuefeng
*/
public class DispatcherServlet extends&n ...
发表于07-11-20 16:42 | 阅读 1224 |
评分 (暂无)
前段时间准备做一个小网站,但是又不想用Spring/Struts/WebWork这样的大块头,因此决定自己写一个MVC框架。花了3天左右时间完成,目前运行良好,整个MVC框架仅21KB,感兴趣的朋友可以从http://code.google.com/p/lightweight-mvc/downloads/list下载完整的源代码和jar包。
设计目标:
一个最简单最小巧的MVC框架,花哨的功能一个不要,越简洁越好,并且不使用XML配置文件,而是完全用Java 5注解配置。
功能列表:
组件必须用IoC配置;
处理HTTP请求的Action,类似WebWork每个请求都生成一个新实例,并自动填充属性;
类似Filter的Interceptor机制,但是在IoC容器中配置;
统一的异常处理;
多视图支持。
由于组件需要用IoC容器配置,因此,第一步就是寻找小巧的IoC容器,Google Guice是一个很不错的选择,并且完全用Java 5注解配置组件。这个MVC框架唯一依 ...
发表于07-11-15 14:40 | 阅读 935 |
1人对此综合评价
网络巨头Google最近正式发布了其基于Linux的手机操作系统——Android,最新的SDK现在已经可以下载了,其App开发环境竟然是Java!目前Google已经推出了一个Eclipse插件Android Development Tools(简称ADT)来简化开发。按照官方站点的文档,在Eclipse下开发一个Android Application非常容易。
首先下载Android SDK Windows版本,解压即可,然后直接在Eclipse中安装插件,选择Help->Software Update->Find and Install…,选择Search for new features to install,填入地址https://dlssl.google.com/android/eclipse/,然后一路Next即可:
安装完毕后重启Eclipse,需要对SDK作一点设置。选择Window- ...
发表于07-10-10 12:38 | 阅读 538 |
1人对此综合评价
在开发web应用时,如果通过weblogic的控制台部署war包,则weblogic默认在运行期不会解压war,这对于调试jsp颇为不便。其实,只需一个简单的设置就可以强迫weblogic解开war,并且编辑jsp后weblogic会重新加载,方便调试。
以8.1 sp4为例,打开bea/user_projects/domains/<my-domain>/config.xml
找到相应的war包:
<Application Name="test"
Path="C:\java\bea\user_projects\domains\mydomain\applications\test.war"
StagingMode="nostage" TwoPhase="true">
将StagingMode改为stage,重启weblogic即可。解压后的 ...
发表于07-10-09 09:29 | 阅读 10916 |
3人对此综合评价
Spring 2.0在线视频教程(Flash格式):
新窗口观看
或者从以下地址下载:
下载地址
发表于07-10-02 06:55 | 阅读 439 |
1人对此综合评价
Jetty是一个优秀的Web服务器,最大的特点是可嵌入应用程序,因此作为调试服务器非常方便,就像跟踪普通的main()方法一样可以在Eclipse中直接调试Web应用而无需远程连接。但是使用Jetty发现一个问题,即Windows上启动后Jetty会锁定已访问的静态文件,如HTML,CSS等,这给页面设计带来了不便。
其实Jetty官方站点对此问题已有回答,锁定文件据说是为了提高性能,但我觉得缓存也不一定需要长时间锁定文件:
http://docs.codehaus.org/display/JETTY/Files+locked+on+Windows
其实可以修改Jetty默认的配置文件,在jetty-6.1.5.jar中找到org/mortbay/jetty/webapp/webdefault.xml,搜索useFileMappedBuffer:
<init-param>
<param-name>useFileMappedBuffer</param-name& ...
发表于07-09-20 10:54 | 阅读 552 |
评分 (暂无)
最近在项目中用Quartz调度任务,运行在WebLogic 8.1中,使用JDBC作为存储源,后台数据库是Oracle 9i,几经周折,才搞定Quartz的配置。
首先是无法写入Oracle数据库,提示Blog字段表示有问题,经搜索发现,由于配置的Quartz数据源是从WebLogic的JNDI拿到的,因此务必将org.quartz.jobStore.driverDelegateClass属性配置为org.quartz.impl.jdbcjobstore.oracle.weblogic.WebLogicOracleDelegate。
然后提示找不到class,先放入quartz-weblogic-1.6.0.jar,重启后发现还是找不到org.quartz.impl.jdbcjobstore.oracle.weblogic.WebLogicOracleDelegate,再仔细检查发现原来Quartz自带的配置文件把类的全名拼错了(org.quartz.impl.jdbcjobstore.oracle.WebLogicOracleDe ...
发表于07-09-01 16:09 | 阅读 1292 |
1人对此综合评价
上午通过3个小时奋战,终于成功在Debian Etch r1上通过xen成功安装Windows XP!
这是安装界面:
安装成功后进入Windows的界面:
要在Linux上按装Windows,除了VMWare这种通过软件全虚拟的方式,还可以通过xen实现硬件支持的虚拟。现在,各主要发行版都内置了xen,原本打算在Redhat Enterprise 5上试试,不过硬件配置太麻烦。源码编译太麻烦,最好是通过安装包一次搞定,最终决定用Debian Etch,几条apt-get就搞定了,非常方便。
安装Windows的必须条件:
CPU必须支持Intel VT或AMD PT虚拟化技术,没有的话就不用考虑了。要检查CPU是否支持,用命令:
grep vmx /proc/cpuinfo
如果是AMD的CPU用grep svm /proc/cpuinfo。
我的硬件配置:Inte ...
发表于07-08-29 21:45 | 阅读 496 |
评分 (暂无)
在Debian Etch上安装迅驰无线网卡非常方便,不用编内核也不用编驱动,我在Asus和HP的两台笔记本上都安装成功!
Asus笔记本是迅驰一代,无线模块是2200BG。先安装Debian Etch r1,我采用的是netinst,安装完毕后只有最基本的系统,内核版本是2.6.18-5。然后用apt-get直接安装无线模块:
apt-get install ipw2200-modules-2.6.18-5-686
还需下载一个firmware,从http://ipw2200.sourceforge.net/firmware.php下载v3.0,解压后放在/usr/lib/hotplug/firmware/即可。
编辑/etc/network/interfaces,仿照eth0添加:
allow hotplug eth1
iface eth1 inet dhcp
我设置的无线AP没有口令,重启 ...
发表于07-08-27 14:11 | 阅读 400 |
评分 (暂无)
JavaEE开发网的博客后台新增了向Google博客搜索自动提交索引的功能,今天测试了一下,发现Google的索引速度非常快,从博客发布到被索引只用了1分钟左右的时间:
发表于07-08-27 14:02 | 阅读 517 |
评分 (暂无)
Java 1.5增加了非常实用的Process和ProcessBuilder类,能让我们非常方便地在Java应用程序中启动其他任何可执行文件和脚本。以下代码将运行一个记事本:
public class Main {
private static final String COMMAND = "C:\\WINDOWS\\NOTEPAD.EXE";
public static void main(String[] args) throws IOException, InterruptedException {
Process process = null;
if(args.length==0)&nbs ...