Java “不同配置/运行”;“模式”;在OSGi下?

Java “不同配置/运行”;“模式”;在OSGi下?,java,configuration,osgi,Java,Configuration,Osgi,我有一个用OSGi构建的Java应用程序,我想在不同的模式下运行,比如远程和本地数据源。我希望能够构建和部署单个版本,以便我可以在远程模式下将应用程序作为服务运行,然后停止服务并在本地模式下尝试不同的事情 我正在使用声明式服务 有没有办法做到这一点 # app -remote Starting app in remote mode Disabling com.example.data.local.FileStoreDao Enabling com.example.data.remote.MySq

我有一个用OSGi构建的Java应用程序,我想在不同的模式下运行,比如远程和本地数据源。我希望能够构建和部署单个版本,以便我可以在远程模式下将应用程序作为服务运行,然后停止服务并在本地模式下尝试不同的事情

我正在使用声明式服务

有没有办法做到这一点

# app -remote
Starting app in remote mode
Disabling com.example.data.local.FileStoreDao
Enabling com.example.data.remote.MySqlDao
...
反过来说:

# app -local
Starting app in localmode
Disabling com.example.data.remote.MySqlDao
Enabling com.example.data.local.FileStoreDao
...

或者类似的东西。

不确定您使用的是什么框架,但在Equinox中,您可以通过命令行开关传递不同的配置文件:


您可以有两个配置文件,并在OSGi引导程序周围有一个包装器(java或批处理文件?)来选择适当的配置文件。我曾经做过类似的事情,但在我的例子中,我最终使用了两个具有不同插件的发行版,因为它更简单,这就是我所需要的。希望这有助于

不确定您使用的是什么框架,但在Equinox中,您可以通过命令行开关传递不同的配置文件:

您可以有两个配置文件,并在OSGi引导程序周围有一个包装器(java或批处理文件?)来选择适当的配置文件。我曾经做过类似的事情,但在我的例子中,我最终使用了两个具有不同插件的发行版,因为它更简单,这就是我所需要的。希望这有助于引用Richard Hall的话:

应用程序的配置==已安装的捆绑包集

最好和最可维护的解决方案是为每个运行时“模式”安装一组(稍微)不同的捆绑包。例如,大多数bundle都是相同的,但是您可以部署MySqlDao bundle或FileStoreDao。使用允许您轻松设置和启动不同捆绑包组合的工具或启动器至关重要

如果您确实希望在不更改捆绑包集的情况下执行此操作,则可以将MySqlDao和FileStoreDao打包为一个捆绑包,并使用DS根据来自config Admin的配置数据启用/禁用其中一个。

引用Richard Hall的话:

应用程序的配置==已安装的捆绑包集

最好和最可维护的解决方案是为每个运行时“模式”安装一组(稍微)不同的捆绑包。例如,大多数bundle都是相同的,但是您可以部署MySqlDao bundle或FileStoreDao。使用允许您轻松设置和启动不同捆绑包组合的工具或启动器至关重要


如果您真的希望在不更改捆绑包集的情况下执行此操作,那么可以将MySqlDao和FileStoreDao打包成一个捆绑包,并使用DS根据来自config Admin的配置数据启用/禁用其中一个。

Ah,很有趣。是的,我们在春分点。使用mysql配置目录执行
app-configurationMySQL
是一个非常酷的选择。我现在需要为这个设计一个版本。啊,很有趣。是的,我们在春分点。使用mysql配置目录执行
app-configurationMySQL
是一个非常酷的选择。我现在需要找出一个构建,这是有意义的。我将使用Equinox解决方案为每种模式安装不同的捆绑包集。这很有意义。我将使用Equinox解决方案为每个模式安装不同的捆绑包集。