Запуск приложения Java, которое прослушивает порт 80 в качестве веб-приложения Azure. Как вы решаете ошибки HTTP-связывания? - PullRequest
0 голосов
/ 08 мая 2018

При запуске приложения Java из файла .Jar в веб-приложении Azure приложение запускается, но не связывается с портом 80.

Следуя инструкциям по ссылке ниже: https://blogs.msdn.microsoft.com/azureossds/2015/12/28/running-java-jar-file-to-serve-web-requests-on-azure-app-service-web-apps/

Приложение запускается, но выдает ошибку при попытке привязки:

java.net.BindException: адрес уже используется: bind
в sun.nio.ch.Net.bind0 (собственный метод) ~ [na: 1.8.0_60] at sun.nio.ch.Net.bind (Net.java:433) ~ [na: 1.8.0_60] at sun.nio.ch.Net.bind (Net.java:425) ~ [na: 1.8.0_60] at sun.nio.ch.ServerSocketChannelImpl.bind (ServerSocketChannelImpl.java:223) ~ [na: 1.8.0_60] в sun.nio.ch.ServerSocketAdaptor.bind (ServerSocketAdaptor.java:74) ~ [На: 1.8.0_60]

Я ожидаю, что это будет процесс w3wp, который уже связан с портом 80, поэтому не позволяет приложению java связываться с тем же портом.

Вот как выглядит web.config для веб-приложения:

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

<system.webServer>

<handlers>

<add name="httpPlatformHandler" path="*" verb="*"

modules="httpPlatformHandler" resourceType="Unspecified" />

</handlers>

<httpPlatform processPath="%ProgramW6432%\Java\jdk1.8.0_60\bin\java.exe"

arguments="-Djava.net.preferIPv4Stack=true -Dport.http=%HTTP_PLATFORM_PORT% -jar &quot;%HOME%\site\wwwroot\bin\demojar.jar&quot;"

stdoutLogEnabled="true"

startupRetryCount='10'>

</httpPlatform>

</system.webServer>

</configuration>

Есть ли способ убедить платформу Azure Web App разрешить приложению Java связываться с портом 80?

1 Ответ

0 голосов
/ 31 июля 2018

Ключом является переменная среды% HTTP_PLATFORM_PORT%. Служба веб-приложений установит эту переменную среды как порт, который ожидает ваше Java-приложение (именно поэтому ваш web.config также передает это значение в качестве аргумента среде выполнения Java).

Вместо прослушивания на порту 80 вы должны настроить приложение Java на привязку к порту% HTTP_PLATFORM_PORT%. Затем IIS прозрачно перенаправит все запросы, полученные через порт 80, в ваше приложение. Это также поможет с такими вещами, как завершение TLS на порту 443, поэтому приложение также может быть открыто через HTTPS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...