使用FileSync来调试JSP

此文献给那些怀念 MyEclipse debug JSP 功能,但是由于版权或机器无法负担日益庞大的性能开销的人们
前言
我在使用过myeclipse后,十分怀念它的服务器调试功能(要比WTP提供的好不少)。无奈新环境下无法使用myeclipse了,只好自己动手丰衣足食。
环境:
1.       eclipse 3.2.1(with wtp1.5.2)
2.       FileSync 1.3.2
3.       jboss 4.0.3sp1
基本原理是通过eclipse的远程调试功能,FileSync 插件的文件同步和jboss的热部署来模拟myeclipse服务器调试。
本文档适用于以下用户:
1.       中国程序员(因为只有中文版)
2.       不能使用盗版myeclipse的
3.       接手的是一些老工程,这些工程使用ant作为编译和部署工具,这些工程配置文件和源代码路径都比较怪异,无法使用myeclipse的标准工程(这就是我的情况。。。。。)
 
步骤1 设置jboss启动参数,加入远程debug的option。
打开jboss4.0.1sp1\bin目录下的run.bat,加入这一行set DEBUG_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n
修改启动的那一部分,在%JAVA%" %JAVA_OPTS% 和-Djava.endorsed.dirs=%JBOSS_ENDORSED_DIRS%"之间加入%DEBUG_OPTS% 。其实在默认的run.bat已经有了这个option,只需要将其注释去掉就可以。
注意:
ü         rem在批处理中表示注释的意思。
ü         address 表示的是远程debug的端口,需要通eclipse设置保持一致。下面的是一个例子:
一个run.bat的示列:
。。。。。。(略)
rem Setup JBoss specific properties
set JAVA_OPTS=%JAVA_OPTS% -Dprogram.name=%PROGNAME% -Ddefault.client.encoding=UTF-8
set JBOSS_HOME=%DIRNAME%\..
 
rem Sun JVM memory allocation pool parameters. Modify as appropriate.
set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m
 
set DEBUG_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n
 
。。。。。。(中略)
:RESTART
"%JAVA%" %JAVA_OPTS% %DEBUG_OPTS% "-Djava.endorsed.dirs=%JBOSS_ENDORSED_DIRS%" -classpath "%JBOSS_CLASSPATH%" org.jboss.Main %*
。。。。。。(略)
 
步骤2 建示例工程
这里由于我使用的是wtp 1.5.2,可以直接创建一个叫SampleWeb的Dynamic Web Project。如果没有安装wtp,就需要手动来创建一个web工程了(需要手动创建web-inf\web.xml)。

一切设置默认。

步骤3 在jboss中创建部署的文件夹
比如C:\jboss-4.0.3SP1\server\default\deploy\SampleWeb.war。
注意:
ü         这里文件夹要以“.war”结尾,不然jboss要将该文件夹作为一个J2EE工程(sar)来解析。
步骤4 设置SampleWeb工程的FileSync
在eclipse中右键点击SampleWeb工程,查看属性(properties),点击File synchronisation选项卡。

将File synchronisation选项卡中Allow different target folder选项钩上。

点击Add Folder按钮。将SampleWeb\WebContent加入File synchronisation。设置这个文件夹的target folder设置为刚才在jboss中创建的文件夹。如图:
步骤5 创建一个jsp页面,例如jsp\index.jsp
打开jsp\index.jsp,添加以下代码
 
<!---->
<!---->DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
< html >
< head >
< meta http-equiv = "Content-Type" content = "text/html; charset=windows-31j" >
< title > Insert title here title>
head>
< body >
<!---->
body>
html>
在“ out.println( "welcome to real world!" ); ”处 设置断点。
步骤6 开始debug。eclipse的Debug中添加一个Remote Java Application 项
注意将端口(Port)设置为4000,这个值要与刚才修改run.bat中的address值保持一致。
点击Debug按钮,开始debug。这时eclipse并没有什么反应。
在浏览器中输入 http://localhost:8080/SampleWeb/jsp/index.jsp,eclipse自动开始激活刚才设置的断点,本次debug之旅也顺利结束了。
PS:
调试servlet和JSP没有区别。
Jboss和tomcat也没大区别。
在debug的是JSP页面的时候,可以不需要重新启动Jboss就可以看到更改的结果。
在debug其他程序时,比如Servlet或java类时,如果只是在函数内部的变化,也不需要重新启动Jboss。但是,修改了函数级别以上的源代码,比如修改的一个类的某一方法名,就必须重新启动jboss了。
某些配置文件修改后也需要重新启动JBoss,比如Struts的配置文件。这时,也可以通过稍微修改一下web.xml(在里面加个空格之类的)来达到使Jboss重新载入web工程的目的(偷懒一下)。
FileSync 插件的地址是 http://andrei.gmxhome.de/eclipse.html,也可以通过 http://andrei.gmxhome.de/eclipse/ 这个地址来安装。以下是安装手册的节选。
Installation
Eclipse 3.1+: all what you need to install FileSync plugin is to copy FileSync jar to you %Eclipse%/plugin directory and restart Eclipse.
For Eclipse 3.1 Update Manager users: you can use special Eclipse update site for this plugin. Go to "Help -> Software Updates -> Find and Install... -> Search for new features to install -> Next -> New Remote Site..." and use the http://andrei.gmxhome.de/eclipse/ as url

你可能感兴趣的:(eclipse,Web,jsp,jboss,MyEclipse)