0

我已经实现了具有某些功能的 tigase 组件,现在试图弄清楚如何将它用作外部组件。现在看来,我必须在上面设置带有我的组件的单独的 tigase 服务器,然后配置主 tigase 服务器以将该单独的服务器称为外部组件。

我想做的是将外部 tigase 组装到一个 jar 中,以便能够使用一行命令运行它,而无需预先安装 tigase。

问题是有可能吗?

tigase 似乎需要数据库来运行,并且管理指南鼓励将共享主服务器的数据库用于外部组件。我不确定 tigase 是否可以在没有数据库的情况下启动,这使得使用简单的 java -jar 命令运行起来相当困难。

4

2 回答 2

1

现在看来,我必须在上面设置带有我的组件的单独的 tigase 服务器,然后配置主 tigase 服务器以将该单独的服务器称为外部组件。

这是对的。Tigase XMPP 服务器在这方面遵循XEP-0114:Jabber 组件协议XEP-0225:组件连接。有关如何在 Tigase 中进行配置的详细信息,请参阅 外部组件配置。

我想做的是将外部 tigase 组装到一个 jar 中,以便能够使用一行命令运行它,而无需预先安装 tigase。问题是有可能吗?

你可以创建一个“超级罐子”——是的,这是可能的。一种可能的解决方案是将您的组件创建为一个单独的 Maven 项目,配置为依赖项,tigase-server然后利用Apache Maven Assembly Plugin。它将提取所有必需的、已配置的依赖项并将它们放在单个 jar 文件中。但是请注意,例如数据库驱动程序将不包括在内。jar-with-dependencies

似乎 tigase 需要数据库来运行,并且管理指南鼓励将共享主服务器的数据库用于外部组件。我不确定 tigase 是否可以在没有数据库的情况下启动,这使得使用简单的 java -jar 命令运行起来相当困难。

确实需要数据库 - 这有助于使您的配置与可能运行您的外部组件的许多节点保持一致(您只需在一个节点上更新一次,所有剩余节点将自动更新它),但您不必使用主服务器数据库。有关详细信息,请参阅使用单独的数据库。如果您只使用外部组件的单个本地实例,那么您可以创建一个简单的 derby 数据库并将您的配置放在etc/externalComponentItems文件中

于 2019-04-11T18:32:28.937 回答
0

是的,Tigase 组件框架/API 需要 Tigase 服务器核心才能运行。而且您只需使用自定义组件加载 Tigase 服务器核心。为简单起见,建议在 Tigase 主 XMPP 服务器和组件实例之间共享数据库,但不是强制性的。如果真的不需要 DB,我认为外部组件实例甚至可以使用虚拟 DB 连接器运行。

于 2019-04-11T18:29:43.660 回答