跳至主要内容

部署 26.03

在 ChatGPT 中打开

webforJ Maven 插件通过三个目标将应用部署到 BBjShip:

目标运行时机功能
bbj-packagepackage 阶段写入部署归档 target/bbj/<publish name>.zip
bbj-deployinstall 阶段写入归档并将其部署到 BBjShip
bbj-undeploy手动运行从 BBjServices 中移除应用

只有在插件声明了 <extensions>true</extensions> 和 <bbj> 块时,这些阶段才会生效。请参阅配置项目。

部署​

mvn install

如果没有启用扩展,请运行 mvn package webforj:bbj-deploy。部署完成后,目标会输出应用的地址:

[INFO] BBj deployment of inventory completed at http://localhost:8888/webapp/inventory

部署失败时,先前的版本会继续运行。

替换应用

部署会替换已具有相同发布名称的应用。先前的部署文件夹会被移除,该应用正在运行的会话也会结束。如果之后可能需要回退,请保留先前版本的归档。

故障排除列出了部署失败时的消息,以及相应的处理方法。

打包但不部署​

bbj-package 会写入相同的归档,但不需要部署 URL 或凭据。CI 作业可以将 target/bbj/<publish name>.zip 附加到构建产物中,然后由 BBj 管理员在 BBj 计算机上使用 bbjship apps deploy 进行部署。

取消部署​

mvn webforj:bbj-undeploy

应用会停止运行,并连同其文件一起从 Enterprise Manager 中移除。

无法撤销

bbj-undeploy 会结束应用正在运行的会话,并删除其部署文件夹。此操作无法撤销。如果之后可能需要再次部署应用,请保留 target/bbj/<publish name>.zip 中的归档。

发布名称​

发布名称默认为构建的最终名称,并显示在应用地址中。它必须以字母或数字开头,只能包含字母、数字、_、. 和 -,且不能以点结尾。归档写入前会拒绝保留名称,例如 BBjServices 路径 webapp 和 files,或 Windows 设备名称 con。

每个入口类只能属于一个已部署的应用。若尝试使用第二个名称部署该类,将会失败并显示:

BBj deployment failed with HTTP 409. Entry class com.example.Application is already published as inventory. Undeploy inventory first

从另一台计算机部署​

从另一台计算机(例如 CI 服务器)部署时,需要通过 HTTPS 使用授权令牌:

  1. 在 BBj 计算机上,使用 SSL 端口启用端点。
  2. 在 Enterprise Manager 中,前往 Security 下的 Authentication Tokens 创建令牌。也可以在此处续期或撤销令牌。
  3. 将令牌传递给构建:
mvn package webforj:bbj-deploy \
-Dwebforj.bbj.deployment.url=https://bbj.example.com:8443/webforj-bbjship \
-Dwebforj.bbj.admin.token="$BBJ_ADMIN_TOKEN"

BBjServices Web 服务器的证书必须与 URL 中的主机名匹配,或者位于构建所用的 Java 信任库中。Java 不信任 BBj 的默认证书,因为该证书是自签名的。

向另一台计算机指定 http:// URL 时,双方都会拒绝请求。目标会在发送任何内容之前停止,而 BBjShip 会对从另一台计算机通过 HTTP 发来的请求返回 HTTP 403。如果 URL 指向 BBj 计算机本身(localhost 或其自身地址之一),则可以通过 HTTP 使用。

如果仍要通过 HTTP 向另一台计算机部署(例如部署到自己计算机上的虚拟机),则必须在双方都允许。在 BBj 计算机上,使用端点端口运行 bbjship remote enable --allow-unencrypted。在构建中,设置 <deployment><allowUnencrypted>true</allowUnencrypted>,或者传入以下属性:

mvn package webforj:bbj-deploy \
-Dwebforj.bbj.deployment.url=http://bbj.example.com:8888/webforj-bbjship \
-Dwebforj.bbj.deployment.allowUnencrypted=true

之后,目标会输出警告并继续部署。在此连接上,凭据会以可读形式通过网络传输。

应用设置​

每次部署时,BBjShip 都会读取应用的 webforj.conf,并将其中的这些属性应用到 Enterprise Manager 中的应用。重新部署时会应用已更改的值。未设置的属性将保留 BBjServices 的默认值。

webforj.conf
webforj.assetsSource = packaged
webforj.disallowConsole = true
webforj.programArguments = ["mode=demo", "region eu"]
属性默认值说明
webforj.assetsSource未设置packaged 会从应用中通过 /webforj/<publish name>/ 提供 ws:// 静态文件和 icons:// 图标。如果未设置该属性,使用 icons:// 的应用将无法启动。
webforj.showClientConfirmationDialogfalse浏览器是否会在页面关闭前请求确认。
webforj.disallowConsoletrue是否禁止在应用中使用控制台。
webforj.secureBBjServices 默认值应用是否通过安全连接运行。
webforj.configFileBBjServices 默认值应用运行时所用 BBj 配置文件的路径,BBjServices 会在 BBj 计算机上读取该文件。路径会按原样传递,因此可以指定仅服务器上存在的文件。
webforj.programArguments无应用的程序参数,可以是字符串列表,也可以是单个字符串。

webforj.conf 无效时,部署会失败并返回 HTTP 400 和原因说明。

设置​

设置位于 webforj-maven-plugin 配置的 <bbj> 块中,如构建插件所示。命令行中传入的每个属性都会覆盖对应元素的值。

Maven 元素Maven 属性默认值说明
<home>webforj.bbj.home自动检测BBj 安装文件夹,供 bbj-setup 和 watch 使用。
<publishName>webforj.bbj.publishName构建的最终名称应用发布时使用的名称,请参阅发布名称。
<deployment><url>webforj.bbj.deployment.url无,必填BBjShip 的地址,格式为 http://<host>:<HTTP port>/webforj-bbjship 或 https://<host>:<SSL port>/webforj-bbjship。
<deployment><allowUnencrypted>webforj.bbj.deployment.allowUnencryptedfalse允许 bbj-deploy 和 bbj-undeploy 通过指向另一台计算机的 http:// URL 发送凭据,请参阅从另一台计算机部署。
<admin><username>webforj.bbj.admin.username用户名和密码均未提供时为 adminBBj 管理员用户名。
<admin><password>webforj.bbj.admin.password用户名和密码均未提供时为 admin123BBj 管理员密码。
<admin><token>webforj.bbj.admin.token空用于 bbj-deploy 和 bbj-undeploy 的授权令牌。优先级高于用户名和密码。
<properties>webforj.bbj.properties<home>/cfg/BBj.properties开发运行写入热替换设置的 BBjServices 属性文件。
<development><classFolder>—构建输出目录开发运行的类文件夹,BBjServices 会读取此文件夹。
—webforj.bbj.forcefalse允许 bbj-setup 替换已安装的其他版本 BBjShip。仅限属性使用。

只提供用户名而未提供密码,或只提供密码而未提供用户名,都会导致目标停止运行。

webforJ 团队

需要帮助吗?

与 webforJ 的工程师聊聊您的项目。

预约通话

我们支持EN · DE · FR · ES