在我的Spring項目,我有一個JMS消息監聽器,由Spring管理:如何在Framework中調用Spring MVC控制器?
<bean id="jmsFactory" class="org.apache.activemq.ActiveMQConnectionFactory" p:brokerURL="tcp://localhost:61616"/>
<bean id="simpleExampleListener" class="my.package.ExampleListener" />
<jms:listener-container container-type="default" connection-factory="jmsFactory" acknowledge="auto" concurrency="1-3">
<jms:listener destination="TEST.FOO" ref="simpleExampleListener" method="onMessage"/>
</jms:listener-container>
在一個特定的消息,我需要調用一個Spring MVC控制器,它是在請求範圍內(實際上的目標是調用一個服務,該服務也是請求範圍的,並由Controller調用)。所以我不能直接從監聽器那裏做,因爲Spring根據需要管理它們,它們不是請求範圍的限制(因爲我無法通過@Autowire
或ApplicationContext
訪問控制器)。其中一個解決方案可能是一個HTTP調用,其餘的模板爲URL,由我的控制器進行映射。但是,我認爲,它的一種開銷,所以也許有其他方法可以避免HTTP協議開銷並在Spring MVC框架內調用Controller?
你可以使用原型範圍,而不是請求範圍? – skaffman
如果您確實至少使用了與Web應用程序代碼鬆散耦合的Http調用。直接打電話給控制器是非常醜陋的。 –
你能解釋一下**爲什麼你想從消息監聽器調用一個控制器?我想不出任何用例... –