2017年3月15日星期三

OpenShift_063:远程调试容器中的 Java Web 应用

环境:OCP 3.4 +  Eclipse Neon.2 Release (4.6.2) + JBoss Tools 4.4.3

本文以 mybank 应用为例,说明如何远程调试容器中的 Java Web 应用,因此请先部署好 mybank 应用。
关于部署 mybank 应用,请参考《OpenShift_031:部署 MyBank 到 JBoss EAP 7》。

 1. 下载并安装 Eclipse
 下载地址:https://www.eclipse.org/downloads/eclipse-packages/
 介质:eclipse-jee-neon-2-macosx-cocoa-x86_64.tar.gz

 2. 下载 JBoss Tools Plugin
 
下载地址:http://tools.jboss.org/downloads/jbosstools/
 介质:jbosstools-4.4.3.Final-updatesite-core.zip

 3. 离线安装 JBoss Tools Plugin
 
(1)打开 Eclipse
 (2)点击 Help -> Install New Software
 (3)点击 Work with 旁边的 Add,点击 Archive,选择 jbosstools-4.4.3.Final-updatesite-core.zip
 (4)输入 OpenShift,只勾选与 OpenShift 3 相关的 Tools

4. 如果觉得 Eclipse + JBoss Tools Plugin 安装比较麻烦,可以用 Redhat JBoss Developer Studio 10.3.0
好处是 JBoss Developer Studio 已经都给你配好了,装完无需配置即可使用。
下载地址:https://developers.redhat.com/products/devstudio/download/
安装介质:devstudio-10.3.0.GA-installer-standalone.jar

5. 配置 OpenShift Server
参考《Eclipse + JBoss Tools Plugin 配置 Openshift 集成开发环境配置

6. 右键应用 mybank,生成 Server Adapter...

右键刚刚生成 mybank at  OpenShift 3 ....,点击 Start,
修改页面代码,比如换个图片,直接刷新页面,发现代码已经同步到容器中了。
无需重新生成新的镜像并且发布,和在本地开发调试的感觉几乎一样,真是太方便了
说明:修改代码或者手动 Restart/Publish 后,会自动重新部署 ROOT.war,不会重启 EAP,更不会重新创建 Pod
也就是说,Server Adapter 是连接到了容器中的 EAP Server(即下图中的 mybank at OpenShift 3...),然后做重新部署。
经过进一步测试,修改前端页面和后端 Java 代码,都只要等待自动重新部署 ROOT.war 完成之后,刷新页面即可。
因此,也就不需要区分增量发布和全量发布了。

7. 右键刚刚生成 mybank at  OpenShift 3 ....,点击 Restart in Debug


笔者发现,只要不切换启动模式重启,容器不会重新创建,这也大大提高了开发效率。
这里是因为从普通模式切换到了 Debug 模式,因此会销毁旧 pod,并重新创建一个新 pod。

8. 克隆 mybank 应用
参考《配置 Web Hook 自动开始新 Build》。

9. 在代码中设置断点,刷新页面,触发断点


参考文献:
1. https://developers.redhat.com/blog/2016/07/21/debugging-java-applications-using-the-red-hat-container-development-kit/
2. https://vimeo.com/44548968

没有评论: