5

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

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

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

4

1 回答 1

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/

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

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