有没有办法以编程方式将 jar 部署到远程缓存服务器?我宁愿避免安装本地 GemFire 仅gfsh
用于部署..
问问题
374 次
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 回答