복붙노트

[SPRING] WSO2 ESB 4.6.0의 Spring Mediator에 대한 실제 예제

SPRING

WSO2 ESB 4.6.0의 Spring Mediator에 대한 실제 예제

안녕하세요, WSO2 ESB 4.6.0의 Spring Mediator에서이 튜토리얼을 사용하고 있습니다.

오류가 다음과 같이 표시됩니다.

ERROR - SpringMediator Cannot look up Spring configuration conf/sample/resources/spring/springsample.xml

ERROR - SpringMediatorCannot reference application context with key : conf/sample/resources/spring/springsample.xml

이 문제를 해결하는 방법을 설명해 주시겠습니까?

해결법

  1. ==============================

    1.나는 이것을 아래와 같이해야한다.

    나는 이것을 아래와 같이해야한다.

    클래스는 AbstractMediator를 확장하고 다음과 같이 mediate () 메서드를 재정의해야합니다.

    package com.test.spring.mediator.workingexampleonspringmediator;
    
    import org.apache.synapse.MessageContext;
    import org.apache.synapse.mediators.AbstractMediator;
    
    public class HelloWorld extends AbstractMediator{
    
               private String message;   
           public void setMessage(String message){
              this.message  = message;
           }
    
           public boolean mediate(MessageContext arg0) {
    
              System.out.println("HELLO "+message);
              return true;
        }
    }
    

    그런 다음 항아리를 [ESBHOME] / repository / components / lib 폴더에 놓습니다.

    매개 메소드에서 HELLO 'arg'와 같은 인수를 사용하여 메시지를 인쇄합니다.

    그리고 다음 파일을 레지스트리 (/_system/config/repository/spring/springtest.xml)에 추가했습니다.

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC  "-//SPRING//DTD BEAN//EN"
            "http://www.springframework.org/dtd/spring-beans.dtd"> 
    <beans>     
       <bean id="springtest" class="com.test.spring.mediator.workingexampleonspringmediator.HelloWorld"  singleton="false">
       <property name="message"><value>ISURU</value></property>
       </bean>
    </beans>
    

    내 프록시는 다음과 같습니다.

    <proxy xmlns="http://ws.apache.org/ns/synapse" name="testSpring" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
       <target>
          <inSequence>
             <log level="full">
                <property name="START" value="__________________________"/>
             </log>
             <spring:spring xmlns:spring="http://ws.apache.org/ns/synapse" bean="springtest" key="conf:/repository/spring/springtest.xml"/>
             <log level="full">
                <property name="END" value="______________________"/>
             </log>
          </inSequence>
       </target>
       <description></description>
    </proxy>
    

    프록시에서 bean = [springtest.xml의 bean id]와 class = 클래스의 정규화 된 이름을 볼 수 있습니다.

    내 ESB 터미널에서 springtest.xml에 주어진 속성 값을 다음과 같이 넣었습니다.

    [2013-11-07 17:38:30,654]  INFO - LogMediator To: /services/testSpring.testSpringHttpSoap12Endpoint, WSAction: urn:mediate, SOAPAction: urn:mediate, MessageID: urn:uuid:bcae82e9-4027-43c5-bd7a-cbfa885aaf33, Direction: request, START = __________________________, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body/></soapenv:Envelope>
    HELLO ISURU
    [2013-11-07 17:38:30,692]  INFO - LogMediator To: /services/testSpring.testSpringHttpSoap12Endpoint, WSAction: urn:mediate, SOAPAction: urn:mediate, MessageID: urn:uuid:bcae82e9-4027-43c5-bd7a-cbfa885aaf33, Direction: request, END = ______________________, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body/></soapenv:Envelope>
    

    jar를 repository / components / lib에 넣은 후에 ESB를 다시 시작해야합니다

  2. ==============================

    2.이들은 Isuru가 위에 설명 된대로 봄 중재자를위한 단계입니다

    이들은 Isuru가 위에 설명 된대로 봄 중재자를위한 단계입니다

    거기에, Bean을 "springtest"(xml 파일 내의 mediator 클래스에 대해 정의 된 bean id)로 추가하십시오.

    4 단계에 따라 저장된 구성 레지스트리 파일의 위치로 키를 선택하십시오.

    예 : 해당 springtest.xml 파일을 "_system / config / repository /"경로에 저장 한 경우 "/_system/config/repository/springtest.xml"로 키를 선택하십시오.

    노트 :

  3. ==============================

    3.이는 esb가 경로 repository / conf / sample / resources에서 springsample.xml 파일을 찾았 기 때문입니다

    이는 esb가 경로 repository / conf / sample / resources에서 springsample.xml 파일을 찾았 기 때문입니다

    <parameter name="root">file:repository/conf/sample/resources/</parameter>
    

    그러나 springsample.xml 파일 위치는 repository / samples / resources /에 있습니다. 따라서 다음과 같이 수정해야합니다.

    <parameter name="root">file:repository/samples/resources/</parameter>
    

    설명서에서 구성이 올바르지 않습니다. 설명서에서 언급 한 것처럼 wso2esb-samples-sn 470 명령으로 esb를 시작하면 esb는 repository / samples / synapse_sample_470.xml에 파일을로드합니다.이 파일의 위의 매개 변수 가 올바르게 구성되었습니다.

    희망이 귀하의 문제를 해결할 것입니다 :)

    업데이트 :

    귀하의 의견에 따르면, 직접 샘플 봄 예제를 사용하여, 이것은 액세스하려고하는 파일의 권한으로 인해 발생하거나 파일 경로 오류 때문일 수 있습니다. 따라서 절대 파일 URL을 사용해보십시오.

  4. ==============================

    4.메시지를 보낼 때 유일한 오류 메시지는이 메시지입니다.

    메시지를 보낼 때 유일한 오류 메시지는이 메시지입니다.

    ERROR - SpringMediator No bean named 'springtest' is defined
    

    그래서 그것은 설정 파일이 발견되었음을 의미합니다. 하지만 내부 콩의 인스턴스에 대해, 나는 어떤 명백한 오류를 볼 수 없습니다. jar 파일은 components / lib에 있으며 dropins 폴더에서도 jar 파일을 볼 수 있습니다.

    :/

  5. from https://stackoverflow.com/questions/19762090/working-example-on-spring-mediator-in-wso2-esb-4-6-0 by cc-by-sa and MIT license