我这里已经自己建了一个DEMO,但是有很多不方便的地方,请教各位有没有更好的实现方案?
有一个jar模块:test-core,一个war模块:test-web。test-web模块依赖test-jar模块。我要达到的效果是:修改jar模块代码的时候,能直接热部署,就是tomcat不要reload。
我目前的实现方法:
1.test-core是最简单的maven工程,jar工程,这个没什么好说的。
2.test-web的maven的war工程,具体的配置入下图:
test-web的Project-Facets配置如下图
test-web的Deployment Assembly配置如下图:
3.eclipse中tomcat的配置:
(红框出是我自己配置的结果)4.通过以下方式部署test-web
右键tomcat服务器配置,选择《Add and Remove》,然后选中test-web,选择add,如下图:
5.实际部署情况说明
当我修改了test-core的源代码的时候,热部署成功,但是会弹出以下对话框:
而且程序会reload,这样实际开发中很耗时间,如下图:
6.情况分析
当修改了test-core以后,热部署确实成功了,tomcat发布目录的程序里面的依赖包test-core,jar确实更新了,但看上面的提示框,说是lib目录被锁死了。一直找不清问题在哪里。
还有,每次修改代码以后都需要reload,这样web应用相当于重启,以后工程大了会相当耗时,这种很没有效率。能不能有类似myeclipse那种,修改了servlet源码的时候,tomcat里面会自动更新而不需要reload的实现方式?
************************************************************
JSP中动态INCLUDE与静态INCLUDE的区别
我已经有了一下答案,但是不理解答案的意思,比如“检查所含文件中的变化”是什么意思?
---------------------------------------------------
答:动态INCLUDE用jsp:include动作实现
<jsp:include page="included.jsp" flush="true" />
它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数
<%@ include file="included.htm" %>
静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面
动态INCLUDE在使用的时候,会先解析所要包含的页面(你例子中的included.jsp),解析后在和主页面放到一起显示;
静态INCLUDE在使用的时候,不会解析所要包含的页面(你例子中的included.htm),也就是说,不管你的included.htm中有什么,我的任务就是把你包含并显示,其他的一概不管
jsp:include是先编译一下included.jsp文件,然后再包含 先编译,后包含
@ include是先把文件包含就来,然后统一编译 先包含,后编译
个人理解,希望能让你理解
*********************************************
Eclipse两种部署web项目方法
一).首先使用J2EE的Eclipse的Servers(可以从show view中取出).
1).通过Eclipse建立一个Dynamic Web Project
2).通过Servers视图来创建一个server,在这里有的创建后不能更改Tomcat Server文件(类似于XML的那个),如果是这样就把项目删除后更改然后重新添加项目即可.
3).最终修改3个地方如下
二).下载tomcatPlugin插件
1)解压到Eclipse下的plugins目录下重启后会看到3只小猫,并配置Window->perferences->tomcat中的tomcat home为tomcat目录应用。
2).项目的tomcat属性配置如下,然后正常启动,配置好的文件会自动在tomcat目录下生成apache-tomcat-6.0.20\conf\Catalina\localhost。
3).tomcatPlugin下载地址http://download.csdn.net/detail/kingsonl/4249870