我正在开发一个JavaEE web应用程序,它可以从不同的来源获取数据。数据将被获取并保存在数据库中,以便以后进行处理和报告。我从一个覆盖特定数据源的默认数据提供程序开始,但希望以一种可以为不同数据源编写数据提供者/数据提供程序插件的方式来设计应用程序体系结构。
服务提供者可以从核心应用程序中独立实现,并且可以打包在单独的jars中。一旦放到web应用程序类路径中,提供者实现将被触发数据获取作业的应用程序核心识别为服务提供者。
我正在寻找一个标准的方式来实现这个SPI或扩展点,但它不会膨胀我的应用程序的代码。
我想到了"OSGI扩展点“,但这更适合于rcp平台应用程序,而我的扩展点是一个web应用程序。所以我暂时排除了。
我的第二个想法是将预定义的提供者接口组合起来,然后使用自定义的" provider“注释来标记实现类(服务提供者)。
您可以推荐什么样的机制/方法/框架来解决这个体系结构问题?
提前感谢&干杯,迈克尔
发布于 2014-06-22 18:09:59
我会用一个事件观察者。在应用程序启动期间,引发一个DiscoverDataProviders事件,该事件具有一个registerDataProvider(...)方法。扩展jars可以观察事件并注册自己。
请参阅http://docs.oracle.com/javaee/6/api/javax/enterprise/event/Observes.html
https://stackoverflow.com/questions/24354150
复制相似问题