簡體   English   中英

無法使用其他應用程序上下文重新初始化

[英]Cannot reinitialize with different application context

我正在使用Mule with Spring Integration來實現發送短信功能,下面是spring xml配置:

    <?xml version="1.0" encoding="UTF-8"?>

<mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
    xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.7.2"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:int="http://www.springframework.org/schema/integration"
    xmlns:oxm="http://www.springframework.org/schema/oxm" xmlns:int-http="http://www.springframework.org/schema/integration/http"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.springframework.org/schema/integration/http http://www.springframework.org/schema/integration/http/spring-integration-http.xsd
        http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
        http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-current.xsd">
<spring:beans>

    <context:component-scan base-package="com.scholes.sf.message" />

    <oxm:jaxb2-marshaller id="sfRequestMarshaller">
        <oxm:class-to-be-bound name="com.scholes.sf.message.bean.SFSendSMSRequest" />
        <oxm:class-to-be-bound name="com.scholes.sf.message.bean.SFVerifySMSRequest" />
    </oxm:jaxb2-marshaller>

    <!-- send SMS -->
    <int:channel id="sendOobSmsResponseJsonChannel" />

    <int:channel id="sendOobSmsResponseObjectChannelOOB" />

    <int:channel id="sendOobSmsResponseObjectChannelSF" />

    <int:channel id="sendOobSmsRequestChannel" />

    <int:channel id="sendOobSmsResponseXmlChannel" />
    <int:channel id="verifyOobSmsResponseXmlChannel" />

    <int:channel id="verifyOobSmsRequestChannel" />

    <int:channel id="verifyOobSmsResponseObjectChannelSF" />

    <int:channel id="verifyOobSmsResponseObjectChannelOOB" />

    <int:channel id="verifyOobSmsResponseJsonChannel" />

    <int:object-to-json-transformer
        input-channel="sendOobSmsResponseObjectChannelOOB" output-channel="sendOobSmsResponseJsonChannel">
    </int:object-to-json-transformer>

    <int:transformer input-channel="sendOobSmsResponseObjectChannelSF"
        output-channel="sendOobSmsResponseObjectChannelOOB" ref="oobSendSMSTransformer" />

    <int:transformer input-channel="sendOobSmsResponseXmlChannel"
        output-channel="sendOobSmsResponseObjectChannelSF" ref="sfSendResponseUnmarshaller" />

    <int:transformer input-channel="sendOobSmsRequestChannel"
        output-channel="sendOobSmsResponseXmlChannel" ref="sfSendSmsTransformer" />
    <spring:bean id="sfSendSmsTransformer" class="com.scholes.sf.message.transformer.SFSendSMSTransformer" />

    <int:channel id="sendOobSmsResponseObjectChannel" />

    <spring:bean id="sfSendResponseUnmarshaller"
        class="org.springframework.integration.xml.transformer.UnmarshallingTransformer">
        <spring:constructor-arg>
            <oxm:jaxb2-marshaller id="sfSendRequestMarshaller">
                <oxm:class-to-be-bound name="com.scholes.sf.message.bean.SFSendSMSResponse" />
            </oxm:jaxb2-marshaller>
        </spring:constructor-arg>
    </spring:bean>

    <spring:bean id="oobSendSMSTransformer" class="com.scholes.sf.message.transformer.OOBSendSMSTransformer" /> 

    <!-- verify SMS -->
    <int:transformer input-channel="verifyOobSmsRequestChannel"
        output-channel="verifyOobSmsResponseXmlChannel" ref="sfVerifySmsTransformer" />
    <spring:bean id="sfVerifySmsTransformer" class="com.scholes.sf.message.transformer.SFVerifySMSTransformer" />

    <int:channel id="verifyOobSmsResponseObjectChannel" />

    <spring:bean id="sfVerifyResponseUnmarshaller"
        class="org.springframework.integration.xml.transformer.UnmarshallingTransformer">
        <spring:constructor-arg>
            <oxm:jaxb2-marshaller id="sfVerifyRequestMarshaller">
                <oxm:class-to-be-bound name="com.scholes.sf.message.bean.SFVerifySMSResponse" />
            </oxm:jaxb2-marshaller>
        </spring:constructor-arg>
    </spring:bean>

    <int:transformer input-channel="verifyOobSmsResponseXmlChannel"
        output-channel="verifyOobSmsResponseObjectChannelSF" ref="sfVerifyResponseUnmarshaller" />

    <int:transformer input-channel="verifyOobSmsResponseObjectChannelSF"
        output-channel="verifyOobSmsResponseObjectChannelOOB" ref="oobVerifySMSTransformer" />
    <spring:bean id="oobVerifySMSTransformer" class="com.scholes.sf.message.transformer.OOBVerifySMSTransformer" />

    <int:object-to-json-transformer
        input-channel="verifyOobSmsResponseObjectChannelOOB" output-channel="verifyOobSmsResponseJsonChannel">
    </int:object-to-json-transformer>

    <context:property-placeholder location="sms/oob-config.properties"/>



    </spring:beans>
</mule>

似乎嘗試初始化第二個spring-integration上下文,因此出現以下錯誤:

WARN 2016-03-22 17:21:37,388 [main] org.mule.config.spring.MuleArtifactContext:上下文初始化期間遇到異常-取消刷新嘗試org.springframework.beans.factory.BeanCreationException:創建名稱為'integrationRequestMappingHandlerMapping的bean時出錯':bean的初始化失敗; 嵌套的異常是org.springframework.context.ApplicationContextException:無法使用不同的應用程序上下文重新初始化:當前一個是[org.mule.config.spring.MuleDomainContext@1825085:啟動日期[Cue Mar 22 17:21:29 CST 2016]; 上下文層次結構的根],傳入的是[org.mule.config.spring.MuleArtifactContext@14f3da4:啟動日期[2016年3月22日星期二17:21:33 CST]; 父:org.mule.config.spring.MuleDomainContext@1825085]在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:547)〜[彈簧豆-4.1.6.RELEASE.jar:4.1 .6.RELEASE] org.springframework上的org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)〜[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE] .beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:303)〜[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry .getSingleton(DefaultSingletonBeanRegistry.java:230)〜[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE] org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) 〜[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFacto ry.java:194)~ [spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE] org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:753)~ [mule -module-spring-config-3.7.2.jar:4.1.6.RELEASE]在org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)〜[spring-context-4.1.6.RELEASE。 jar:4.1.6.RELEASE]在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)〜[spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE]在org。 mule.config.spring.SpringRegistry.doInitialise(SpringRegistry.java:108)〜[mule-module-spring-config-3.7.2.jar:3.7.2]

任何大師都可以幫助分析這個問題? 如果我不包含這個xml,那就可以了。 如何讓SI和Spring一起工作?

所以這是根本原因

Cannot reinitialize with different application context: current one is
[org.mule.config.spring.MuleDomainContext@1825085: 
startup date [Tue Mar 22 17:21:29 CST 2016]; root of context hierarchy], 
passed-in one is [org.mule.config.spring.MuleArtifactContext@14f3da4: 
startup date [Tue Mar 22 17:21:33 CST 2016]; 
parent: org.mule.config.spring.MuleDomainContext@1825085] at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:547)

檢查您的XML名稱空間。 也許您只是復制錯誤地粘貼了它,然后您的上下文發生了沖突。

還要檢查您的integrationRequestMappingHandlerMapping bean定義。 碰巧它是由不同的上下文初始化的。 請附上它的定義。

發生這種情況是因為您將m子彈簧配置與SI混合使用,而SI的某些組件無法識別。 您可以嘗試分離SI配置,然后將其導入到Mule配置嗎? 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
  <mule xmlns=http://www.mulesoft.org/schema/mule/c... ....>
     <spring:beans>
        <spring:import resource="si-config.xml" />
     </spring:beans>

另外,請通過比較EE 3.7.2和所使用的SI所使用的spring框架版本來檢查您是否使用了正確的Spring Integration版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM