0

有没有办法以编程方式将 jar 部署到远程缓存服务器?我宁愿避免安装本地 GemFire 仅gfsh用于部署..

4

3 回答 3

1

您可以在 github 上找到所有 GemFire/Geode 源代码:

https://github.com/apache/incubator-geode

为 GFSH 部署 jar 所涉及的类有:

  • com.gemstone.gemfire.management.internal.cli.commands.DeployCommands
  • com.gemstone.gemfire.management.internal.cli.functions.DeployFunction
  • com.gemstone.gemfire.management.internal.cli.functions.UndeployFunction
  • com.gemstone.gemfire.management.internal.cli.functions.ListDeployedFunction

上述函数使用以下函数来完成实际工作:

  • com.gemstone.gemfire.internal.JarDeployer
  • com.gemstone.gemfire.internal.JarClassLoader

因此,理论上您可以使用 JarDeployer 和 JarClassLoader 编写一些代码。它们是内部类,因此它们 a) 不是官方的用户/开发人员 API,并且 b) 可能会更改或被删除。

于 2015-08-26T22:02:10.047 回答
1

如果您想避免gfsh在本地安装,可以使用 REST 协议与定位器通信。

gfsh可以配置为与定位器交谈 REST。为此,您必须使用 gemfire 属性启动定位器http-service-port: 8080,然后在使用时连接到定位器gfsh

gfsh>connect --use-http

现在,而不是 gfsh,您可以将 jar 卷曲到定位器(然后将其发送到所有服务器)。

curl --fail -s -Fresources=@/path/to/your.jar http://locatorhost:port/gemfire/v1/deployed

由于端点可能会发生变化,因此通常会出现关于易碎的注意事项。

于 2015-08-24T18:33:15.127 回答
0

查看远程安装中的启动脚本,例如 $GEMFIRE_HOME/bin/'gemfire'。看起来您可以将 jar 复制到每个缓存服务器可访问的位置,并设置 CLASSPATH 环境变量以包含 jar。话虽如此,仅使用 gfsh 可能更容易、更可靠,尤其是在您拥有多个缓存服务器的情况下。

于 2015-08-24T13:00:48.880 回答