Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为“编写hello world”;热展开器/替换器“;?_Java_Osgi_Classloader_Osgi Bundle_Hotdeploy - Fatal编程技术网

Java 如何为“编写hello world”;热展开器/替换器“;?

Java 如何为“编写hello world”;热展开器/替换器“;?,java,osgi,classloader,osgi-bundle,hotdeploy,Java,Osgi,Classloader,Osgi Bundle,Hotdeploy,我是OSGI技术的新手。在工作程序中动态添加模块的想法对我来说非常有吸引力。我知道,OSGI在每个包中使用自己的类加载器。据我所知,由于 这是我们的“热部署”。但我误解了这是怎么回事 我想了解这项技术是如何工作的。因此,我想用hot.class文件替换编写自己的“热部署器” 例如,在我的脑海中诞生了以下想法: 使用2个线程编写应用程序: 第一个线程在永恒循环中输出一些消息(旧消息) 在第二个线程中,我们等待一段时间,然后替换输出旧消息的类的.class文件。现在,我们的thread1输出新消息。

我是
OSGI
技术的新手。在工作程序中动态添加模块的想法对我来说非常有吸引力。我知道,
OSGI
在每个包中使用自己的类加载器。据我所知,由于 这是我们的“热部署”。但我误解了这是怎么回事

我想了解这项技术是如何工作的。因此,我想用hot.class文件替换编写自己的“热部署器”

例如,在我的脑海中诞生了以下想法:

使用2个线程编写应用程序:

第一个线程在永恒循环中输出一些消息(
旧消息

在第二个线程中,我们等待一段时间,然后替换输出
旧消息的类的.class文件。现在,我们的thread1输出新消息。不一定在执行第二个线程后立即输出新消息。我知道我们不能解除阶级武装

我只是想看看是否有可能编写定制的“热部署器”

我在谷歌上找不到可以帮助我的信息

请帮我实现我的想法

p.S.

我真的没有足够的信息,我可以在哪里搜索信息和如何实现。 我已经阅读了所有的答案,但我没有意识到这一点

p.S.
我知道熟悉的问题在jsp和servlet中得到了解决。规范要求在不重新启动服务器的情况下热替换jsp。但我知道jsp最终会编译成.class文件

在OSGi中,您可以在运行时部署或更新捆绑包,而不是捆绑包中的类。可能您正在寻找JRebel提供给您的类似解决方案

您应该集中精力将bundle设计为简单的,而不是类替换。在这种情况下,bundle部署的速度就像您刚刚替换了一个类一样快(片刻)。此外,您应该以这样的方式设计您的体系结构:如果您更新了一个捆绑包,它将不会导致所有技术的重新启动


我建议,您应该阅读OSGi世界中其他人用来保持捆绑包惰性耦合的模式:,

我想学习如何驾驶汽车。。。。请给我解释一下如何建造我自己的燃气轮机发动机。是的,我知道汽车不使用燃气轮机发动机,但我还是想制造一台,因为我相信这将帮助我更好地理解驾驶

OSGi模块的重新加载在类级别上不起作用,它在捆绑包(模块)级别上起作用,捆绑包(模块)是类的聚合。它通过处理和重新创建整个类加载器来实现这一点


想要了解底层细节并没有什么错,但这通常应该在广泛理解之后进行。

看看这里:我认为在进一步讨论之前,您应该从基本了解java中类加载的工作原理开始。首先必须理解类加载器的概念。之后,您可以尝试编写自定义类加载器。线程与热部署无关,类加载器才是。@Alexandre Santos我读过alerady的文章it@eis我认为我与类加载的基本概念相似。我知道线程和热部署并没有联系,但这个实验可以显示热替换的结果。@gstackoverflow好吧,如果你知道如何替换线程中的类,你应该在你的问题中详细说明。或者,你是不是在找人来帮你弄明白怎么做,只是想找个点子?我可以简单地把它看成是一个班级的Bay雷,对不起,但是我不明白你的意思。在我的简单情况下,我可以把班看作是P.P.S.对不起,坏英语你会有很多包:)。如果您有无状态的解决方案/技术,那么将10-100个类放在一个捆绑包中并将它们重新部署在一起并不是什么大问题。这仍然是一个时刻。但是,每次部署类时都必须重新启动测试(不像热代码替换之后,调试跳回到函数的开头),我不想使用OSGI,我想编写自定义hello world实现。