Ich konnte es lokal ausführen, aber als ich es bereitstellte, trat ein Fehler auf. Die Einzelheiten der Gegenmaßnahmen werden beschrieben.
** 6/15 Nachschrift ** Es scheint, dass Maven Plug-In usw. nach dem Schreiben dieses Artikels veröffentlicht wurden.
Wie oben erwähnt, funktioniert es lokal mit dem Maven-Plug-In einwandfrei. Wenn ich es jedoch in Azure bereitstelle und ausführe, wird der folgende Fehler angezeigt:
502-Bad Gateway The specified CGI application encountered an error and the server terminated the process.
Demnach scheint der alte Code aufgrund der Veröffentlichung der neuen Runtime nicht mehr zu funktionieren. https://stackoverflow.com/questions/50615746/azure-java-function-502-bad-gateway https://github.com/Azure/app-service-announcements/issues/112
Es funktioniert lokal mit der alten Laufzeit, ist also in Ordnung, aber wenn ich es bereitstelle, wird es auf der neuen Laufzeit ausgeführt, sodass anscheinend ein Fehler aufgetreten ist.
Ich möchte das Problem beheben, damit es mit der neuen Laufzeit funktioniert, aber ab dem 14. Juni 2018 kann ich mich noch nicht darum kümmern. Dies liegt daran, dass das Azure-Funktionen-Maven-Plugin, das dies unterstützt, noch nicht veröffentlicht wurde.
Daher werden wir Folgendes als vorläufige Maßnahme umsetzen.
Geben Sie die Laufzeitversion in Azure an. Öffnen Sie die "Anwendungseinstellungen" der Funktionsanwendung im Azure-Portal. Ändern Sie FUNCTIONS_EXTENSION_VERSION in 2.0.11776-alpha. (Es sollte standardmäßig Beta sein.)
Darüber hinaus ist diese Version bis Ende Juni gültig.
~~ Maven Plugin wurde nicht veröffentlicht, aber andere Teile, die behandelt werden müssen, sind wie folgt. Da es sich um eine halbfertige Antwort handelt, handelt es sich außerdem um eine Umgebung, die auch lokal nicht funktioniert. ~~
** 6/15 Nachschrift ** Das entsprechende Maven-Plugin wurde veröffentlicht, daher ist die folgende Unterstützung in Ordnung.
Es wird davon ausgegangen, dass das Projekt aus Maven Archetype erstellt wurde. Wenn Sie es also anpassen, lesen Sie es bitte entsprechend. ~~ Wenn das Azure-Funktionen-Maven-Plugin veröffentlicht wird, muss außerdem die in der Plugin-Verwaltung angegebene Version geändert werden. ~~
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-functions-java-core</artifactId>
<version>1.0.0-beta-3</version>
</dependency>
<dependency>
<groupId>com.microsoft.azure.functions</groupId>
<artifactId>azure-functions-java-library</artifactId>
<version>1.0.0-beta-4</version>
</dependency>
Hier wird die Einstellung vorgenommen, um die von pom definierte JAR-Datei zum lib-Ordner hinzuzufügen. Ursprünglich war azure-functions-java-core so eingestellt, dass es ausgeschlossen wird. Ändern Sie es daher wie folgt, um die azure-functions-java-library auszuschließen.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${stagingDirectory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
<includeScope>runtime</includeScope>
<excludeArtifactIds>azure-functions-java-library</excludeArtifactIds> <!--Hier-->
</configuration>
</execution>
</executions>
</plugin>
Ändern Sie die Version in 1.0.0-beta-2.
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-functions-maven-plugin</artifactId>
<version>1.0.0-beta-2</version> <!--Hier-->
</plugin>
Das Paket hat sich geändert und muss behoben werden.
import com.microsoft.azure.serverless.functions.annotation.*;
import com.microsoft.azure.serverless.functions.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.*;
Es scheint, dass Serverless weg ist.
Als es sich um ein Update handelte, konnte ich die Versionsspezifikation nicht herausfinden, daher habe ich es deinstalliert und neu installiert.
npm -g uninstall azure-functions-core-tools
npm -g install azure-functions-core-tools@core
Als ich dachte, ich würde diesen Artikel schreiben, arbeiten Leute, die kürzlich damit begonnen haben, Azure-Funktionen auf Java auszuführen, nicht einmal lokal. (Wenn Sie dem Verfahren folgen, wird eine neue Laufzeit installiert.)
Für solche Leute ist es möglicherweise besser, die Version von Runtime zu verringern und zu installieren.
npm -g uninstall azure-functions-core-tools
npm -g install [email protected]
** 6/15 Nachschrift ** Da die entsprechende Version veröffentlicht wurde, ist es meiner Meinung nach besser, Korrekturen vorzunehmen, um die neue Laufzeit zu unterstützen, als die Version von Runtime zu verringern.
Recommended Posts