15.2. 调试远程运行的路由上下文
远程主机上部署的 Fuse 服务器无法在 CodeReady Studio 的 Servers 视图中注册。因此,您无法启动、自动重新部署或从 CodeReady Studio 中停止远程 Fuse 服务器。反之,您必须在 CodeReady Studio 之外以调试模式启动 Fuse。
先决条件
使用以下方法之一访问 Fuse 运行时:
-
在本地机器上安装 Fuse 服务器,并编辑其
Fuse_HOME/etc/users.properties
文件来激活admin
用户。详情请查看 第 28.1 节 “添加服务器”。 -
能够访问在远程计算机上安装的 Fuse 服务器。您必须知道其连接详情,包括
admin
用户的凭证。
-
在本地机器上安装 Fuse 服务器,并编辑其
创建新的 Fuse 集成项目,请参阅 “指定项目名称和工作区”一节。在 Fuse 集成项目中:
- 选择与 Fuse 服务器运行时版本匹配的 Camel 版本。
创建一个空的 Blueprint DSL 项目,或使用带有 Blueprint DSL 的 Fuse 预定义模板之一。
注意虽然不要求,但最好确认您可以作为
Local Camel 上下文成功运行项目的路由上下文
。详情请查看 第 6.1 节 “将路由作为本地 Camel 上下文运行”。注意“设置并启动远程调试”一节 中的示例基于 Fuse
Content Based Router 预定义模板和 Red Hat Fuse 6.3.0 运行时。
在 Red Hat CodeReady Studio 中:
- 将 Fuse 服务器添加到 Servers 视图。详情请查看 第 28.1 节 “添加服务器”。
- 启动 Fuse 服务器。详情请查看 第 28.2 节 “启动服务器”。
- 将您的项目发布到 Fuse Runtime 服务器。详情请查看 “在资源更改时自动发布 Fuse 项目”一节。
- 验证项目的捆绑包是否已部署并处于活动状态。详情请查看 “验证项目是否已发布到服务器”一节。
- 停止 Fuse Runtime 服务器。详情请查看 第 28.5 节 “停止服务器”。
设置并启动远程调试
在 Fuse 和服务器上部署的项目停止后,您需要设置和启动远程调试,如下所示:
在 Red Hat CodeReady Studio 之外,以调试模式启动 Fuse。
在远程主机上部署的 Fuse 服务器无法在 CodeReady Studio 的 Servers 视图中注册,因此您必须在 CodeReady Studio 的调试模式中启动 Fuse。
- 在 CodeReady Studio 中,在项目的路由上下文中的节点上设置断点,这在路由编辑器中打开。
- 创建远程 Camel 上下文调试配置并运行它。
- 在 JMX Navigator 视图中连接到 Fuse 运行时。
- 在 Fuse 运行时中运行的 Camel 路由的输入节点上丢弃 JMX Navigator 视图中的测试消息。
- 使用任何 Camel 调试器工具调试路由。
流程
设置并启动远程调试:
在 Red Hat CodeReady Studio 之外打开一个终端,并输入
$ [FUSE_HOME]/bin/fuse debug
- 等待 Fuse splash 屏幕出现,然后返回到 CodeReady Studio 中的 Fuse Integration 视角。
- 在工具的路由编辑器中,项目的路由上下文在 Design 选项卡中打开,对感兴趣的节点设置断点。详情请查看 第 14 章 设置 Breakpoints。
在 Project Explorer 视图中,右键点击项目的根目录,然后选择 Debug As
Debug Configuration 来打开 Debug Configuration 向导: 在配置类型窗格中,选择 Remote Camel Context 或 Remote Camel Context 和 Java,然后点 :
对于 Remote Camel Context 和 Remote Camel Context 和 Java 选项,您需要在 Camel 和 JMX 选项卡上指定配置详情。
对于 Remote Camel Context 和 Java 选项,您还需要在 Connect 选项卡中指定配置详情。
注意除非您的项目包含您要使用标准 Eclipse Java 调试工具调试的 Java 代码,请选择 Remote Camel Context 选项。
- 在 Name 字段中输入新启动配置的名称。
在 Camel 选项卡中,点 Browse 按钮在 Open Resources 对话框中找到项目的路由上下文
.xml
文件:注意当您在 Matching items 窗格中选择一个文件时,工具会在窗格的底部显示文件的位置,相对于项目 root。
在 Matching items 窗格中,从列表中选择您的项目的路由上下文文件,然后单击 OK。
该工具将文件的路径插入到 Select Camel Context file 字段中:
点 JMX 标签页:
编辑 JMX 连接详情,如下所示:
JMX Uri mvapich-mvapichchange
:9011/jmxrmi
to:1099/karaf-root
如果 Fuse 服务器在远程主机上运行,请将
localhost
替换为远程主机的 DNS 名称或 IP 地址。-
JMX User criu-wagonenter
admin
. JMX Password criu-wagonenter
admin
.重要为 JMX 用户和 JMX 密码 显示的值是 Fuse admin 用户默认值,存储在
Fuse_HOME/etc/users.properties
文件中。如果您的设置不同,请输入特定于它的值。如果您要创建 远程 Camel Context debug 启动配置,则已完成。跳至 [debugCfgGo]。
点 Connect 选项卡:
将 Port 值从
8000
更改为5005
。将其他属性保留原样。- 点 Apply,然后点 Debug。
- 在 JMX Navigator 视图中,双击 Fuse [xxx] [Disconnected] 以连接它,然后展开其树。
在 Project Explorer 视图中,从
src/test/resources/data
拖动测试消息,并将它放到 JMX Navigator 视图中的cbr-example-context/Endpoints/file/work/input
文件夹。当消息点击路由上下文中设置的第一个断点时,工具会要求您切换到 Debug 视角:
单击 Yes 。
此时,您可以使用任何 Camel 调试器的工具来调试路由上下文。
注意在远程调试会话中,Console 视图不会显示日志输出。
注意当一个消息到达路由上下文的末尾时,调试器会被暂停。要继续调试,请切换到 Fuse 集成 视角,并在 JMX Navigator 视图中输入节点上丢弃另一条消息。每次这样做时,工具都会要求您确认切换到 Debug 视角。