不同的配置/运行“模式”可以是不同的。在 OSGi 下?

发布于 2024-12-15 04:25:06 字数 512 浏览 2 评论 0 原文

我有一个使用 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
...

或者类似的东西。

I have a Java application built with OSGi that I want to run in different modes, say a remote & local data source. I would like to be able to build and deploy a single version so that I could run the app as a service in remote mode and then stop the service & try different things in local mode.

I am using declarative services.

Would there be a way to do this?

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

And conversely:

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

Or something similar.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

假情假意假温柔 2024-12-22 04:25:06

引用理查德·霍尔的话:

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

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

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

To quote Richard Hall:

The configuration of your application == The set of installed bundles.

The best and most maintainable solution will be to install a (slightly) different set of bundles for each of your runtime "modes". So for example, most of the bundles would be the same but you deploy either the MySqlDao bundle or the FileStoreDao. Using a tool or launcher that allows to you easily setup and launch different combinations of bundles will be critical.

If you really want to do this without changing the set of bundles, you could package both MySqlDao and FileStoreDao into a single bundle and use DS to enable/disable one or the other based on config data coming from Config Admin.

思慕 2024-12-22 04:25:06

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

http://www.eclipse.org/equinox/documents/quickstart-framework.php

你可以有两个配置文件,并有一个包装器(java或批处理文件?) OSGi 引导程序选择正确的配置文件。我已经做过类似的事情,但就我而言,我最终选择了两个带有不同插件的发行版,因为它更简单,而且这就是我所需要的。希望这有帮助

Not sure what framework you're using, but in Equinox, you can pass a different config file with a command line swich:

http://www.eclipse.org/equinox/documents/quickstart-framework.php

You could have two config files, and have a wrapper (java or batch file?) around the OSGi bootstrapper to select the proper config file. I have done something like this, but in my case I ended up going with two distros with different plugins, as it was simpler and it was all that I needed. Hope this helps

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文