gpt4 book ai didi

java - OSGi 类似请求的服务? (多个实例)

转载 作者:行者123 更新时间:2023-12-01 14:53:50 26 4
gpt4 key购买 nike

所以我认为解释它的最好方法是举例。

发布服务X时,需要注册它的一个实例。同一个实例可以满足许多客户的需求。

我想知道是否有一种方法可以按需实例化它的许多实例。就像客户端 c1 请求实例 x1 下的服务 X 一样,客户端 c2 与实例 x2 通信,处理完后每个实例都被销毁。

因为它适用于网络服务器。每个客户端方法调用都是一个请求,响应后该请求就会被销毁。

我看到了一些有关多个引用文献的答案,但我不太确定它们是否与我的问题相同。

谢谢

最佳答案

几年前,我尝试在 RFC 正版服务工厂中以通用方式回答这个问题。经过深思熟虑,我得出的结论是解决方案非常简单。只需注册一个工厂服务即可。因此,如果您希望能够创建 Foo,只需注册一个 FooFactory 服务...这使您可以拥有参数、类型安全等所有好处。如果想要通用解决方案,只需创建一个工厂类型:

public interface Factory<T> { T create(); }

@Component
public class FooFactoryImpl implements Factory<Foo> {
public Foo create() { ... }
}

但是,我发现最好的方法就是创建一个 FooFactory,因为这可以始终为您提供类型安全性,因为泛型类型往往需要强制转换。它还为您提供可扩展性、参数,以及最重要的是正确的语义文档。

我所知道的所有其他解决方案往往会受到大量类型转换和绕过类型系统的影响。声明式服务中的工厂组件就是一个例子。我认为OSGi服务注册中心的职责就是给你一个句柄。与所有技术一样,添加额外的语义非常诱人,因为它通常很接近。我认为这种情况交给 Java 比交给 OSGi 更好。把事情简单化。

关于java - OSGi 类似请求的服务? (多个实例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14509476/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com