Думаю, у вас есть пара вопросов, которые происходят здесь.
Во-первых, когда вы вызываете new ServerSocket(0)
, он попытается найти сокет, с которым он может связываться, возможно, на 0.0.0.0 (все IP-адреса/интерфейсы) или 127.0.0.1, ни один из которых не является разрешено на OpenShift.
В соответствии с документацией (здесь: http://download.java.net/jdk7/archive/b123/docs/api/java/net/ServerSocket.html) вы можете использовать один из перегруженных методов, чтобы обеспечить привязку IP-адреса, который должен быть вашим OPENHIFT__IP (где могут быть jbosseap, jbossas, wildfly, jbossews и т. Д.). ,
ServerSocket(int port, int backlog, InetAddress bindAddr)
Ваша вторая проблема немного сложнее, в основном, какие порты вы можете привязать. OpenShift позволяет коду пользователя связываться с портами 15000-20000, в зависимости от того, какие порты не используются другими приложениями или службами. Однако ни один из этих портов не открыт для общедоступного Интернета, все они являются внутренними портами для внутренних коммуникаций, поэтому, если вы пытаетесь подключить к ним клиента, это не сработает. Единственными доступными для доступа портами являются 80/443/8000/8443, и ваше приложение должно привязываться к порту 8080 на вашем OPENHIFT__IP, чтобы быть доступным, используя ваш общедоступный url-адрес app-domain.rhcloud.com. Вы можете ознакомиться с этой статьей, чтобы узнать больше о том, как работают все операции связывания и маршрутизации: https://developers.openshift.com/en/managing-port-binding-routing.html
Надеюсь, это ответ на вопрос, почему эта часть кода не работает.
Можете ли вы опубликовать сообщение об ошибке/стеке, которое вы получаете от этого фрагмента кода? Наряду с несколькими особенностями того, что вы пытаетесь достичь? –