通过cli部署到远程Glassfish实例

时间:2012-09-26 21:41:01

标签: glassfish asadmin

我正在尝试通过命令行自动将我们的Java EE应用程序从构建服务器(Jenkins)部署到远程Glassfish服务器。 目前我正在使用asadmin并且它工作正常,但是这个选项要求我在构建服务器上安装Glassfish - 我想避免,因为我不需要它。构建服务器实际上只运行构建和部署,所以我希望尽可能保持服务器“干净”。

我找不到任何只安装asadmin工具的下载,而且我只尝试手动复制所需的文件失败,因为某些* .jars存在一些我不知道的依赖,所以它总是除非我将整个glassfish安装文件夹复制到构建服务器。

所以我的问题是: 有没有人知道如何在不安装整个Glassfish服务器的情况下只安装asadmin工具? 或者,我也很乐意使用任何其他命令行工具,只要它们允许我使用安全通信部署到远程Glassfish实例。

1 个答案:

答案 0 :(得分:3)

在做了一些研究后,我放弃了尝试安装asadmin而没有完整的Glassfish安装,而是使用了Glassfish的REST管理界面。

我现在使用CURL在一个简单的批处理文件中工作:

curl.exe ^
    --user glassfish_username:glassfish_password ^
    --insecure ^
    -H "Accept: application/json" ^
    -H "X-Requested-By: dummy" ^
    -X POST ^
    -F id=@yourfile.war ^
    -F contextroot=yourcontextroot ^
    -F force=true ^
    https://yourservername:4848/management/domain/applications/application/

一旦你知道你需要做什么,REST API就会非常直接,但是以防其他人需要这个,这里有几个要点:

  • - 需要(通过CURL)不安全以允许自签名和不受信任的SSL证书
  • "接受"的标题属性和" X-Requested-By"必须设置,否则Glassfish不处理请求,只返回一个空白文档作为ansower。不知道为什么,但设置这些参数使它工作。
  • 战争的内容 文件作为" id"传递POST上的参数
  • 网址必须完全如上图所示,即不要替换"域" 使用您的域名或"应用程序"与您的应用程序名称。这是实际的REST接口端点。无需在任何地方指定域/应用程序名称。