Как запустить службу cxf на локальном хосте, но вернуть внешний адрес в wsdl? - PullRequest
4 голосов
/ 17 ноября 2009

Я использую cxf и jetty позади apache для предоставления веб-сервиса через мыло. Цель состоит в том, чтобы во всех случаях запустить jetty на http://localhost:9000 и иметь прокси-сервер apache, но автоматически сгенерированный wsdl покажет мыло: адрес, соответствующий среде, в которой он работает (например, http://api.testing.example.com, http://api.uat.example.com, https://api.example.com). Кажется, что сгенерированный класс обслуживания wsdl2java * принимает URL-адрес для wsdl, который должен служить как "местоположением" для начала, так и строкой, возвращаемой в soap: address. должен быть настраиваемым, но это не очевидно, поэтому совет приветствуется.

Немного ясности - я передаю "WsdlURL" в конструктор класса Service через Spring (пока работает только http://localhost:9000). Мне нужно, чтобы решение этой проблемы состояло в изменении конфигурации в файле cxf.cml, cxf-.xml, spring или в другом файле конфигурации, а не в коде, поскольку этот параметр будет изменяться в зависимости от среды, в которой он находится. развертывается.

Ответы [ 2 ]

3 голосов
/ 17 ноября 2009

У конфигурации jaxws: конечной точки есть "ключ публикации", который используется вместо адреса, если он указан. В курсе, что сервлет использует это правильно, не уверен на 100% на пристани. У них много общего кода, поэтому он МОЖЕТ работать.

0 голосов
/ 17 ноября 2009

Попробуйте @WebService(wsdlLocation="http://yourdesiredlocation"). Не уверен, что это сработает.

...