这是我观察到的一个有趣的想法,它让我困惑了一段时间。
我使用的是Glassfish 3.1.2.2,我在其上部署了多个OSGi包。
当我想用新版本/修订替换包时,我必须卸载
然后安装
包。
通常情况下,我假设Glassfish可以重用不再存在的旧捆绑ID,但它只是继续。例如,让我们假设Glassfish包的ID为100,而我自己的包开始从101到200。
当我卸载旧包并安装新包时,我假设包ID在101-200范围内是可重用的。
相反,我的新包有他们的ID从201到300。
我是这样卸载它们的:
uninstall <bundle id>
并按以下方式安装:
install file:<path-to-bundle>
如何解决这个问题,使Glassfish重用旧的捆绑包ID?
编辑:
我在glassfish3\glassfish\domains\domain1\osgi-cache\felix
中找到了一个名为bundle.id
的文件夹,其中包含一个名为bundle0
的文件,该文件只有一个数字,看起来像是一个DB序列,注意到使用的最后一个包id。
为了让我用以下包安装手动更改起始包id,我必须按照以下顺序执行以下操作:
glassfish3\glassfish\domains\domain1\osgi-cache\felix
bundle
文件夹
bundle.id
文件中的数字更改为一些合理的数字bundle.id
文件您可以想象,我不希望每次要做发布/升级时都这样做。Glassfish可以自己完成吗?还是需要创建一个脚本来完成这个任务?
为什么要保留相同的ID?正如BJ所提到的,你不应该这样做,所以你可能用错误的方式处理另一个问题。
OSGi规范要求bundle ID不能重用。注意:您可以在原地更新一个包,而不是卸载/安装。更新时,包id将被保留。
我已经将intelliJ设置为“压缩空的中间包” 当我做重构时- 我确信曾经有一种“重命名包”的方法,而不仅仅是目录,这种机制改变了吗?我真的需要重命名我的包。 请不要将此标记为重复,因为我看到的其他地方被问到这个问题,解决方案是首先“压缩空中间包” - 我已经这样做了......我仍然无法让它工作。
闭包是 JavaScript 一个非常重要的特性,这意味着当前作用域总是能够访问外部作用域中的变量。 因为 函数 是 JavaScript 中唯一拥有自身作用域的结构,因此闭包的创建依赖于函数。 模拟私有变量 function Counter(start) { var count = start; return { increment: function() {
我刚刚将我的web应用程序从JSF托管beans迁移到CDI托管beans,我特别希望Tomcat或TomEE Plus成为首选的容器,因为我听说“OpenWebBeans”非常棒。在部署、配置和测试TomEE 1.5/CDI managed beans web应用程序之后,整个页面刷新要比Glassfish 3.1慢得多。2.2/MyFaces 2.1。9/JSF托管bean。 与玻璃鱼3.1。
我正在寻找一种解决方案,可以将包含iso基本日期格式的字符串(如20190330)转换为格式化日期,如2019-03-30(欧元格式)或2019年3月30日(英国格式)或2019年3月30日(美国格式)。格式取决于用户选择的格式。库<代码>java。时间LocalDate和java。时间总体安排DateTimeFormatter似乎提供了解决方案的可能性,但我发现这些库的文档不连贯且令人困惑,我不
我有相当多的包是过时的,我想更新。我尝试运行npm update:文档中所述的npm update,更新花了很长时间,最后失败了。我又尝试了几次,我将堆栈大小设置为无限,等等,但总是需要几个小时,最后失败了。 我尝试用--depth 999(不是9999)更新一个包,但也失败了。 是否有任何推荐的方法来更新所有有效的软件包? 然后我得到了一个堆超出的异常: 我将堆栈大小设置为无限,并降低了深度,但