2014-10-27 6 views
0

Привет, на примере osgi webapp, созданного с помощью фреймворка Amdatu, можно найти в этом ShowCase, хотя реализация выполняется точно так же, как пример, каждый раз, когда экземпляр службы всегда имеет значение null. Кроме того, я прочитал документацию по адресу security module Amdatu, но не смог ее настроить, сделал ли кто-нибудь пошаговое руководство по использованию TokenProvider?Amdatu TokenProvider

Спасибо

ShowCase Link

Amdatu Security Doc

Когда выполнение дм notavail команды я получает:

[1] agenda.web.filters 
    javax.servlet.Filter(pattern=/*.*) unregistered 
    org.amdatu.security.tokenprovider.TokenProvider service required unavailable 
[15] org.amdatu.security.tokenprovider.impl 
    org.amdatu.security.tokenprovider.TokenProvider unregistered 
    org.amdatu.security.tokenprovider configuration required available 
    org.amdatu.security.tokenprovider.TokenStorageProvider service required unavailable 
    org.osgi.service.log.LogService service optional (not tracking) 
[16] org.amdatu.security.tokenstorage.mongo 
    org.amdatu.security.tokenprovider.TokenStorageProvider, org.amdatu.security.tokenstorage.mongo.ExpiredTokenPurger unregistered 
    org.amdatu.mongo.MongoDBService service required unavailable 
    org.osgi.service.log.LogService service optional (not tracking) 
    org.quartz.Job unregistered 
    org.amdatu.security.tokenstorage.mongo.ExpiredTokenPurger service required unavailable 
    org.osgi.service.log.LogService service optional (not tracking) 

Мой Активатор это:

import java.util.Properties; 

import javax.servlet.Filter; 

import org.amdatu.security.tokenprovider.TokenProvider; 
import org.apache.felix.dm.DependencyActivatorBase; 
import org.apache.felix.dm.DependencyManager; 
import org.osgi.framework.BundleContext; 
import org.osgi.service.log.LogService; 

import agenda.web.filters.teste.AdminLoginResource; 
import agenda.web.filters.teste.RedirectFilter; 
import agenda.web.filters.teste.SecurityFilter; 

public class Activator extends DependencyActivatorBase { 

    @Override 
    public void init(BundleContext arg0, DependencyManager dm) 
      throws Exception { 

     Properties properties = new Properties(); 
     properties.put("pattern", "/*.*"); 
     dm.add(createComponent() 
       .setInterface(Filter.class.getName(), properties) 
       .setImplementation(SecurityFilter.class) 
       .add(createServiceDependency().setService(TokenProvider.class).setRequired(true)) 
       .add(createServiceDependency() 
         .setService(LogService.class) 
         .setRequired(false))); 

    } 

    @Override 
    public void destroy(BundleContext arg0, DependencyManager arg1) 
      throws Exception { 
     // TODO Auto-generated method stub 

    } 

} 
+1

Вы используете Felix Dependency Manager? Не могли бы вы попробовать «dm notavail» в оболочке и опубликовать то, что видите? Мне интересно, правильно ли зарегистрирована услуга, например. что вы также установили TokenStorageProvider. –

+0

Привет, Пол, спасибо за внимание, я добавляю свой вопрос с данными, которые вы просите. – user2705861

ответ

1

Глядя на вывод DM, кажется, проблема в том, что MongoDbService недоступен. MongoDbService создается фабрикой управляемых сервисов, поэтому вам, вероятно, не хватает ее конфигурации. Необходимо настроить хотя бы «dbName», см. Больше документов здесь: http://amdatu.org/components/mongodb.html

+0

Еще раз спасибо за помощь. Недавно я купил книгу Modular Building Cloud Applications с OSGi, и он много помогает в моем обучении OSGi. Я нашел дополнительную информацию о том, почему я не смог подключиться к Mongo, используя MongoService в главе 4, объясняет, как получить параметры для PID, используя Service Manager Factory. Я хотел бы подчеркнуть большую работу, проделанную в книге, и я надеюсь когда-нибудь освоить эту удивительную технологию. – user2705861

 Смежные вопросы

  • Нет связанных вопросов^_^