2012-09-26 23 views
4

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

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

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

回答

2

做更多的研究,我放弃了在试图安装的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 [email protected]^
    -F contextroot=yourcontextroot^
    -F force=true^
    https://yourservername:4848/management/domain/applications/application/ 

的REST API是相当直截了当几个重要的点:

  • --insecure需要(通过卷曲),允许自签名的和不受信任的SSL证书
  • 为“接受”和“X-要求,以”头属性必须设置,否则Glassfish不处理请求并简单地返回空白文档作为答案。不知道为什么,但设置这些参数使其工作。
  • 战争 文件作为文章上的“ID”参数
  • 的URL必须完全按照上面的剪断所示,即不与您的域名或更换“域” 传递的内容“应用程序”与你的应用程序名称。这是实际的REST接口端点。无需在任何地方指定域名/应用程序名称。
+0

什么是你物理部署文件集?难道你不能把战争文件放在服务器上并完成交易吗?还有更多吗? – amphibient

+0

在我的情况下,构建服务器无法访问应用程序服务器上的任何共享驱动器。为了允许通过自动部署进行简单的文件删除,我们必须共享相应的autodeploy文件夹,但这不是一个选项。 CURL的使用允许我们通过HTTPS来实现。 – fdd