Saltar al contenido principal

Implementación 26.03

Abrir en ChatGPT

El complemento Maven de webforJ implementa una aplicación en BBjShip con tres objetivos:

ObjetivoSe ejecutaQué hace
bbj-packagecon la fase packageEscribe el archivo de implementación target/bbj/<publish name>.zip
bbj-deploycon la fase installEscribe el archivo e implementa la aplicación en BBjShip
bbj-undeploymanualmenteElimina la aplicación de BBjServices

Las fases se aplican cuando el complemento se declara con <extensions>true</extensions> y un bloque <bbj>. Consulta Configurar un proyecto.

Implementar​

mvn install

Sin la extensión, ejecuta mvn package webforj:bbj-deploy. Cuando finaliza la implementación, el objetivo muestra la dirección de la aplicación:

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

Si la implementación falla, la versión anterior sigue ejecutándose.

Reemplaza la aplicación

Una implementación reemplaza la aplicación que ya tiene el mismo nombre de publicación. Se elimina la carpeta de la implementación anterior y se cierran las sesiones activas de esa aplicación. Conserva el archivo de la versión anterior por si necesitas volver a ella.

Solución de problemas enumera los mensajes de una implementación fallida y qué hacer en cada caso.

Empaquetar sin implementar​

bbj-package escribe el mismo archivo sin una URL de implementación ni credenciales. Un trabajo de CI puede adjuntar target/bbj/<publish name>.zip a la compilación, y un administrador de BBj puede implementarlo en la máquina BBj con bbjship apps deploy.

Retirar la implementación​

mvn webforj:bbj-undeploy

La aplicación se detiene y se elimina de Enterprise Manager, junto con sus archivos.

No se puede deshacer

bbj-undeploy cierra las sesiones activas de la aplicación y elimina su carpeta de implementación. Esta acción no se puede deshacer. Conserva el archivo de target/bbj/<publish name>.zip por si quieres volver a implementar la aplicación.

Nombres de publicación​

De forma predeterminada, el nombre de publicación es el nombre final de la compilación y aparece en la dirección de la aplicación. Empieza con una letra o un dígito, solo contiene letras, dígitos, _, . y -, y no termina en punto. Los nombres reservados, como las rutas de BBjServices webapp y files, o el nombre de dispositivo de Windows con, se rechazan antes de escribir el archivo.

Cada clase de entrada pertenece a una sola aplicación implementada. Si se intenta implementarla con un segundo nombre, se produce un error:

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

Implementar desde otra máquina​

Para implementar desde otra máquina, como un servidor de CI, se usa un token de autorización a través de HTTPS:

  1. En la máquina BBj, habilita el punto de conexión con un puerto SSL.
  2. En Enterprise Manager, crea un token en Security, Authentication Tokens. También puedes renovarlo y revocarlo allí.
  3. Pasa el token a la compilación:
mvn package webforj:bbj-deploy \
-Dwebforj.bbj.deployment.url=https://bbj.example.com:8443/webforj-bbjship \
-Dwebforj.bbj.admin.token="$BBJ_ADMIN_TOKEN"

El certificado del servidor web de BBjServices debe coincidir con el nombre de host de la URL o estar en el almacén de confianza de Java de la compilación. Java no confía en el certificado predeterminado de BBj, que está autofirmado.

Se rechaza una URL http:// a otra máquina en ambos extremos. El objetivo se detiene antes de enviar nada, y BBjShip responde con HTTP 403 a las solicitudes que recibe por HTTP desde otra máquina. Una URL que identifica la propia máquina BBj —localhost o una de sus direcciones— funciona mediante HTTP.

Para implementar mediante HTTP en otra máquina de todos modos, por ejemplo, en una máquina virtual de tu propio equipo, habilítalo en ambos extremos. En la máquina BBj, ejecuta bbjship remote enable --allow-unencrypted con los puertos del punto de conexión. En la compilación, establece <deployment><allowUnencrypted>true</allowUnencrypted> o pasa la propiedad:

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

En ese caso, el objetivo muestra una advertencia y realiza la implementación. Las credenciales se transmiten en texto legible por la red a través de esa conexión.

Configuración de la aplicación​

BBjShip lee el archivo webforj.conf de la aplicación en cada implementación y aplica estas propiedades a la aplicación en Enterprise Manager. Una nueva implementación recoge los valores modificados. Las propiedades que no están establecidas conservan los valores predeterminados de BBjServices.

webforj.conf
webforj.assetsSource = packaged
webforj.disallowConsole = true
webforj.programArguments = ["mode=demo", "region eu"]
PropiedadValor predeterminadoDescripción
webforj.assetsSourceSin establecerpackaged sirve los archivos estáticos ws:// y los iconos icons:// desde la aplicación, en /webforj/<publish name>/. Sin esta propiedad, una aplicación que use icons:// no se inicia.
webforj.showClientConfirmationDialogfalseIndica si el navegador pide confirmación antes de cerrar la página.
webforj.disallowConsoletrueIndica si la consola está deshabilitada en la aplicación.
webforj.secureValor predeterminado de BBjServicesIndica si la aplicación se ejecuta mediante una conexión segura.
webforj.configFileValor predeterminado de BBjServicesRuta del archivo de configuración de BBj con el que se ejecuta la aplicación, tal como lo lee BBjServices en la máquina BBj. La ruta se pasa tal cual, por lo que puede indicar un archivo que solo exista en el servidor.
webforj.programArgumentsNingunoArgumentos del programa de la aplicación, como una lista de cadenas o como una sola cadena.

Si webforj.conf no es válido, la implementación falla con HTTP 400 y el motivo correspondiente.

Configuración​

La configuración se encuentra en el bloque <bbj> de la configuración de webforj-maven-plugin, como se muestra en Complemento de compilación. Cada propiedad sustituye el elemento correspondiente en la línea de comandos.

Elemento MavenPropiedad MavenValor predeterminadoDescripción
<home>webforj.bbj.homeDetectadoCarpeta de instalación de BBj, utilizada por bbj-setup y watch.
<publishName>webforj.bbj.publishNameNombre final de la compilaciónNombre con el que se publica la aplicación; consulta Nombres de publicación.
<deployment><url>webforj.bbj.deployment.urlNinguno, obligatorioDirección de BBjShip: http://<host>:<HTTP port>/webforj-bbjship o https://<host>:<SSL port>/webforj-bbjship.
<deployment><allowUnencrypted>webforj.bbj.deployment.allowUnencryptedfalsePermite que bbj-deploy y bbj-undeploy envíen las credenciales mediante una URL http:// a otra máquina; consulta Implementar desde otra máquina.
<admin><username>webforj.bbj.admin.usernameadmin cuando no se especifican ni el nombre de usuario ni la contraseñaNombre de usuario del administrador de BBj.
<admin><password>webforj.bbj.admin.passwordadmin123 cuando no se especifican ni el nombre de usuario ni la contraseñaContraseña del administrador de BBj.
<admin><token>webforj.bbj.admin.tokenVacíoToken de autorización para bbj-deploy y bbj-undeploy. Tiene prioridad sobre el nombre de usuario y la contraseña.
<properties>webforj.bbj.properties<home>/cfg/BBj.propertiesArchivo de propiedades de BBjServices en el que una ejecución de desarrollo escribe la configuración de intercambio en caliente.
<development><classFolder>—Directorio de salida de la compilaciónCarpeta de clases de una ejecución de desarrollo, tal como la lee BBjServices.
—webforj.bbj.forcefalsePermite que bbj-setup sustituya una instalación de BBjShip de otra versión. Solo es una propiedad.

Si se especifica un nombre de usuario sin contraseña o una contraseña sin nombre de usuario, el objetivo se detiene.