В контексте приложения Eclipse RCP я решил использовать службы OSGi для предоставления «Интерфейсов» из плагина (то есть пакета).
В одном из моих плагинов у меня есть следующий интерфейс Parser:
public interface Parser {
public void start(File file);
public boolean hasNext();
public Object next();
}
Потребительские плагины будут использовать этот интерфейс для разбора файлов. Поскольку несколько разборов могут выполняться одновременно, а реализация этого интерфейса потребует нескольких закрытых полей «состояние», каждый потребитель этой службы должен использовать выделенный экземпляр службы.
В этом случае решение по умолчанию, предоставленное руководствами по OSGi, состоящим в регистрации ОДНОГО экземпляра службы в методе запуска пакета анализатора, не работает. Как лучше всего справиться с таким решением?
Я могу создать сервис ParserFactory одним уникальным методом:
public Parser create(File file);
??
Любой комментарий приветствуется,