(转)Servlet 工作原理解析(以tomcat7为基础)

     Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 Java Web 技术的核心基础。因而掌握 Servlet 的工作原理是成为一名合格的 Java Web 技术开发人员的基本要求。本文将带你认识 Java Web 技术是如何基于 Servlet 工作,你将知道:以 Tomcat 为例了解 Servlet 容器是如何工作的?一个 Web 工程在 Servlet 容器中是如何启动的? Servlet 容器如何解析你在 web.xml 中定义的 Servlet ?用户的请求是如何被分配给指定的 Servlet 的? Servlet 容器如何管理 Servlet 生命周期?你还将了解到最新的 Servlet 的 API 的类层次结构,以及 Servlet 中一些难点问题的分析。
    本文转自 许令波(来自淘宝),原文为 Servlet 工作原理解析 

继续阅读“(转)Servlet 工作原理解析(以tomcat7为基础)”

BeanFactory与ApplicationContext对事务等的支持的不同

     beanFactory与ApplicationContext在具体使用时,它们在使用以及对j2ee开发上,支持是不一样的。具体就表现在spring对两者的具体实现上。   

继续阅读“BeanFactory与ApplicationContext对事务等的支持的不同”

增强jpda以进行java程序的调试开发(转自taobao开发博客)

     在平常的开发过程中,我们经常需要在项目已经运行的情况下,修改java代码,并在不重新启动web容器(如tomcat)的情况下,进行hotswap调试开发。这是由java的jpda功能来提供的。然而,默认的jpda只允许方法内部实现的修改,对于增加方法,删除方法等操作,是不支持的,这种情况下必须重新启动web容器再进行调试开发。而通过修改jvm,来增加java的调试,就可以达到默认的jvm所不能达到的效果。dcevm就是这么一个组件,它通过替换jvm来实现增加的jpda。
    本文转自taobao中间件开发博客,原文地址为:hotswap 用户手册.

继续阅读“增强jpda以进行java程序的调试开发(转自taobao开发博客)”

使用spring aspect ltw和tomcat进行web开发的aspect加载问题

使用spring aspect ltw与tomcat整合开发时,需要ltw一般有两种方法。一种是通过aspectj本身的classload机制,在tomcat启动脚本中,加载相应的java agent数据信息;另一种就是通过修改上下文的classLoader,而使用spring提供的tomcatInstrmentClassLoader来进行aspect的编织工作。
然而,在笔者的开发环境中,却发生了aspect无法被再次编织的问题。经过反复的检查,确认了是由于classLoader加载类的先后顺序以及spring对instrment的注入顺序发生了混乱,而导致aspect类并没有正确的被编织。

    使用spring aspect ltw与tomcat整合开发时,需要ltw一般有两种方法。一种是通过aspectj本身的classload机制,在tomcat启动脚本中,加载相应的java agent数据信息;另一种就是通过修改上下文的classLoader,而使用spring提供的tomcatInstrmentClassLoader来进行aspect的编织工作。
    然而,在笔者的开发环境中,却发生了aspect无法被再次编织的问题。经过反复的检查,确认了是由于classLoader加载类的先后顺序以及spring对instrment的注入顺序发生了混乱,而导致aspect类并没有正确的被编织。

继续阅读“使用spring aspect ltw和tomcat进行web开发的aspect加载问题”

使用普通java开发编译注解版的aspectj程序

使用java5语法(annotation)版的aspectj进行ltw化的aspect开发。在进行运行配置时,必须保证相应的aspect也同样在weaver中,以进行再次编织。

     平时使用aspect开发程序时,一般都是使用普通的aspect语法,然后通过使用ajc进行编译之后,再在命令行下面运行。这样,对于使用ide工具进行java程序开发的人员来说非常麻烦。自aspectj支持java5语法之后,就不再直接使用普通的aspect语法了,而是直接使用Aspectj Annotation语法,然后通过ltw来直接运行aspectj程序。
    本文主要讲解如何使用aspectj的ltw功能进行程序开发,以及对于其中一个在javac环境下的特殊配置文件处理。

继续阅读“使用普通java开发编译注解版的aspectj程序”

使用embeded tomcat进行嵌入式javaee开发-程序更新

     一般情况下,在进行客户程序的更新时,通常是由维护人员手动将更新程序(或整个项目程序),重新copy至客户的服务器上,并重新启动相应的web容器来达到程序更新的目的。不过,这样有一个缺点,就是每次更新时,必须需要维护人员在现场进行。对于,客户离公司远,并且更新又频繁(比如,小修小改)时,这种情况就得不偿失了。所以,能够有一个自动更新的程序,在指定的时间将程序进行更新,并且重新启动相应的web服务器,这样就最好了。
    本文通过使用svnkit来进行程序的更新,描述了基本的svn使用,以及一个简单的更新流程。

继续阅读“使用embeded tomcat进行嵌入式javaee开发-程序更新”