当前位置: 首页 > 知识库问答 >
问题:

我可以用lazy init使用RmiServiceExporter吗?

云瑞
2023-03-14

我有一个遗留项目,在多个上下文中有很多bean。bean之间似乎存在循环依赖关系,这就是为什么大多数上下文都将默认的lazy init设置为true。

我需要通过RMI导出一些bean,因此我在上下文中有以下声明:

<bean id="partnershipPluginService" class="com.otr.sufd.services.security.PartnershipPluginServiceImpl" lazy-init="false">
    <property name="selectionService" ref="selectionService"/>
    <property name="editObjectService" ref="editObjectService"/>
    <property name="securityFieldsService" ref="securityFieldsService"/>
    <property name="cryptoSettingsService" ref="cryptoSettingsService"/>
    <property name="authenticationService" ref="systemAuthenticationService"/>
    <property name="configurationManager" ref="serverConfigurationManager"/>
    <property name="lifeCycleDefService" ref="lifeCycleDefService"/>
</bean>

<bean class="org.springframework.remoting.rmi.RmiServiceExporter" depends-on="partnershipPluginService" lazy-init="false">
    <property name="registryPort" value="${rmi.port}"/>
    <property name="serviceName" value="partnershipPluginService"/>
    <property name="serviceInterface" value="com.otr.security.synchronization.service.PartnershipPluginService"/>
    <property name="service" ref="partnershipPluginService"/>
</bean>

这两个bean都声明为不懒惰。我认为,至少有一个RmiServiceExitter声明为非懒惰足以具有相同的行为。在这种配置中有一个很大的缺点。它不起作用。我在上下文创建过程中有异常

组织。springframework。豆。工厂BeanCreationException:创建名为“partnershipSystemPluginService”的bean时出错,该bean在类路径资源[安全/服务器安全服务.xml]中定义:设置bean属性“cryptoSettingsService”时无法解析对bean“cryptoSettingsService”的引用;嵌套异常为org。springframework。豆。工厂BeanCurrentlyInCreationException:创建名为“cryptoSettingsService”的bean时出错:名为“cryptoSettingsService”的bean已作为循环引用的一部分注入其原始版本中的其他bean[JinCryptoservice,JinCryptoserverService],但最终已被包装。这意味着其他bean不使用bean的最终版本。这通常是过度渴望类型匹配的结果-例如,考虑在关闭“allowEagerInit”标志的情况下使用“getBeanNamesOfType”。

乍一看,JinCryptoservice和JinCryptoserverService之间没有循环依赖关系。如果我让RmiServiceExporter和partnershipPluginService都像其他人一样懒惰,那么上下文就会毫无例外地创建,但RMI不起作用。那么,有什么方法可以让上下文和RMI工作吗?谢谢你帮助我,浪费了你的时间。

共有1个答案

松雅昶
2023-03-14

所以,我找到了一个解决方案。我查找了上下文的邻域,得到了一些带有bean的上下文,比如RmiServiceExporter。这种上下文并不懒惰,而是在懒惰的上下文之后开始使用bean,比如partnershipPluginService。我将RmiServiceExporter替换到新的上下文中,问题就解决了。

如果你愿意站在我的立场上,请从不同的角度看一下这个问题,你就会找到答案。

感谢所有读了这篇文章,试图帮助我的人。

 类似资料:
  • 问题内容: 为了在Web上实时传输数据,我计划使用Redis作为我的Cache数据层,其中数据是瞬时的。Celery是队列管理器,RabbitMQ是从Redis排队进入Tornado层的代理。然后,该层通过websockets流到前端。 我从未在网上找到Redis + RabbitMQ组合。有人可以为它提供可靠的解决方案指南。问题是这样的整合是否可能和明智的? 问题答案: 我现在非常成功地一起使用

  • 问题内容: 有什么方法可以将Socket.IO http://socket.io/与Django 一起使用? 问题答案: 你当然可以! Django本身并不异步,因此你必须与普通的django服务器并行使用Socket.IO服务器,node.js始终不是一个不错的选择,但也存在使用纯Python编写的其他服务器。

  • 我将使用PWA和React开发一个跨平台的移动应用程序,由于我对这些技术不熟悉,我想知道什么是使其具有响应性的最佳和最简单的方法。 我知道可以使用媒体查询。 https://developers.google.com/web/fundamentals/design-and-ux/responsive/ 但与Bootstrap相比,似乎还有更多的工作要做,但不幸的是,我找不到任何指导我在同一项目中使

  • 根据Mozilla的说法,iOS上没有任何浏览器支持跨源开放策略,这是启用ShareDarrayBuffer的安全要求之一。这是否意味着我不能将SharedArrayBuffer用于iOS平台上的任何Web应用程序?

  • 我有一个实体,它有一个包含更多字段的可选子实体。子实体同样有一个元素集合。 这在Hibernate中通常是不可能的,还是我遗漏了什么? 错误消息为:

  • 我正在使用BeautifulSoup刮取一个URL,并使用以下代码查找标记,其类为: 现在,在上面的代码中,我们可以使用获取标记和与它们相关的信息,但我想使用XPath。是否可以将XPath与BeautifulSoup一起使用?如果可能,请给我提供示例代码。