Что мне нужно сделать, так это запустить приложение Java, являющееся переписчиком на стороне сервера службы RESTful. И эта служба будет вызываться другим приложением, работающим на Google App Engine.
Из-за ограничения GAE каждый вызов http ограничен портами 80 и 443 (http и https) с классом HttpUrlConnection. В результате я должен развернуть приложение на стороне сервера на порту 80 или 443.
Однако, поскольку приложение работает в Ubuntu, и эти порты до 1024 не могут быть доступны для пользователя без полномочий root, исключение Access Denied будет выдано при запуске моего приложения.
Решения, которые пришли мне в голову, включают в себя:
Изменение политики безопасности JRE, которая находится в файлах, находится в /lib/security/java.policy, чтобы grantjava.net.SocketPermission "* .80" "прослушивать, подключать, принимать, разрешать" разрешение。 Однако ни при использовании командной строки для включения этого файла, ни при переопределении содержимого в файле java.policy JRE, одно и то же исключение продолжает появляться.
попробуйте войти в систему как пользователь root, однако, поскольку я не знаком с Unix, я не знаю, как это сделать.
другое решение, которое я не пробовал, состоит в том, чтобы сопоставить все вызовы 80 с более высоким портом, таким как 1234, затем я могу без проблем развернуть свое приложение на 1234 и запрос вызова GAE отправить на порт 80. Но как подключить пропущенный пробел все еще проблема.
В настоящее время я использую «хакерский» метод, который заключается в упаковке приложения в файл jar, и sudo запускает файл jar с привилегией root. Это работает сейчас, но определенно не подходит для реальной среды развертывания.
Так что если у кого-нибудь есть идеи по поводу решения, большое спасибо!