gpt4 book ai didi

jakarta-ee - Java EE 应用程序架构中的单例与无状态 bean

转载 作者:行者123 更新时间:2023-12-04 01:09:21 25 4
gpt4 key购买 nike

我项目核心的一部分业务逻辑必须对链接数据执行搜索。目前,我已经使用这样的单例 session bean 实现了这部分(SPARQL 是一种基于链接数据构建的 RDF 模型的查询语言)。

@Singleton
@Startup
public class SparqlEngine {

@PostConstruct
private void init() {
// Initialiaze the model by connecting to the database
}

public ResultSet searchBySparql(String sparqlQuery) {
// Perform the search on the model which is stored in the database
}

@PreDestroy
private void cleanup() {
// Close database connection
}

}

这个 EJB 由另一个名为 SparqlEndpoint 的 EJB 暴露给我的应用程序的其他部分,它负责将 ResultSet 转换为更舒适的 SearchResult 对象,其中包含具有客户端指定语法的字符串形式的模型、结果总数和其他元数据。 SparqlEndpoint EJB 就是简单的@Stateless 并且有一个供客户端使用的本地接口(interface)。这些客户端包括 JSF 托管 bean 和几个将其公开为 SOAP 和 RESTful Web 服务的 EJB。

这是我想到的最合理的架构,但我需要知道我是否做对了。我应该像现在这样使用Singleton bean 来实现核心,还是Stateless session bean 更合适?数据库连接初始化通常至少需要几秒钟,注意它是 NoSQL 并且不支持事务可能会有用。我不打算向这个 bean 添加任何东西,例如 write 方法。其他 EJB 是无状态的是否正确?如果我想将我的索引引擎(它在数据库上执行写入)公开为另一个 EJB,我应该如何实现它?

提前致谢。

最佳答案

这很简单,使用单例,您可以更轻松地处理并发访问资源的问题。您可以使用容器管理的并发或 bean 管理的并发。

通过使用无状态 session bean,您将获得性能,EJB 容器创建一个包含这些无状态 bean 的许多实例的池,并在请求到来时将它们借给客户端。 IE。更适合多用户访问。

关于jakarta-ee - Java EE 应用程序架构中的单例与无状态 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12199738/

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