第 10 章 将项目发布到红帽 Fuse
本教程介绍了将项目发布到红帽 Fuse 的过程。它假设您在运行 Red Hat Fuse 工具的同一机器上安装了 Red Hat Fuse 实例。
目标
在本教程中,您将完成以下任务:
- 定义 Red Hat Fuse 服务器
- 配置发布选项
-
启动 Red Hat Fuse 服务器并发布
ZooOrderApp
项目 - 连接到 Red Hat Fuse 服务器
-
验证
ZooOrderApp
项目的捆绑包是否已成功构建并发布 -
卸载
ZooOrderApp
项目
先决条件
开始此教程前:
- 访问 Red Hat Fuse 实例
- 在您的计算机上安装了 Java 8
ZooOrderApp 项目由以下之一生成:
完成 第 9 章 使用 JUnit 测试路由 教程。
或
-
完成 第 2 章 设置您的环境 教程,并将项目的
blueprint.xml
文件替换为提供的blueprintContexts/blueprint3.xml
文件,如 “关于资源文件”一节 所述。
定义 Red Hat Fuse Server
定义服务器:
- 打开 Fuse Integration 视角。
- 单击右下角的 Servers 选项卡,以打开 Servers 视图。
点 No servers are available.点击此链接来创建新 server… 链接,以打开 Define a New Server 页面。
注意要在已经定义新的服务器时定义新的服务器,请在 Servers 视图中右键单击,然后选择 New
Server。 扩展 Red Hat JBoss Middleware 节点以公开可用的服务器选项:
- 选择红帽 Fuse 服务器。
接受 服务器主机名(localhost)和 服务器名称 (Fuse n.n Runtime Server)的默认值,然后点 Next 打开 Runtime 页面:
注意如果您还没有安装 Fuse,则可以使用 Download and install runtime 链接下载它。
如果您已经定义了服务器,工具会跳过此页面,而是显示配置详情页面。
- 接受 Name 的默认值。
- 单击 Home Directory 字段旁边的 Browse,以导航到安装并选择它。
从 Execution Environment 旁边的下拉菜单中选择运行时 JRE。
选择 JavaSE-1.8 (推荐)。如有必要,点 Environments 按钮从列表中选择它。
注意Fuse 服务器需要 Java 8 (推荐)。要为 执行环境选择它,您必须已安装了它。
- 将 Alternate JRE 选项保留原样。
点 Next 保存 Fuse Server 的运行时定义,并打开 Fuse 服务器配置详情页面 :
接受 SSH 端口 的默认端口(8101)。
运行时使用 SSH 端口来连接服务器的 Karaf shell。如果此默认是不正确的,您可以通过查看 Red Hat Fuse
installDir/etc/org.apache.karaf.shell.cfg
文件来发现正确的端口号。在 User Name 中,输入用于登录到服务器的名称。
这是存储在 Red Hat Fuse installDir'/etc/users.properties' 文件中的用户名。
注意如果在
/etc/users.properties
文件中激活了默认用户(未提供),工具会使用默认用户名和密码自动填充用户名和密码。如果还没有设置,您可以使用
user=password,role
(如joe=secret,Administrator
)格式向该文件添加一个,也可以使用 karafjaas
命令设置它:-
jaas:realms
mvapich-DESTINATIONto 列出域 -
JAAS:manage --index 1
mvapich-wagon 以编辑第一个(server)域 -
JAAS:useradd <username> <password
> mvapich-mvapichto 添加用户和关联的密码 -
JAAS:roleadd <username> Administrator
mvapich-wagonto 指定新用户的角色 JAAS:update
mvapich-wagonto 使用新用户信息更新域如果已经为服务器选择了 jaas 域,您可以通过发出
JBossFuse:karaf@root
>jaas:users
命令来发现用户名。
-
在 Password 中,键入用户名登录 服务器所需的密码。
这是在 Red Hat Fuse 的
installDir/etc/users.properties
文件中或 karafjaas
命令中设置的密码。点 Finish。
运行时服务器 [stopped, Synchronized] 会出现在 Servers 视图中。
在 Servers 视图中,展开 Runtime Server:
JMX[Disconnected] 在 Runtime Server [stopped, Synchronized] 条目下显示为节点。
配置发布选项
使用发布选项,您可以配置 ZooOrderApp 项目如何以及何时将 ZooOrderApp
项目发布到正在运行的服务器:
- 在保存对项目所做的更改时,立即自动执行
- 在更改并保存项目后,自动配置间隔
- 手动,当您选择 publish 操作时
在本教程中,您可以在保存对 ZooOrderApp
项目的更改时配置立即发布。要做到这一点:
- 在 Servers 视图中,双击 Runtime Server [stopped, Synchronized] 条目来显示其概述。
在服务器的 Overview 页面中,展开 Publishing 部分以公开选项。
确保启用了 资源更改时 Automatically publish publish 选项。
(可选)更改 Publishing interval 的值,以便在进行更改时加快或延迟发布项目。
- 在 Servers 视图中,点 。
等待几秒钟,使服务器启动。当它有时:
Terminal 视图显示 splash 屏幕:
Servers 视图显示:
JMX Navigator 显示 n.n Runtime Server[Disconnected:
在 Servers 视图中,右键单击 n.n Runtime Server [Started],然后选择 Add and Remove 打开 Add and Remove 页面:
确保 选项 如果启动了 server,则将立即检查发布更改。
选择
ZooOrderApp
并点 Add 来将其分配给 Fuse 服务器:点 Finish。
Servers 视图应该显示以下内容:
运行时服务器 [Started, Synchronized]
注意对于服务器,同步 意味着服务器上发布的所有模块都与其本地对应的模块相同。
ZooOrderApp [Started, Synchronized]
注意对于模块 同步,sync 表示已发布的模块与其本地对应的模块相同。因为启用自动发布,所以对 ZooOrderApp 项目所做的更改会按秒发布(根据出 间隔的值)。
- JMX[断开连接]
连接到运行时服务器
连接到运行时服务器后,您可以看到 ZooOrderApp
项目的已发布的元素并与它们交互。
- 在 Servers 视图中,双击 JMX[Disconnected] 以连接到运行时服务器。
在 JMX Navigator 中,展开
Camel
文件夹以公开ZooOrderApp
的元素。点 Bundles 节点,使用运行时服务器上安装的捆绑包列表填充 Properties 视图:
在 Search 字段中,键入 ZooOrderApp。此时会显示对应的捆绑包:
注意或者,您可以在 Terminal 视图中发出
osgi:list
命令,以查看在服务器运行时上安装的生成的捆绑包列表。该工具为osgi:list
命令显示的 OSGi 捆绑包使用不同的命名方案。在这种情况下,命令会返回Camel Blueprint Quickstart
,显示在已安装的捆绑包列表的末尾。在项目的
pom.xml
文件的 <build
> 部分中,您可以找到maven-bundle-plugin
条目中列出的捆绑包符号名称及其捆绑包名称(OSGi):
卸载 ZooOrderApp 项目
您不需要断开 JMX 连接或停止服务器来卸载已发布的资源。
从运行时服务器中删除 ZooOrderApp
资源:
- 在 Servers 视图中,右键单击 n.n Runtime Server 以打开上下文菜单。
选择 Add and Remove:
-
在 Configured 列中,选择
ZooOrderApp
,然后单击 Remove 将ZooOrderApp
资源移到 Available 列中。 - 点 Finish。
在 Servers 视图中,右键单击 JMX[Connected],然后单击 Refresh。
JMX[Connected] 下的
Camel
树会消失。注意在 JMX Navigator 中,Server Connections > n.n Runtime Server[Connected] 下的
Camel
树也会消失。- 在 Properties 视图中显示的 Bundles 页面时,向下滚动到列表的末尾,以验证 ZooOrderApp 的捆绑包不再被列出。