Overslaan naar hoofdinhoud

Implementeren 26.03

Openen in ChatGPT

De webforJ Maven-plug-in implementeert een app op BBjShip met drie doelen:

DoelWordt uitgevoerdWat het doet
bbj-packagetijdens de fase packageSchrijft het implementatiearchief target/bbj/<publish name>.zip
bbj-deploytijdens de fase installSchrijft het archief en implementeert het op BBjShip
bbj-undeployhandmatigVerwijdert de app uit BBjServices

De fasen zijn van toepassing wanneer de plug-in is gedeclareerd met <extensions>true</extensions> en een <bbj>-blok. Zie Een project configureren.

Implementeren​

mvn install

Zonder de extensie voer je mvn package webforj:bbj-deploy uit. Zodra de implementatie is voltooid, geeft het doel het adres van de app weer:

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

Als een implementatie mislukt, blijft de vorige versie actief.

De app wordt vervangen

Een implementatie vervangt de app met dezelfde publicatienaam. De vorige implementatiemap wordt verwijderd en de actieve sessies van die app worden beëindigd. Bewaar het archief van de vorige versie voor het geval je wilt teruggaan.

Probleemoplossing bevat de meldingen van een mislukte implementatie en wat je bij elke melding kunt doen.

Pakket maken zonder te implementeren​

bbj-package schrijft hetzelfde archief, zonder implementatie-URL of inloggegevens. Een CI-taak kan target/bbj/<publish name>.zip aan de build toevoegen; een BBj-beheerder implementeert het vervolgens op de BBj-machine met bbjship apps deploy.

Implementatie ongedaan maken​

mvn webforj:bbj-undeploy

De app wordt gestopt en samen met de bijbehorende bestanden uit Enterprise Manager verwijderd.

Kan niet ongedaan worden gemaakt

bbj-undeploy beëindigt de actieve sessies van de app en verwijdert de implementatiemap. Dit kan niet ongedaan worden gemaakt. Bewaar het archief uit target/bbj/<publish name>.zip als je de app misschien opnieuw wilt implementeren.

Publicatienamen​

De publicatienaam is standaard de definitieve naam van de build en komt voor in het app-adres. De naam begint met een letter of cijfer, bevat alleen letters, cijfers, _, . en -, en eindigt niet op een punt. Gereserveerde namen, zoals de BBjServices-paden webapp en files of de Windows-apparaatnaam con, worden geweigerd voordat het archief wordt geschreven.

Elke entry class hoort bij één geïmplementeerde app. Als je die onder een tweede naam implementeert, mislukt dit met:

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

Implementeren vanaf een andere machine​

Voor implementatie vanaf een andere machine, zoals een CI-server, gebruik je een autorisatietoken via HTTPS:

  1. Schakel het endpoint in op de BBj-machine met een SSL-poort.
  2. Maak in Enterprise Manager een token aan onder Security, Authentication Tokens. Je kunt het daar ook vernieuwen en intrekken.
  3. Geef het token door aan de build:
mvn package webforj:bbj-deploy \
-Dwebforj.bbj.deployment.url=https://bbj.example.com:8443/webforj-bbjship \
-Dwebforj.bbj.admin.token="$BBJ_ADMIN_TOKEN"

Het certificaat van de BBjServices-webserver moet overeenkomen met de hostnaam in de URL of in de Java-truststore van de build staan. Java vertrouwt het standaardcertificaat van BBj niet, omdat dit zelfondertekend is.

Een http://-URL naar een andere machine wordt aan beide kanten geweigerd. Het doel stopt voordat het iets verstuurt, en BBjShip antwoordt met HTTP 403 op een verzoek dat via HTTP vanaf een andere machine binnenkomt. Een URL naar de BBj-machine zelf, localhost of een van de eigen adressen ervan, werkt via HTTP.

Als je toch via HTTP naar een andere machine wilt implementeren, bijvoorbeeld naar een virtuele machine op je eigen computer, moet je dit aan beide kanten toestaan. Voer op de BBj-machine bbjship remote enable --allow-unencrypted uit met de poorten van het endpoint. Stel in de build <deployment><allowUnencrypted>true</allowUnencrypted> in of geef de eigenschap mee:

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

Het doel geeft dan een waarschuwing weer en voert de implementatie uit. De inloggegevens worden via die verbinding onversleuteld over het netwerk verzonden.

App-instellingen​

BBjShip leest bij elke implementatie het webforj.conf-bestand van de app en past de volgende eigenschappen toe op de app in Enterprise Manager. Bij een nieuwe implementatie wordt een gewijzigde waarde overgenomen. Een eigenschap die niet is ingesteld, behoudt de standaardwaarde van BBjServices.

webforj.conf
webforj.assetsSource = packaged
webforj.disallowConsole = true
webforj.programArguments = ["mode=demo", "region eu"]
EigenschapStandaardwaardeBeschrijving
webforj.assetsSourceNiet ingesteldMet packaged worden de statische bestanden ws:// en de pictogrammen icons:// vanuit de app aangeboden op /webforj/<publish name>/. Zonder deze instelling kan een app die icons:// gebruikt niet starten.
webforj.showClientConfirmationDialogfalseBepaalt of de browser om bevestiging vraagt voordat de pagina wordt gesloten.
webforj.disallowConsoletrueBepaalt of de console in de app niet is toegestaan.
webforj.secureStandaardwaarde van BBjServicesBepaalt of de app via een beveiligde verbinding wordt uitgevoerd.
webforj.configFileStandaardwaarde van BBjServicesPad naar het BBj-configuratiebestand waarmee de app wordt uitgevoerd, zoals BBjServices dit op de BBj-machine leest. Het pad wordt ongewijzigd doorgegeven en kan dus verwijzen naar een bestand dat alleen op de server beschikbaar is.
webforj.programArgumentsGeenProgrammaargumenten van de app, als lijst met tekenreeksen of als één tekenreeks.

Een ongeldig webforj.conf-bestand laat de implementatie mislukken met HTTP 400 en een reden.

Instellingen​

De instellingen staan in het <bbj>-blok van de configuratie van webforj-maven-plugin, zoals getoond bij Build-plug-in. Elke eigenschap overschrijft het bijbehorende element op de opdrachtregel.

Maven-elementMaven-eigenschapStandaardwaardeBeschrijving
<home>webforj.bbj.homeAutomatisch gedetecteerdInstallatiemap van BBj, gebruikt door bbj-setup en watch.
<publishName>webforj.bbj.publishNameDefinitieve naam van de buildNaam waaronder de app wordt gepubliceerd; zie Publicatienamen.
<deployment><url>webforj.bbj.deployment.urlGeen, vereistAdres van BBjShip: http://<host>:<HTTP port>/webforj-bbjship of https://<host>:<SSL port>/webforj-bbjship.
<deployment><allowUnencrypted>webforj.bbj.deployment.allowUnencryptedfalseHiermee mogen bbj-deploy en bbj-undeploy de inloggegevens via een http://-URL naar een andere machine verzenden; zie Implementeren vanaf een andere machine.
<admin><username>webforj.bbj.admin.usernameadmin wanneer zowel de gebruikersnaam als het wachtwoord ontbrekenGebruikersnaam van de BBj-beheerder.
<admin><password>webforj.bbj.admin.passwordadmin123 wanneer zowel de gebruikersnaam als het wachtwoord ontbrekenWachtwoord van de BBj-beheerder.
<admin><token>webforj.bbj.admin.tokenLeegAutorisatietoken voor bbj-deploy en bbj-undeploy. Heeft voorrang op de gebruikersnaam en het wachtwoord.
<properties>webforj.bbj.properties<home>/cfg/BBj.propertiesBBjServices-eigenschappenbestand waarin een ontwikkelrun de hotswap-instellingen schrijft.
<development><classFolder>—Uitvoermap van de buildClass-map van een ontwikkelrun, zoals BBjServices die leest.
—webforj.bbj.forcefalseHiermee kan bbj-setup een geïnstalleerde BBjShip van een andere versie vervangen. Alleen als eigenschap beschikbaar.

Een gebruikersnaam zonder wachtwoord, of een wachtwoord zonder gebruikersnaam, zorgt ervoor dat het doel stopt.