Tutorial: Erstellen einer JBoss-Web-App mit Azure App Service für Linux und MySQL
In diesem Tutorial wird gezeigt, wie Sie eine sichere JBoss-Anwendung in Azure App Service erstellen, konfigurieren und bereitstellen, die eine Verbindung mit einer MySQL-Datenbank herstellt (mithilfe von Azure Database for MySQL). Azure App Service ist ein hochgradig skalierbarer Webhostingdienst mit Self-Patching, der Apps problemlos unter Windows oder Linux bereitstellen kann. Wenn Sie fertig sind, verfügen Sie über eine JBoss-App, die in Azure App Service für Linux ausgeführt wird.
In diesem Tutorial lernen Sie Folgendes:
- Erstellen einer standardmäßig sicheren Architektur für Azure App Service und einen flexiblen Azure Database for MySQL-Server
- Schützen der Datenbankkonnektivität mithilfe einer kennwortlosen Verbindungszeichenfolge
- Überprüfen von JBoss-Datenquellen in App Service mithilfe der JBoss-Befehlszeilenschnittstelle
- Bereitstellen einer JBoss-Beispiel-App in App Service aus einem GitHub-Repository
- Zugreifen auf App Service-App-Einstellungen im Anwendungscode
- Vornehmen von Änderungen und erneutes Bereitstellen des Anwendungscodes
- Streamen von Diagnoseprotokollen aus App Service
- Verwalten der App im Azure-Portal
Voraussetzungen
- Ein Azure-Konto mit einem aktiven Abonnement. Falls Sie kein Azure-Konto besitzen, können Sie kostenlos eines erstellen.
- Ein GitHub-Konto. Sie können einen solchen Schlüssel auch kostenlos abrufen.
- Java-Kenntnisse zur JBoss-Entwicklung
1. Ausführen des Beispiels
Zunächst richten Sie eine datengesteuerte Beispiel-App als Ausgangspunkt ein. Das Beispielrepository umfasst der Einfachheit halber eine Entwicklercontainerkonfiguration. Der Entwicklercontainer verfügt über alles, was Sie zum Entwickeln einer Anwendung benötigen, einschließlich der Datenbank, des Caches und aller Umgebungsvariablen, die von der Beispielanwendung benötigt werden. Der Entwicklercontainer kann in einem GitHub-Codespace ausgeführt werden, was bedeutet, dass Sie das Beispiel auf jedem Computer mit einem Webbrowser ausführen können.
Schritt 1: In einem neuen Browserfenster:
- Melden Sie sich bei Ihrem GitHub-Konto an.
- Navigieren Sie zu https://github.com/Azure-Samples/msdocs-jboss-mysql-sample-app/fork.
- Wählen Sie Fork erstellen aus.
Schritt 2: Im GitHub-Fork:
Wählen Sie Code>Codespace im Mainbranch erstellen aus. Das Einrichten des Codespace dauert einige Minuten.
Schritt 3: Im Codespace-Terminal:
- Führen Sie
mvn clean wildfly:run
aus. - Wenn die Benachrichtigung
Your application running on port 8080 is available.
angezeigt wird, warten Sie einige Sekunden länger, bis der WildFly-Server das Laden der Anwendung abgeschlossen hat. Wählen Sie dann Im Browser öffnen aus. Die Beispielanwendung sollte auf einer neuen Browserregisterkarte angezeigt werden. Geben SieCtrl
+C
ein, um den WildFly-Server zu beenden.
Tipp
Sie können GitHub Copilot über dieses Repository befragen. Zum Beispiel:
- @workspace Was macht dieses Projekt?
- @workspace Wofür dient der Ordner „.devcontainer“?
Treten Probleme auf? Sehen Sie sich den Abschnitt zur Problembehandlung an.
2. Erstellen von App Service und MySQL
Zuerst erstellen Sie die Azure-Ressourcen. Die in diesem Tutorial ausgeführten Schritte erstellen eine Reihe standardmäßig sicherer Ressourcen, die App Service und Azure Database for MySQL umfassen. Für den Erstellungsprozess geben Sie Folgendes an:
- Den Namen für die Web-App. Er wird als Teil des DNS-Namens für Ihre App in Form von
https://<app-name>-<hash>.<region>.azurewebsites.net
verwendet. - Die Region für die physische Ausführung der App in der Welt Sie wird auch als Teil des DNS-Namens für Ihre App verwendet.
- Der Runtimestapel für die App. Hier wählen Sie die Version von Java aus, die für Ihre App verwendet werden soll.
- Der Hostingplan für die App. Dies ist der Tarif, der die Features und Skalierungskapazität für Ihre App enthält.
- Die Ressourcengruppe für die App. Mit einer Ressourcengruppe können Sie (in einem logischen Container) alle für die Anwendung benötigten Azure-Ressourcen gruppieren.
Melden Sie sich beim Azure-Portal an, und führen Sie die folgenden Schritte aus, um Ihre Azure App Service-Ressourcen zu erstellen.
Schritt 1: Im Azure-Portal:
- Geben Sie in der oberen Suchleiste App Service ein.
- Wählen Sie unter der Überschrift Dienste das Element mit der Bezeichnung App Service aus.
- Wählen Sie Erstellen>Web-App aus. Sie können auch direkt zum Erstellungs-Assistenten navigieren.
Schritt 2: Füllen Sie das Formular auf der Seite Web-App erstellen wie folgt aus.
- Name: msdocs-jboss-mysql. Eine Ressourcengruppe mit dem Namen msdocs-jboss-mysql_group wird für Sie generiert.
- Laufzeitstapel: Java 17.
- Java-Webserverstapel: Red Hat JBoss EAP 8. Wenn Sie Ihr Red Hat-Abonnement bereits mit Azure konfiguriert haben, wählen Sie Red Hat JBoss EAP 8 BYO License aus.
- Region: Eine beliebige Azure-Region in Ihrer Nähe.
- Linux-Plan: Wählen Sie Neu erstellen aus, und verwenden Sie den Namen msdocs-jboss-mysql.
- Preisplan: Premium V3 P0V3. Wenn Sie bereit sind, können Sie auf einen anderen Tarif hochskalieren.
- Mit Ihrer App bereitstellen: Wählen Sie Datenbank aus. „Azure Database for MySQL – Flexibler Server“ ist standardmäßig für Sie ausgewählt. Es handelt sich dabei um eine vollständig verwaltete Database-as-a-Service-Lösung von MySQL in Azure, die mit den neuesten Community-Editionen kompatibel ist.
- Klicken Sie auf Überprüfen + erstellen.
- Wenn die Überprüfung abgeschlossen ist, wählen Sie Erstellen aus.
Schritt 3: Die Durchführung der Bereitstellung dauert einige Minuten. Wählen Sie nach Abschluss der Bereitstellung die Schaltfläche Zu Ressource wechseln aus. Sie werden direkt zur App Service App weitergeleitet, aber die folgenden Ressourcen werden erstellt:
- Ressourcengruppe: Der Container für alle erstellten Ressourcen.
- App Service-Plan: Definiert die Berechnungsressourcen für App Service. Ein Linux-Plan im Basic-Tarif wird erstellt.
- App Service: Stellt Ihre App dar und wird im App Service Plan ausgeführt.
- Virtuelles Netzwerk: Integriert in die App Service-App und isoliert den Back-End-Netzwerkdatenverkehr.
- Azure Database for MySQL – Flexibler Server: Nur über das virtuelle Netzwerk zugänglich. Eine Datenbank und ein Benutzer werden für Sie auf dem Server erstellt.
- Private DNS-Zonen: Aktivieren die DNS-Auflösung des Datenbankservers im virtuellen Netzwerk.
Treten Probleme auf? Sehen Sie sich den Abschnitt zur Problembehandlung an.
3. Erstellen einer kennwortlosen Verbindung
In diesem Schritt generieren Sie eine auf einer verwalteten Identität basierende Dienstverbindung, die Sie später zum Erstellen einer Datenquelle auf Ihrem JBoss-Server verwenden können. Durch die Verwendung einer verwalteten Identität zum Herstellen einer Verbindung mit der MySQL-Datenbank ist Ihr Code vor der versehentlichen Offenlegung von Geheimnissen sicher.
Schritt 1: Erstellen Sie eine verwaltete Identität.
- Geben Sie in der oberen Suchleiste verwaltete Identität ein.
- Wählen Sie unter der Überschrift Dienste das Element mit der Bezeichnung Verwaltete Identitäten aus.
- Klicken Sie auf Erstellen.
- Wählen Sie unter Ressourcengruppe die Ressourcengruppe msdocs-jboss-mysql_group aus.
- Wählen Sie für Region dieselbe Region aus, die Sie für Ihre Web-App verwendet haben.
- Geben Sie unter Name den Namen msdocs-jboss-mysql-server-identity ein.
- Klicken Sie auf Überprüfen + erstellen.
- Klicken Sie auf Erstellen.
Schritt 2: Aktivieren Sie Microsoft Entra-Authentifizierung auf dem MySQL-Server.
- Geben Sie in der oberen Suchleiste msdocs-jboss-mysql-server ein.
- Wählen Sie die Ressource für den flexiblen Azure Database for MySQL-Server namens msdocs-jboss-mysql-server aus.
- Wählen Sie im Menü links Sicherheit>Authentifizierung aus.
- Wählen Sie unter Zugriff zuweisen zu die Option Nur Microsoft Entra-Authentifizierung aus.
- Wählen Sie unter Benutzerseitig zugewiesene verwaltete Identität die Option Auswählen aus.
- Wählen Sie msdocs-jboss-mysql-server-identity und dann Hinzufügen aus. Es dauert einen Moment, bis die Identität dem MySQL-Server zugewiesen wird.
- Wählen Sie unter Name des Microsoft Entra-Administrators die Option Auswählen aus.
- Suchen Sie Ihr Azure-Konto, und wählen Sie das Konto und dann Auswählen aus.
- Klicken Sie auf Speichern, und warten Sie, bis der Vorgang abgeschlossen ist.
Schritt 3: Fügen Sie einen auf einer verwalteten Identität basierenden Dienstconnector hinzu.
- Geben Sie in der oberen Suchleiste msdocs-jboss-mysql ein.
- Wählen Sie die App Service-Ressource namens msdocs-jboss-mysql aus.
- Wählen Sie auf der App Service-Seite im linken Menü Einstellungen > Dienstconnector aus.
- Klicken Sie auf Erstellen.
- Auf der Registerkarte Grundlagen:
- Legen Sie Diensttyp auf Flexibler DB for MySQL-Server fest.
- Legen Sie Flexibler MySQL-Server auf msdocs-jboss-mysql-server fest.
- Legen Sie MySQL-Datenbank auf msdocs-jboss-mysql-database fest.
- Legen Sie Clienttyp auf Java fest.
- Wählen Sie die Registerkarte Authentifizierung aus.
- Wählen Sie Systemseitig zugewiesene verwaltete Identität aus.
- Wählen Sie die Registerkarte Überprüfen und erstellen aus.
- Wenn die Überprüfung abgeschlossen ist, wählen Sie In Cloud Shell erstellen aus, und warten Sie, bis der Vorgang in Cloud Shell abgeschlossen ist.
- Wenn die JSON-Ausgabe angezeigt wird, können Sie Cloud Shell schließen. Schließen Sie außerdem das Dialogfeld Verbindung erstellen.
- Wählen Sie Aktualisieren aus, um den neuen Dienstconnector anzuzeigen.
Schritt 4: Fügen Sie Authentifizierungs-Plug-Ins zur Verbindungszeichenfolge hinzu.
- Wählen Sie im linken Menü erneut Umgebungsvariablen > Verbindungszeichenfolgen aus.
- Wählen Sie AZURE_MYSQL_CONNECTIONSTRING. Das Feld Wert sollte
user
, aber nichtpassword
enthalten. Der Benutzer ist eine verwaltete Identität. - Der JBoss-Server in Ihrer App Service-App verfügt über die Authentifizierungs-Plug-Ins zum Authentifizieren der verwalteten Identität, Sie müssen sie aber trotzdem zur Verbindungszeichenfolge hinzufügen. Scrollen Sie zum Ende des Werts, und fügen Sie
&defaultAuthenticationPlugin=com.azure.identity.extensions.jdbc.mysql.AzureMysqlAuthenticationPlugin&authenticationPlugins=com.azure.identity.extensions.jdbc.mysql.AzureMysqlAuthenticationPlugin
an. - Wählen Sie Übernehmen.
- Wählen Sie Anwenden und dann Bestätigen aus.
Treten Probleme auf? Sehen Sie sich den Abschnitt zur Problembehandlung an.
4. Überprüfen der JNDI-Datenquelle
Wenn Sie eine App-Einstellung hinzufügen, die eine gültige JDBC-Verbindungszeichenfolge für Oracle, SQL Server, PostgreSQL oder MySQL enthält, fügt App Service dafür eine JNDI-Datenquelle (Java Naming and Directory Interface) auf dem JBoss-Server hinzu. In diesem Schritt verwenden Sie die SSH-Verbindung mit dem App-Container, um die JNDI-Datenquelle zu überprüfen. Im Prozess erfahren Sie, wie Sie auf die SSH-Shell zugreifen und die JBoss-Befehlszeilenschnittstelle ausführen.
Schritt 1: Zurück auf der App Service-Seite:
- Wählen Sie im linken Menü >Entwicklungstools SSH aus.
- Klicken Sie auf Starten.
Schritt 2: Im SSH-Terminal:
- Führen Sie
$JBOSS_HOME/bin/jboss-cli.sh --connect
aus. - Führen Sie in der JBoss CLI-Verbindung
ls subsystem=datasources/data-source
aus. Die automatisch generierte DatenquelleAZURE_MYSQL_CONNECTIONSTRING_DS
sollte angezeigt werden. - Rufen Sie den JNDI-Namen der Datenquelle mit
/subsystem=datasources/data-source=AZURE_MYSQL_CONNECTIONSTRING_DS:read-attribute(name=jndi-name)
ab. Sie verfügen jetzt über einen JNDI-Namen (java:jboss/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS
), den Sie später im Anwendungscode verwenden können.
Hinweis
Nur Änderungen an Dateien in /home
können über den Neustart der App hinaus beibehalten werden. Wenn Sie beispielsweise /opt/eap/standalone/configuration/standalone.xml
bearbeiten oder die Serverkonfiguration in der JBoss-CLI ändern, bleiben die Änderungen nicht über einen App-Neustart hinaus bestehen. Um Ihre Änderungen beizubehalten, verwenden Sie ein Startskript, wie etwa unter Konfigurieren von Datenquellen für eine Tomcat-, JBoss- oder Java SE-App in Azure App Service gezeigt.
Treten Probleme auf? Sehen Sie sich den Abschnitt zur Problembehandlung an.
5. Bereitstellen von Beispielcode
In diesem Schritt konfigurieren Sie die GitHub-Bereitstellung mithilfe von GitHub Actions. Es ist nur eine der vielen Möglichkeiten, um App Service bereitzustellen, aber auch eine hervorragende Möglichkeit, eine kontinuierliche Integration in Ihren Bereitstellungsprozess zu haben. Standardmäßig startet jede git push
in Ihrem GitHub-Repository die Build- und Bereitstellungsaktion.
Wie bei JBoss üblich, benennen Sie Ihr erstelltes Artefakt ROOT.war, wenn Sie es im Stammkontext von JBoss bereitstellen möchten.
Schritt 1: Wählen Sie zurück auf der App Service-Seite im Menü auf der linken Seite Bereitstellung > Bereitstellungscenter aus.
Schritt 2: Auf der Seite „Bereitstellungscenter“:
- Wählen Sie in Quelle die Option GitHub aus. Standardmäßig wird GitHub Actions als Buildanbieter ausgewählt.
- Melden Sie sich bei Ihrem GitHub-Konto an und folgen Sie der Aufforderung, Azure zu autorisieren.
- Wählen Sie in Organisation Ihr Konto aus.
- Wählen Sie unter Repository das Repository msdocs-jboss-mysql-sample-app aus.
- Wählen Sie in Branch die Option Hauptbereich aus. Dies ist der gleiche Branch, in dem Sie mit Ihrer Beispiel-App gearbeitet haben, ohne Azure-bezogene Dateien oder Konfigurationen.
- Wählen Sie unter Authentifizierungstyp die Option Benutzerseitig zugewiesene Identität aus.
- Wählen Sie im oberen Menü Speichern aus. App Service committet eine Workflowdatei in das ausgewählte GitHub-Repository im
.github/workflows
-Verzeichnis. Standardmäßig erstellt das Bereitstellungscenter eine benutzerseitig zugewiesene Identität für den Workflow zur Authentifizierung mithilfe von Microsoft Entra (OIDC-Authentifizierung). Weitere Informationen zu alternativen Authentifizierungsoptionen finden Sie unter Bereitstellen in App Service mithilfe von GitHub Actions.
Schritt 3: führen Sie zurück im GitHub-Codespace Ihrer Beispiel-Verzweigung git pull origin main
aus.
Dadurch wird die neu committete Workflowdatei in Ihren Codespace übertragen. Sie können es entsprechend Ihren Anforderungen unter .github/workflows/main_msdocs-jboss-mysql.yml ändern.
Schritt 4 (Option 1: mit GitHub Copilot):
- Starten Sie eine neue Chatsitzung, indem Sie die Chatansicht und dann + auswählen.
- Fragen Sie „@workspace Wie stellt die App eine Verbindung mit der Datenbank her?“ Copilot gibt Ihnen möglicherweise einige Erläuterungen über die
java:jboss/MySQLDS
-Datenquelle und wie sie konfiguriert wird. - Sagen Sie „Die Datenquelle in JBoss in Azure verwendet den JNDI-Namen java:jboss/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS.“. Copilot gibt Ihnen möglicherweise einen Codevorschlag ähnlich dem in den Schritten unter Option 2: Ohne GitHub Copilot weiter unten und schlägt Ihnen sogar vor, die Änderung in der Klasse vorzunehmen. GitHub Copilot gibt Ihnen nicht jedes Mal die gleiche Antwort. Möglicherweise müssen Sie zusätzliche Fragen stellen, um die Antwort zu optimieren. Tipps finden Sie unter Was kann ich mit GitHub Copilot in meinem Codespace machen?.
Schritt 4 (Option 2: ohne GitHub Copilot):
- Öffnen Sie src/main/resources/META-INF/persistence.xml im Explorer. Wenn die Anwendung gestartet wird, werden die Datenbankeinstellungen in dieser Datei geladen.
- Ändern Sie den Wert von
<jta-data-source>
injava:jboss/env/jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS
. Dabei handelt es sich um die Datenquelle ist, die Sie zuvor in der SSH-Shell mit der JBoss-CLI ermittelt haben.
Schritt 5:
- Wählen Sie die Quellsteuerungserweiterung aus.
- Geben Sie im Textfeld eine Commitnachricht ein, z. B.
Configure Azure JNDI name
. - Wählen Sie Commit aus, und bestätigen Sie dann mit Ja.
- Wählen Sie Änderungen synchronisieren 1 aus, und bestätigen Sie dann mit OK.
Schritt 6: Zurück auf der Seite „Bereitstellungscenter“ im Azure-Portal:
- Wählen Sie Protokolle aus. Eine neue Bereitstellungsausführung wurde bereits durch Ihre committeten Änderungen gestartet.
- Wählen Sie in dem Protokollelement für die Bereitstellungsausführung den Eintrag Build/Deploy Logs mit dem neuesten Zeitstempel aus.
Schritt 7: Sie werden zu Ihrem GitHub-Repository weitergeleitet und sehen, dass die GitHub-Aktion ausgeführt wird. Die Workflowdatei definiert zwei separate Phasen, Erstellen und Bereitstellen. Warten Sie, bis die GitHub-Ausführung den Status Abgeschlossen anzeigt. Dies dauert ca. 5 Minuten.
Treten Probleme auf? Sehen Sie sich den Abschnitt zur Problembehandlung an.
6. Navigieren zur App
Schritt 1: Auf der App Service-Seite:
- Wählen Sie im Menü auf der linken Seite die Option Übersicht aus.
- Wählen Sie unter Standarddomänedie URL Ihrer App aus.
Schritt 2: Fügen Sie der Liste einige Aufgaben hinzu. Glückwunsch! Sie führen eine Web-App in Azure App Service mit sicherer Konnektivität zu Azure Database for MySQL aus.
Treten Probleme auf? Sehen Sie sich den Abschnitt zur Problembehandlung an.
7. Streamen von Diagnoseprotokollen
Azure App Service erfasst alle Nachrichten, die in der Konsole ausgegeben werden, um Sie bei der Diagnose von Problemen mit Ihrer Anwendung zu unterstützen. Die Beispielanwendung enthält standardmäßige Log4j-Protokollierungsanweisungen, um diese Funktion wie im folgenden Codeschnipsel dargestellt zu veranschaulichen.
private static final Logger logger = Logger.getLogger(MethodHandles.lookup().lookupClass().getName());
@PersistenceContext
private EntityManager entityManager;
public List<Task> getAllTasks() {
logger.log(Level.INFO, "Finding all tasks. ");
return this.entityManager.createNamedQuery("findAllTasks", Task.class).getResultList();
}
Wählen Sie auf der App Service-Seite im linken Menü Protokollstream aus. Sie sehen die Protokolle für Ihre App, einschließlich Plattformprotokolle und Protokolle innerhalb des Containers.
Erfahren Sie mehr über die Protokollierung in Java-Apps in der Reihe unter Azure Monitor OpenTelemetry für .NET-, Node.js-, Python- und Java-Anwendungen aktivieren.
Treten Probleme auf? Sehen Sie sich den Abschnitt zur Problembehandlung an.
8. Bereinigen von Ressourcen
Wenn Sie fertig sind, können Sie alle Ressourcen aus Ihrem Azure-Abonnement löschen, indem Sie die Ressourcengruppe löschen.
Schritt 1: In der Suchleiste oben im Azure-Portal:
- Geben Sie den Ressourcengruppennamen msdocs-jboss-mysql_group ein.
- Wählen Sie die Ressourcengruppe aus.
Schritt 2: Wählen Sie auf der Seite „Ressourcengruppe“ die Option Ressourcengruppe löschen aus.
Schritt 3:
- Geben Sie den Namen der Ressourcengruppe ein, um Ihre Löschung zu bestätigen.
- Klicken Sie auf Löschen.
- Bestätigen Sie erneut mit Löschen.
Problembehandlung
- Mir wird der Fehler „Nicht zur Verwendung des Features 'Bring Your Own License' berechtigt“ im Erstellungs-Assistenten angezeigt.
- Die Portalbereitstellungsansicht für Azure Database für Azure Database for MySQL – Flexibler Server zeigt einen Konfliktstatus.
- Im Dialogfeld „Verbindung erstellen“ wird die Schaltfläche „In Cloud Shell erstellen“ angezeigt, sie ist jedoch nicht aktiviert.
- Meine App konnte nicht gestartet werden, und in den Protokollen wird „Zugriff verweigert für Benutzer... (mit Kennwort: NEIN).“ angezeigt.
- Die bereitgestellte Beispiel-App zeigt nicht die Aufgabenlisten-App an.
- In den Diagnoseprotokollen wird der Fehler „Tabelle 'Task' ist bereits vorhanden“. angezeigt.
Mir wird der Fehler „Nicht zur Verwendung des Features 'Bring Your Own License' berechtigt“ im Erstellungs-Assistenten angezeigt.
Wenn der Fehler The subscription '701ea799-fb46-4407-bb67-9cbcf289f1c7' is not entitled to use the Bring Your Own License feature when creating the application
angezeigt wird, bedeutet dies, dass Sie Red Hat JBoss EAP 7/8 BYO License im Java-Webserverstapel ausgewählt haben, aber Ihr Azure-Konto nicht in Red Hat Cloud Access eingerichtet haben oder keine aktive JBoss EAP-Lizenz in Red Hat Cloud Access besitzen.
Die Portalbereitstellungsansicht für Azure Database für Azure Database for MySQL – Flexibler Server zeigt einen Konfliktstatus.
Je nach ausgewähltem Abonnement und ausgewählter Region wird möglicherweise der Bereitstellungsstatus für Azure Database for MySQL – Flexibler Server als Conflict
mit der folgenden Meldung in den Vorgangsdetails angezeigt:
InternalServerError: An unexpected error occured while processing the request.
Dieser Fehler wird höchstwahrscheinlich durch einen Grenzwert für Ihr Abonnement für die von Ihnen ausgewählte Region verursacht. Versuchen Sie, eine andere Region für Ihre Bereitstellung auszuwählen.
Im Dialogfeld „Verbindung erstellen“ wird die Schaltfläche „In Cloud Shell erstellen“ angezeigt, sie ist jedoch nicht aktiviert.
Möglicherweise wird auch eine Fehlermeldung im Dialogfeld angezeigt: The database server is in Virtual Network and Cloud Shell can't connect to it. Please copy the commands and execute on an environment which can connect to the database server in Virtual Network.
Für die Automatisierung des Dienstconnectors wird Netzwerkzugriff auf den MySQL-Server benötigt. Sehen Sie sich die Netzwerkeinstellungen Ihrer MySQL-Serverressource an, und stellen Sie sicher, dass mindestens Öffentlichen Zugriff auf diese Ressource über das Internet mit einer öffentlichen IP-Adresse zulassen ausgewählt ist. Der Dienstconnector kann von dort übernehmen.
Wenn dieses Kontrollkästchen nicht angezeigt wird, haben Sie die Bereitstellung möglicherweise stattdessen mit dem Assistenten für Web-Apps und Datenbanken erstellt, und die Bereitstellung sperrt den gesamten Zugriff über öffentliche Netzwerke auf den MySQL-Server. Es gibt keine Möglichkeit, die Konfiguration zu ändern. Da der Linux-Container der App über die Integration des virtuellen Netzwerks auf MySQL zugreifen kann, können Sie die Azure CLI in der SSH-Sitzung der App installieren und dort die angegebenen Cloud Shell-Befehle ausführen.
Die bereitgestellte Beispiel-App zeigt nicht die Aufgabenlisten-App an.
Wenn anstelle der Aufgabenlisten-App die JBoss-Begrüßungsseite angezeigt wird, lädt App Service den aktualisierten Container höchstwahrscheinlich immer noch aus der neuesten Codebereitstellung. Warten Sie einige Minuten, und aktualisieren Sie die Seite.
Meine App konnte nicht gestartet werden, und in den Protokollen wird „Zugriff verweigert für Benutzer... (mit Kennwort: NEIN).“ angezeigt.
Dieser Fehler tritt wahrscheinlich auf, weil Sie das Plug-In für die kennwortlose Authentifizierung nicht zur Verbindungszeichenfolge hinzugefügt haben (siehe Java-Beispielcode für das Integrieren von Azure Database for MySQL mit Dienstconnector). Ändern Sie die MySQL-Verbindungszeichenfolge, indem Sie die Anweisungen unter 3. Erstellen einer kennwortlosen Verbindung befolgen.
In den Diagnoseprotokollen wird der Fehler „Tabelle 'Task' ist bereits vorhanden“. angezeigt.
Sie können diesen Ruhezustandsfehler ignorieren, da er angibt, dass der Anwendungscode mit der MySQL-Datenbank verbunden ist. Die Anwendung ist so konfiguriert, dass beim Start die erforderlichen Tabellen erstellt werden (siehe src/main/resources/META-INF/persistence.xml). Wenn die Anwendung zum ersten Mal gestartet wird, sollte sie die Tabellen erfolgreich erstellen. Bei nachfolgenden Neustarts wird jedoch dieser Fehler angezeigt, da die Tabellen bereits vorhanden sind.
Häufig gestellte Fragen
- Wie viel kostet diese Einrichtung?
- Wie stelle ich mit anderen Tools eine Verbindung mit dem MySQL-Server her, der sich hinter dem virtuellen Netzwerk befindet?
- Wie funktioniert die lokale App-Entwicklung mit GitHub Actions?
- Ich habe keine Berechtigungen zum Erstellen einer benutzerseitig zugewiesenen Identität.
- Was kann ich mit GitHub Copilot in meinem Codespace machen?
Wie viel kostet diese Einrichtung?
Die Preise für die erstellte Ressourcen sind wie folgt:
- Der App Service-Plan wird im Tarif P0v3 erstellt und kann hoch- oder herunterskaliert werden. Informationen dazu finden Sie unter App Service – Preise.
- Der flexible MySQL-Server wird auf der Ebene D2ds erstellt und kann hoch- oder herunterskaliert werden. Azure Database for MySQL: Preise
- Das virtuelle Netzwerk hat keine Gebühr, es sei denn, Sie konfigurieren zusätzliche Funktionen, z. B. Peering. Siehe Azure Virtual Network Preise.
- Die private DNS-Zone verursacht eine kleine Gebühr. Siehe Azure DNS-Preise.
Wie stelle ich mit anderen Tools eine Verbindung mit dem MySQL-Server her, der sich hinter dem virtuellen Netzwerk befindet?
- Der JBoss-Container verfügt derzeit nicht auch über das
mysql-client
-Terminal. Sie müssen es manuell installieren, wenn Sie es verwenden möchten. Denken Sie daran, dass installierte Komponenten nicht über App-Neustarts hinweg beibehalten werden. - Um eine Verbindung mit einem Desktoptool wie MySQL Workbench herzustellen, muss sich Ihr Computer innerhalb des virtuellen Netzwerks befinden. Beispielsweise könnte es eine Azure-VM in einem der Subnetze oder ein Computer in einem lokalen Netzwerk mit einer Standort-zu-Standort-VPN-Verbindung mit dem virtuellen Azure-Netzwerk sein.
- Sie können Azure Cloud Shell auch in das virtuelle Netzwerk integrieren.
Wie funktioniert die lokale App-Entwicklung mit GitHub Actions?
Nehmen Sie die automatisch generierte Workflowdatei von App Service als Beispiel; jede git push
startet eine neue Build- und Bereitstellungsausführung. Aus einem lokalen Klon des GitHub-Repositorys können Sie die gewünschten Updates vornehmen und zu GitHub pushen. Zum Beispiel:
git add .
git commit -m "<some-message>"
git push origin main
Ich habe keine Berechtigungen zum Erstellen einer benutzerseitig zugewiesenen Identität.
Siehe Einrichten der Bereitstellung von GitHub Actions über das Bereitstellungscenter.
Was kann ich mit GitHub Copilot in meinem Codespace machen?
Möglicherweise haben Sie bemerkt, dass die GitHub Copilot-Chatansicht bereits verfügbar war, als Sie den Codespace erstellt haben. Zur Vereinfachung können Sie die GitHub Copilot-Chaterweiterung in die Containerdefinition einfügen (siehe .devcontainer/devcontainer.json). Sie benötigen jedoch ein GitHub Copilot-Konto (kostenlose 30-Tage-Testversion verfügbar).
Einige Tipps für die Unterhaltung mit GitHub Copilot:
- In einer einzelnen Chatsitzung bauen die Fragen und Antworten aufeinander auf, und Sie können Ihre Fragen anpassen, um die Antworten zu optimieren.
- Standardmäßig hat GitHub Copilot keinen Zugriff auf Dateien in Ihrem Repository. Um Fragen zu einer Datei zu stellen, öffnen Sie die Datei zuerst im Editor.
- Damit GitHub Copilot beim Vorbereiten der Antworten Zugriff auf alle Dateien im Repository hat, beginnen Sie Ihre Frage mit
@workspace
. Weitere Informationen finden Sie unter Use the @workspace agent. - Innerhalb der Chatsitzung kann GitHub Copilot Änderungen vorschlagen und (mit
@workspace
) auch angeben, wo die Änderungen vorgenommen werden sollen. Copilot darf jedoch die Änderungen nicht für Sie vornehmen. Sie müssen entscheiden, ob Sie die vorgeschlagenen Änderungen hinzufügen und testen.
Im Folgenden finden Sie einige weitere Aussagen, mit denen Sie die Antwort optimieren können:
- Änderen Sie diesen Code so, dass als Datenquelle „jdbc/AZURE_MYSQL_CONNECTIONSTRING_DS“ verwendet wird.
- Einige Importe im Code verwenden Javax, aber ich habe eine Jakarta-App.
- Dieser Code soll nur ausgeführt werden, wenn die Umgebungsvariable AZURE_MYSQL_CONNECTIONSTRING festgelegt ist.
- Ich möchte, dass dieser Code nur in Azure App Service und nicht lokal ausgeführt wird.
Nächste Schritte
Im Entwicklerhandbuch finden Sie weitere Informationen zum Ausführen von Java-Apps in App Service.
Erfahren Sie, wie Sie Ihre App mit einer benutzerdefinierten Domäne und einem Zertifikat schützen.