15.2. 调试远程运行的路由上下文

注意

远程主机上部署的 Fuse 服务器无法在 CodeReady Studio 的 Servers 视图中注册。因此,您无法启动、自动重新部署或从 CodeReady Studio 中停止远程 Fuse 服务器。反之,您必须在 CodeReady Studio 之外以调试模式启动 Fuse。

先决条件

设置并启动远程调试

在 Fuse 和服务器上部署的项目停止后,您需要设置和启动远程调试,如下所示:

  • 在 Red Hat CodeReady Studio 之外,以调试模式启动 Fuse。

    在远程主机上部署的 Fuse 服务器无法在 CodeReady Studio 的 Servers 视图中注册,因此您必须在 CodeReady Studio 的调试模式中启动 Fuse。

  • 在 CodeReady Studio 中,在项目的路由上下文中的节点上设置断点,这在路由编辑器中打开。
  • 创建远程 Camel 上下文调试配置并运行它。
  • JMX Navigator 视图中连接到 Fuse 运行时。
  • 在 Fuse 运行时中运行的 Camel 路由的输入节点上丢弃 JMX Navigator 视图中的测试消息。
  • 使用任何 Camel 调试器工具调试路由。

流程

设置并启动远程调试:

  1. 在 Red Hat CodeReady Studio 之外打开一个终端,并输入

    $ [FUSE_HOME]/bin/fuse debug
  2. 等待 Fuse splash 屏幕出现,然后返回到 CodeReady Studio 中的 Fuse Integration 视角。
  3. 在工具的路由编辑器中,项目的路由上下文在 Design 选项卡中打开,对感兴趣的节点设置断点。详情请查看 第 14 章 设置 Breakpoints
  4. Project Explorer 视图中,右键点击项目的根目录,然后选择 Debug AsDebug Configuration 来打开 Debug Configuration 向导:

    NewRemoteDBLaunchCnfg
  5. 在配置类型窗格中,选择 Remote Camel ContextRemote Camel Context 和 Java,然后点 New Configuration

    CCJdbNewLaunchCnfg

    对于 Remote Camel ContextRemote Camel Context 和 Java 选项,您需要在 CamelJMX 选项卡上指定配置详情。

    对于 Remote Camel Context 和 Java 选项,您还需要在 Connect 选项卡中指定配置详情。

    注意

    除非您的项目包含您要使用标准 Eclipse Java 调试工具调试的 Java 代码,请选择 Remote Camel Context 选项。

  6. Name 字段中输入新启动配置的名称。
  7. Camel 选项卡中,点 Browse 按钮在 Open Resources 对话框中找到项目的路由上下文 .xml 文件:

    CCdbSelCamelCntxt
    注意

    当您在 Matching items 窗格中选择一个文件时,工具会在窗格的底部显示文件的位置,相对于项目 root。

  8. Matching items 窗格中,从列表中选择您的项目的路由上下文文件,然后单击 OK

    该工具将文件的路径插入到 Select Camel Context file 字段中:

    CCJDbugCamelTabNew
  9. JMX 标签页:

    RemoteDBJMXtabDefaults

    编辑 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]

  10. Connect 选项卡:

    RemoteDBConnectTabDefaults

    Port 值从 8000 更改为 5005。将其他属性保留原样。

  11. Apply,然后点 Debug
  12. JMX Navigator 视图中,双击 Fuse [xxx] [Disconnected] 以连接它,然后展开其树。
  13. Project Explorer 视图中,从 src/test/resources/data 拖动测试消息,并将它放到 JMX Navigator 视图中的 cbr-example-context/Endpoints/file/work/input 文件夹。

    当消息点击路由上下文中设置的第一个断点时,工具会要求您切换到 Debug 视角:

    DBCnfrmSwitchToDBView
  14. 单击 Yes

    RemoteDBPerspOpen

    此时,您可以使用任何 Camel 调试器的工具来调试路由上下文。

    注意

    在远程调试会话中,Console 视图不会显示日志输出。

    注意

    当一个消息到达路由上下文的末尾时,调试器会被暂停。要继续调试,请切换到 Fuse 集成 视角,并在 JMX Navigator 视图中输入节点上丢弃另一条消息。每次这样做时,工具都会要求您确认切换到 Debug 视角。