2015-06-04 3 views
1

В настоящее время я разрабатываю веб-службу REST и выставляю ее в комплекте в FELIX. Я использую разъем JAX-RS для веб-службы. Сервис работает нормально, но если я хочу, чтобы получить доступ к ресурсу шаблон URL являетсяApache FELIX JAX-RS Изменить путь контекста

http://IP:PORT/services/path/to/my/resource

Цель состоит в том, чтобы изменить услуги контекста пути доступа к ресурсам с URL как http://IP:PORT/path/to/my/resource

Я попытался изменить конфигурацию администратора, как это было описано в FAQ для JAX-RS-коннектора, но у меня все еще есть проблема

ServiceReference configurationAdminReference = bundleContext.getServiceReference(ConfigurationAdmin.class.getName()); 
if(configurationAdminReference != null) { 
    ConfigurationAdmin confAdmin = (ConfigurationAdmin) bundleContext.getService(configurationAdminReference); 
    if(confAdmin != null) { 
     Configuration configConnector = confAdmin.getConfiguration("com.eclipsesource.jaxrs.connector",null); 
     Dictionary<String, String> props = configConnector.getProperties() 
     if (props == null) { 
      Dictionary<String, String> props = new Hashtable<String,String>(); 
     } 
     props.put("root","/");  
     configConnector.update(props); 
    } 
} 

Я видел, что у кого-то уже есть эта проблема на этом форуме, но в моем случае это не решает проблему. . Я вижу в веб-консоли felix следующее сообщение об ошибке.

Ошибка: PID "com.eclipsesource.jaxrs .connector "привязан к" файлу:/c: /Dev/Tools/Apache/Felix/bundle/mybundle-1.0.0.jar ", но фактическая управляемая услуга зарегистрирована из пакета" inputstream: publisher-4.3.jar "

Есть идеи?

ответ

0

Ваш код приводит к ошибке NullPointerException, когда configConnector.getProperties() возвращает null, поскольку вы объявляете новую переменную props в if-предложение вместо того, чтобы назначать новый экземпляр hashtable существующей переменной.

После того, как вы зафиксировали это, вы можете столкнуться с этой проблемой: https://github.com/hstaudacher/osgi-jax-rs-connector/issues/114

Следующий код работает:

org.osgi.service.cm.Configuration configuration = configurationAdmin.getConfiguration("com.eclipsesource.jaxrs.connector", null); 
    Dictionary props = configuration.getProperties(); 
    if (props == null) { 
     props = new Hashtable(); 
    } 
    props.put("root", "/jaxrs"); 
    configuration.update(props); 
Смежные вопросы