Переопределите Glassfish сгенерированный сервисный адрес конечной точки WSDL

Мне генерировал веб-сервис wsgen через знатока. Когда я развертываю сервис на Glassfish, он помещает URL сервера в WSDL. На наш сервер Glassfish выходит прокси-сервер Apache.

То, чем состоит в том это все средство, когда кто-то получает доступ к нашему WSDL и смотрит на сервисную конечную точку и местоположение адреса мыла, они видят,

http://app server url/service...

вместо

http://proxy server url/service...

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

  1. Действительно ли этот адрес конечной точки важен? Будут клиенты все еще мочь функционировать, если адрес конечной точки не будет соответствовать URL прокси-сервера, то они будут звонить для вызова сервиса. Это в основном задает вопросы, "WSDL к веб-сервису, поскольку интерфейс должен возразить".

    ОБНОВЛЕНИЕ: В ответ на этот первый вопрос действительно кажется, что "WSDL к веб-сервису, поскольку интерфейс должен возразить". Адрес конечной точки, указанный в WSDL, не важен. На самом деле это относительно тривиально для вызова операции веб-сервиса на другую конечную точку, чем та, указанная в WSDL, как описано здесь.

    // Create service and proxy from the generated Service class.
    HelloService service = new HelloService();
    HelloPort proxy = service.getHelloPort();
    
    // Override the endpoint address
    ((BindingProvider)proxy).getRequestContext().put(
            BindingProvider.ENDPOINT_ADDRESS_PROPERTY, 
            "http://new/endpointaddress");
    proxy.sayHello("Hello World!");
    
  2. WSDL сгенерирован автоматически, когда мы развертываемся к Glassfish. Есть ли простой способ переопределить этот сгенерированный адрес конечной точки в Glassfish посредством установки сервера приложений. Если так, я могу создать установку для автоматического размещения URL прокси-сервера в сгенерированный WSDL.

Если 1 действительно важно, и мы не можем переопределить его всегда с 2, то это в основном означает, что мы должны будем сделать отдельные сборки для разработки и производства. Это не "чувствует себя хорошо", поскольку это кажется мне единственной вещью, которую мы должны должны быть сделать для развертывания к другому серверу, отбрасывание существующее (и протестированный) война от одной среды на новый сервер.

5
задан Vinnie 23 August 2012 в 15:33
поделиться

1 ответ

Получается, что параметр Имя сервера установлен на HTTP-приемнике , на котором установлена служба. Вы можете указать это значение в консоли администрирования Glassfish, и Glassfish будет использовать это имя, а не имя хоста в URL запроса.

К сожалению, этот параметр не позволит вам переопределить порт или протокол (http to https), если ваш сервер приложений и прокси-сервер не используют одни и те же (наш не использует).

Вместо этого я написал простой сервлет-фильтр , чтобы мой сервис справился с этим для меня.

5
ответ дан 14 December 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: