REST-сервер на основе Apache CXF в контейнере OSGI - PullRequest
1 голос
/ 21 октября 2011

В последнее время я играю со службами REST. Я создал свой сервис с помощью Apache CXF и развернул его в контейнере OSGI - это Apache Servicemix 4.

Мне удалось заставить его работать, но я столкнулся с несколькими оговорками:

  1. первой попыткой развернуть сервер JaxRS в Servicemix было использование комплекта Activator. Несмотря на то, что класс Activator запускается, сервер не запускается. Я подозреваю, что моя конфигурация неверна. Это содержимое класса Activator:

    public void start(BundleContext context) throws Exception {
        System.out.println("TEST");
        Dictionary<String, String> restProps = new Hashtable<String, String>();
    
        restProps.put("service.exported.interfaces", "*");
        restProps.put("service.exported.configs", "org.apache.cxf.rs");
        restProps.put("service.exported.intents", "HTTP");
        restProps.put("org.apache.cxf.rs.provider", MessageWriterProvider.class.getName());
        restProps.put("org.apache.cxf.rs.address", "http://localhost:8080/");
        context.registerService(MyService.class.getName(), new MyServiceImpl(), restProps);
    }
    
  2. Вторая проблема была с аннотациями REST. Мне нужно было добавить аннотации REST как на MyServiceImpl, так и на MyService (интерфейс).

Объяснение для этого - это было необходимо, потому что:

  • MyServiceImpl - поскольку развернутый проект не будет выполнять все методы - только первый в данном классе
  • MyService - потому что мне не удалось создать экземпляр клиента для этого WS

На самом деле я видел в тестах CXF, что не существует примера реализации интерфейса. Обычно аннотации ставятся на простые методы POJO, а класс Client объявляется программно, но это кажется утомительным и повторяющимся.

  1. Более того, несмотря на то, что служба развертываемая и работает правильно, мои тесты не пройдут, и я не могу придумать причину для этого. Возможно, кто-то мог бы быстро взглянуть.

Я поместил весь код на github: https://github.com/zygm0nt/cxf-playground на тот случай, если кому-то будет интересно разобраться в этих проблемах.

Пожалуйста, имейте в виду, я раньше не пользовался CXF, поэтому у этих тезисов могут быть некоторые простые проблемы, но поиск в Google не дал однозначных ответов на них.

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