此文原写于 12 February 2014, 当时刚做CloudStack 相关开发不久,由于项目需要,需要线上对环境进行调试。CloudStack 本身是Java 编写,可以运行于tomcat 容器当中, 通过对tomcat的配置,可以进行调试

编辑Tomcat
根据tomcat安装的具体情况,进行修改。默认是/usr/sbin/tomcat6
添加参数 -server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8787 到此启动文件当中,大致添加后如下

35 -Djava.io.tmpdir="$CATALINA_TMPDIR"
36 -Djava.util.logging.config.file="${CATALINA_BASE}/conf/logging.properties"
37 -Djava.util.logging.manager="org.apache.juli.ClassLoaderLogManager"
38 -server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8787 \

重启tomcat 容器,之后按照一般的eclipse debug 模式连接进行调试

编译单独的子工程

在项目开发过程当中,对某一个组件进行修改是再正常不过的了,CloudStack 是以maven 进行工程组装打包发布的,以cloud-server为例,如果我们想对修改后的工程,使其能够生效,可以单独编译该工程后,将编译发布后的jar文件替换原有的文件,重启管理节点后即可生效
cd ~/cloudstack4.1.0 mvn clean mvn -pl :cloud-server
在终端可以看到编译过程,最后可以看到如下信息

Total time: 3:01.915s
Finished at: Wed Feb 12 14:56:24 CST 2014
Final Memory: 26M/233M

将新编译后的jar 文件替换原有的 cloud-server-4.1.0.jar, 重启管理节点。


版本信息

软件 版本
CloudStack 4.1.0
tomcat 6