Получить хост и порт внутри bean-компонента EJB без сохранения состояния, установленного на моем сервере Websphere.

У меня есть EJB Stateless Bean, который автоматически выполняется планировщиком внутри Websphere. Мой EJB установлен в Websphere. Внутри моего EJB я хотел бы сделать http-запрос к веб-службе, предоставляемой другим приложением (внутри того же сервера). Я пытался просто использовать относительный путь, потому что именно так я обычно делаю запросы между приложениями, но внутри моего bean-компонента я не знаю, как получить имя хоста и порт для создания URL-адреса.

Мне удалось получить хост (ip), сделав это:

InetAddress.getLocalHost().toString();

Но мне также нужен номер порта. Вопрос: как получить номер хоста и порта сервера приложений (Websphere), на котором установлено мое EJB-приложение? Это возможно?

Этот код - это то, как я пытаюсь сделать запрос, но это не работает, потому что мне нужен полный путь:

URL url = new URL("/MyOtherAppName/myservice");         
connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

connection.setRequestProperty("Content-Length", 
    Integer.toString(urlParameters.getBytes().length));
connection.setRequestProperty("Content-Language", "en-US");  

connection.setUseCaches(false);
connection.setDoOutput(true);

-редактировать 1 ----

Я думаю, что подход пользователя Gas хорош и упрощает настройку моего приложения.

Я следовал этому руководству, чтобы реализовать подход поставщика URL:

URL-провайдер Websphere


person angelcazares    schedule 01.02.2016    source источник
comment
Вы знаете, что для хранения только URL-адресов вам не нужно было реализовывать поставщика URL-адресов, а просто использовать уже существующий Default URL Provider и просто добавить новый URL-адрес в качестве ресурса?   -  person Gas    schedule 04.02.2016


Ответы (1)


Я бы предложил другой подход, вместо того, чтобы заставить хост сервера и порт использовать ресурс URL, а затем получить его в EJB. Он будет более переносимым между серверами, а также более гибким, если вы когда-нибудь переместите свой сервис в другое место.

См. Использование ресурсов URL в приложении

Определите URL-адрес через консоль на сервере приложений и используйте аннотацию @Resource в своем EJB следующим образом:

@Resource(name="serviceURL", lookup="url/myurl")
URL myURL;
person Gas    schedule 02.02.2016