通过 cli 部署到远程 Glassfish 实例

fdd*_*fdd 5 glassfish asadmin

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

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

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

fdd*_*fdd 3

在做了更多研究后,我放弃了在没有完整 Glassfish 安装的情况下安装 asadmin 的尝试,而是使用 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/
Run Code Online (Sandbox Code Playgroud)

一旦您知道需要做什么,REST API 就相当简单,但为了以防万一其他人需要它,这里有几个重要的点:

  • --insecure 是必需的(通过 CURL)以允许自签名和不受信任的 SSL 证书
  • 必须设置“Accept”和“X-Requested-By”的标头属性,否则 Glassfish 不会处理请求,只会返回一个空白文档作为应答。不知道为什么,但设置这些参数就可以了。
  • war 文件的内容作为 POST 上的“id”参数传递
  • URL 需要与上面的片段中显示的完全相同,即不要将“domain”替换为您的域名,或将“application”替换为您的应用程序名称。这是实际的 REST 接口端点。无需在任何地方指定域名/应用程序名称。