Проблемы с конфигурацией CXF - PullRequest
1 голос
/ 12 января 2011

Я использую CXF для генерации артефактов на стороне клиента и для создания моего wsdl с помощью плагина java2ws.

В конфигурации CXF для генерации WSDL на tomcat, где вам нужно определить jaxws: конечная точка -У меня проблема с настройкой конфигурации CXF для свойства адреса конечной точки jaxws :.Окончательно сгенерированный wsdl имеет синтаксическую проблему

CXF.xml (без использования пружинных банок в моем MAVEN POM) ->

<import resource="classpath:META-INF/cxf/cxf.xml" />
   <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
   <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
 <jaxws:endpoint id="JMSMetricsServiceEndpoint" 
      implementor="com.putnam.jms.monitor.websvcs.JMSMetricsService"
      address="/">
 </jaxws:endpoint>

Элемент адреса jaxws: address определяет адрес конечной точки какопределено в файле WSDL, который определяет разворачиваемую службу.Для этого требуется указание абсолютного URL-адреса для правильного адреса soap:, который будет записан в сгенерированный WSDL.В настоящее время это значение равно «/», что работает для меня, потому что адрес готов непосредственно из wsdl, за исключением того, что он добавляет косую черту в конце soap: address ->, когда он генерирует wsdl в качестве конечного продукта как такового.

 <soap:address = ' ...... /'> 

Моя цель - заставить это развернуть таким образом, чтобы у меня не было лишних / добавленных.

Я попытался полностью удалить поле адреса, но это не сработало.Я также попытался жестко закодировать адрес, то есть, используя абсолютный URI

 <jaxws:endpoint
 id="JMSMetricsServiceEndpoint" 
       implementor="com.putnam.jms.monitor.websvcs.JMSMetricsService"
       address="${HOST_NAME}">

, где $HOST_NAME = full http path where the wsdl resides ...

пример $HOST_NAME = "http://localhost...."

Но это, похоже, не работаетили.

Это изменение вызывает неправильный WSDL в настоящий момент, даже когда он указывает в правильном направлении.

1 Ответ

1 голос
/ 16 января 2011

Ади, в вашем описании я вижу противоречие - вы говорите, что генерируете артефакты на стороне клиента, но ваша конфигурация предназначена для конечной точки службы. Для клиента подходящая конфигурация -

<jaxws:client...>

не

<jaxws:endpoint..>

Если вы пишете сервис, а не клиент, адрес является относительным, когда вы запрашиваете wsdl от сервиса, URL сервиса получается из URL запроса и относительного URI из указанного вами адреса, если вы не хотите указать явный wsdl (не сгенерированный) с wsdlLocation параметром jaxws: service.

...