我已经用某些功能实现了tigase组件,现在尝试弄清楚如何将其用作外部组件。 现在看来,我必须在其上安装我的组件的单独的tigase服务器,然后将主tigase服务器配置为将该单独的服务器称为外部组件。
我想做的是将外部tigase组装到一个jar中,以便能够使用一条线命令运行它,而无需预先安装tigase。
问题有可能吗?
似乎tigase需要数据库才能运行,并且管理指南鼓励使用共享主服务器的数据库作为外部组件。我不确定tigase是否可以在没有数据库的情况下启动,这使得使用简单的java -jar命令很难运行。
答案 0 :(得分:1)
就目前而言,我似乎必须设置带有其组件的单独的tigase服务器,然后将主tigase服务器配置为将该单独的服务器称为外部组件。
这是正确的。在这方面,Tigase XMPP服务器遵循XEP-0114: Jabber Component Protocol和XEP-0225: Component Connections。请参阅 External Component Configuration详细了解如何在Tigase中进行配置。
我想做的是将外部tigase组装到一个jar中,以便能够使用一条线命令运行它,而无需预先安装tigase。 问题有可能吗?
您可以创建一个“超级罐子”-是的,这是可能的。可能的解决方案之一是将您的组件创建为单独的Maven项目,将tigase-server
配置为依赖项,然后利用Apache Maven Assembly Plugin中的jar-with-dependencies
。它将拉出所有必需的,已配置的依赖项并将它们放在单个jar文件中。但是请注意,例如,将不包含数据库驱动程序。
似乎tigase需要数据库才能运行,并且管理指南鼓励使用共享主服务器的数据库作为外部组件。我不确定tigase是否可以在没有数据库的情况下启动,这使得使用简单的java -jar命令很难运行。
确实需要数据库-这具有使您的配置与可能运行您的外部组件的许多节点保持一致的好处(您只需在一个节点上更新一次,所有其余节点将自动更新它),但是您不需要不必使用主服务器数据库。有关详细信息,请参见Usage with a separate database。
如果仅使用外部组件的单个本地实例,则可以创建一个简单的derby数据库,并将配置放置在etc/externalComponentItems
文件中
答案 1 :(得分:0)
是的,Tigase组件Framework / API需要Tigase Server内核才能运行。而且,仅使用自定义组件加载Tigase服务器核心。 为了简化起见,建议在Tigase主XMPP服务器和组件实例之间共享数据库,但不是必须的。我认为,如果真的不需要DB,则外部组件实例甚至可以与虚拟DB连接器一起运行。