Създавам J2EE приложение, в което искам да разреша плъгини. Доста съм убеден в добротата на IoC рамката и така приложението ще има такава за управление на услуги.
Сега искам да разреша добавянето на добавки като обикновен JAR, пуснат в classpath + може би прост конфигурационен файл, който да редактирате, за да ги активирате, в никакъв случай нещо, което прилича на Spring XML конфигурационни файлове.
По-голямата част от архитектурата на плъгина ще се основава на шаблони на стратегия/тръбопровод/верига от команди: например най-добрият плъгин за действие се избира от стратегия, няколко плъгина добавят филтриращи действия към потребителски вход благодарение на конвейер и така един.
И така, искам да мога да:
- дефиниране на сервизни интерфейси в основното приложение,
- настройка на основна реализация за разширими услуги с избрания модел в основното приложение,
- оставете приставките на трети страни да се регистрират в тези кукички.
Първите 2 точки са доста лесни, със или без IoC. Последният изглежда по-сложен без поддръжка на ниво контейнер на IoC или поне има много работа за вършене (как да управляваме откриването на класова пътека/услуга, как да управляваме поръчките за услуги в конвейера, когато промяна на контекста (нови плъгини), как да управлявате отмяната на услугата и т.н.).
Знам, че Tapestry5 е страхотен в това отношение[1], но не мога да намеря нищо наистина подходящо за Spring и Guice. И моята компания е по-скоро String/Guice, отколкото T5 (е, ако мога да покажа, че това е най-доброто решение...)
Така че се чудя:
- ако съм пропуснал някаква очевидна документация;
- ако моите изисквания са толкова специални;
- ако IoC контейнер не е правилният инструмент за това и трябва да търся OSGi или нещо друго.
Благодаря за всякакви съвети!
[1] http://tapestry.apache.org/tapestry5.1/tapestry-ioc/configuration.html