Spring 3.0 惰性初始化不支持 DefaultMessageListenerContainer?

2023-12-03

我已经为 JMS 设置了 spring 配置。一切工作正常,除了我似乎无法将其延迟加载(请注意下面代码中的 default-lazy-init true )。如果我从下面的配置中注释掉 jmsContainer(DMLC),延迟加载将按预期工作。否则,它将实例化 DMLC,进而创建队列和连接工厂。

我缺少什么?

jmsContext.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"
       default-lazy-init="true">

    <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
        <property name="environment">
            <props>
                <prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>
                <prop key="java.naming.provider.url">t3:localhost:7001</prop>
            </props>
        </property>
    </bean>

    <bean id="queue" class="org.springframework.jndi.JndiObjectFactoryBean"
          p:jndiTemplate-ref="jndiTemplate" p:jndiName="jms/queue"/>

    <bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean"
          p:jndiTemplate-ref="jndiTemplate" p:jndiName="jms/connectionfactory"/>

    <bean id="jmsDestinationResolver" class="org.springframework.jms.support.destination.JndiDestinationResolver"
        p:jndiTemplate-ref="jndiTemplate" p:cache="true" />

    <bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"
          p:autoStartup="false"
          p:destination-ref="queue"
          p:destinationResolver-ref="jmsDestinationResolver"
          p:connectionFactory-ref="connectionFactory"
          p:messageListener-ref="queueListener" />

    <bean id="queueListener" class="com.blah.QueueListener"/>


</beans>

我用来驱动它的测试 DummyTest.java:

package blah;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:jmsContext.xml")
public class DummyTest {

    @Test
    public void shouldDoSomething() {

    }

}

当jmsContainer被注释掉时,上面的测试就通过了。否则,我得到这个:

java.lang.IllegalStateException: Failed to load ApplicationContext
Caused by: org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'jmsContainer' defined in class path resource [com/blah/config/jmsContext.xml]: 
Cannot resolve reference to bean 'connectionFactory' while setting bean property 'connectionFactory'; 
nested exception is org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'connectionFactory' defined in class path resource [com/blah/config/jmsContext.xml]: 
Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: 
Exception in lookup.: `jms/connectionfactory' could not be found. 
[Root exception is weblogic.corba.cos.naming.NamingContextAnyPackage.NotFound: IDL:weblogic/corba/cos/naming/NamingContextAny/NotFound:1.0]

“connectionFactory”bean 被实例化为“jmsContainer”的依赖项,但失败了。注释掉“jmsContainer”后,“connectionFactory”不会被实例化。

jms 代码工作正常,但我故意重命名了 JNDI 名称,以便我可以看到事情何时开始。


好吧,这很晦涩,但是DefaultMessageListenerContainer实施Lifecycle接口,并且实现该接口的 bean 与上下文自己的生命周期相关联 - 当上下文启动时,Lifecycle- 实现bean被初始化并启动。这意味着您的惰性初始化配置基本上被忽略。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring 3.0 惰性初始化不支持 DefaultMessageListenerContainer? 的相关文章

随机推荐

  • DacFx DeploymentPlanExecutor OnExecute 未调用

    我正在尝试编写一个自定义程序DeploymentPlanExecutor使用 Microsoft 的 DacFx 3 0 但OnExecute 方法从未被调用 如果我使用相同的DeploymentPlanModifier反而 OnExecu
  • Flask 管理:向嵌入文档内的 SelectField 添加动态选择

    我在嵌入文档中有一个字符串字段 并将该字段覆盖为选定字段 覆盖后 我添加一个空的选择列表作为所选字段的参数 问题是 在表单访问中 我们尝试向所选字段添加一些动态选择 但由于某种原因 这失败了 我们如何添加一些动态选择 我需要使用某种预处理器
  • 百分比值的小数格式?

    我想要的是这样的 String Format Value 0 0 8526 其中 是该格式提供程序或我正在寻找的任何内容 应该结果 Value 85 26 我基本上需要它来进行 wpf 绑定 但首先让我们解决一般格式问题
  • Android“无法添加窗口 - 令牌 null 不适用于应用程序”异常

    当我尝试打开对话框时 出现以下 Android 异常 有人可以帮助我了解发生了什么事以及如何解决这个问题吗 android view WindowManager BadTokenException Unable to add window
  • 如何将每个换行符转换/替换为“
    ”?

    set tabstop 4 set shiftwidth 4 set nu set ai syntax on filetype plugin indent on 我试过这个 content gsub r n br 但是当我单击视图 显示按钮
  • 将日期字符串转换为不同的格式

    我有一个包含格式为日期的字符串YYYY MM DD 您建议我如何将其转换为格式DD MM YYYY以最好的方式 这就是我天真的做法 import java util public class test public static void
  • 在 grid.arrange 中保留或设置文本标签与绘图大小之间的比例

    我正在尝试安排使用创建的 2 个图ggplot2并希望这些图的大小为正方形 并且一个挨着另一个 旁边有共同的图例 以便图像非常适合纵向风格的页面 问题是当我使用grid arrange为了安排格罗布 标签和图例变得很小 而情节空间却很大 g
  • JFormattedTextField 格式化百分比数字?

    我想使用 JFormattedTextField 将浮点数格式化为百分比值 允许输入 0 到 100 转换为 0 0f 1 0f 始终显示百分号并不允许任何无效字符 现在我已经尝试了一些 NumberFormat getPercentIns
  • boost::asio::read 函数挂起

    如果有人可以帮助我 我无法理解 boost asio read 函数在 boost asio 中的工作原理 在 boost 的示例中 他们在接收消息之前声明缓冲区大小 这是没有意义的 我如何知道在读取消息之前要读取多少字节 我尝试了这段代码
  • CrawlSpider 与 Splash

    我的蜘蛛有一些问题 我使用 scrapy 的splash 来获取由JavaScript 生成的 下一页 的链接 从第一页下载信息后 我想从以下页面下载信息 但 LinkExtractor 功能无法正常工作 但看起来 start reques
  • 从 C# 中的枚举中获取 int 值

    我有一堂课叫Questions 复数 在这个类中有一个枚举叫做Question 单数 看起来像这样 public enum Question Role 2 ProjectFunding 3 TotalEmployee 4 NumberOfS
  • Python 3.+ 中另一个交替大小写的字符串

    我对 Python 很陌生 正在尝试了解如何操作字符串 我想要做的是通过删除空格并将大小写从上到下交替来更改字符串 即 这比我想象的要难 到 ThIsIsHaRdErThAnItHoUgHtItWoUlDbE 我拼凑了一个代码来删除空格 大
  • 使用 3 个纬度和经度点以及 3 个距离进行三边测量

    存在未知的目标位置 纬度和经度坐标 我有 3 个纬度和经度坐标对 每对坐标到目标位置的距离 以公里为单位 如何计算目标位置的坐标 例如 假设我有以下数据点 37 418436 121 963477 0 265710701754km 37 4
  • 按钮 Onclick 在表单内不起作用

    Good Day 我正在使用 ASP NET Web 表单 其中我将以下按钮包装在表单标签内
  • 防止 jQueryUI 可排序中的重复项

    小提琴示例 我试图防止重复的项目被拖入 sort2 from sort通过使用条件来检查是否存在基于标题属性的相同项目 sort2 如果有重复的 它会在添加新的之前删除旧的 sort2 sortable receive function e
  • 为什么使用 REST @Produces 注解

    所以我知道您正在指定类型 但为什么呢 在什么条件下这很重要 例如 如果我有以下方法 并且我注释掉了 Produces 注释 它仍然返回 JSON GET Path json Produces MediaType APPLICATION JS
  • C# 中词法分析器的示例

    我想使用一些内置的词法分析器和解析器 我需要一些示例或样本来演示其用法 有人用过 C 中的词法分析器吗 任何人都可以分享示例和代码如何使用它 我没有找到很多 ANTLR 和 lex 但我找不到任何示例或教程 请告诉我是否有人使用过此类东西
  • 无法从 Firebase 控制台发送通知

    This是一些firebase教程 我正在 Firebase 中注册应用程序 获取 google services json 文件 将其粘贴到应用程序文件中 如教程中所示 还获得了令牌 但是当我尝试从控制台发送通知时 状态失败 我猜是 Mi
  • 四舍五入到给定基数的最接近的整数次方

    我正在尝试将一个数字四舍五入到另一个数字的下一个最小幂 我并不特别注意它的旋转方向 但如果可能的话 我更喜欢向下 号码x我四舍五入将满足 x gt 0 并且通常适合在范围内0 lt x lt 1 只有极少数情况下才会高于 1 更一般地说 我
  • Spring 3.0 惰性初始化不支持 DefaultMessageListenerContainer?

    我已经为 JMS 设置了 spring 配置 一切工作正常 除了我似乎无法将其延迟加载 请注意下面代码中的 default lazy init true 如果我从下面的配置中注释掉 jmsContainer DMLC 延迟加载将按预期工作