Вызов веб-сервиса через CXF дает нулевые параметры - PullRequest
0 голосов
/ 18 января 2010

У меня есть два проекта кода, оба используют CXF для использования веб-сервисов.Когда я выполняю вызов из проекта A в проект B, метод, который я вызываю, получает нулевые параметры.Я включил ведение журнала, и входящее сообщение действительно содержит правильные параметры.Я также попытался позвонить в мой сервис из SoapUI (инструмент тестирования веб-сервиса).Это проходит по параметрам, как я ожидаю.У кого-нибудь есть идеи, что происходит?

Интерфейс службы:

@WebService
public interface IShortlistService {

  public IShortlist createOrUpdateShortlist(@WebParam(name = "sessionId") String sessionId,
      @WebParam(name = "datastoreInstance") String datastoreInstance,
      @WebParam(name = "datastoreRecordId") String datastoreRecordId);
}

Служба подразумевает:

@Name("shortlistService")
@WebService(endpointInterface = "com.oobjects.shortlist.service.IShortlistService", serviceName = "ShortlistService")
@Features(features = "org.apache.cxf.feature.LoggingFeature")
@Transactional
public class ShortlistService implements IShortlistService {
  public IShortlist createOrUpdateShortlist(String sessionId, String datastoreInstance,
      String datastoreRecordId) {
    // At this point all inputs are null
  }
}

Регистрация входящих сообщений, подтверждающих, что все в порядке:

INFO: Inbound Message
----------------------------
Encoding: UTF-8
Content-Type: text/xml; charset=UTF-8
Headers: {cache-control=[no-cache], content-type=[text/xml; charset=UTF-8], connection=[keep-alive], host=[mypc.mycompany.com:8080], content-length=[391], SOAPAction=[""], user-agent=[Apache CXF 2.2.5], Accept=[*/*], pragma=[no-cache]}
Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns1:createOrUpdateShortlist xmlns:ns1="http://service.shortlist.mycompany.com/"><sessionId>854a48b5-922f-4081-9c76-b6d08b58a341</sessionId><datastoreInstance>http://mypc.mycompany.com:8080/shortlist-app/services/ShortlistService</datastoreInstance></ns1:createOrUpdateShortlist></soap:Body></soap:Envelope>
--------------------------------------

Версии CXF одинаковы (2.2.5).Я не могу думать, что еще проверить!

Некоторая запрашиваемая информация ...

  • @ Имя - это аннотация шва
  • Настраивается программно
  • Привязка данных Aegis (JAXWS не любит интерфейсы)

Ответы [ 2 ]

0 голосов
/ 04 октября 2010

Хорошо, проблема решена как ошибка. Парень, чей интерфейс я использовал, не обновлялся из хранилища до развертывания его службы, и, поскольку что-то изменилось с его стороны (пункт throws был удален), который он зарегистрировал, но не развернул, я использовал более свежую версию хранилище. Его версия интерфейса вызвала исключение, но моя версия интерфейса не говорила об этом. Итак:

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

0 голосов
/ 18 января 2010

@ Ли Теобальд ... нет ничего очевидного в вашем опубликованном вопросе, который показывает, почему он не работает для вас. В этом случае «ответ», как он есть, состоит в том, чтобы запросить помощь у «пользователей CXF» и, если необходимо, открыть JIRA. Воспроизведение 20 вопросов в комментариях к вопросу не очень эффективно, и в этом списке гораздо больше глазков CXF-экспертов, чем здесь, на данный момент. Мы могли бы принести исправленный вопрос и ответить здесь, как только будет раскрыта тайна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...