2014-04-07 4 views
0

실행할 기본 메소드가있는 간단한 Java 프로그램이 있습니다.mule esb에서 주 프로그램에 인수를 전달합니다.

java -classpath C;/test/sample.jar -mainClass com.test.SampleTest 

그것은 실행하고 성공적으로 실행 :

class Main{ 
    public static void main(String[] args) { 
     initializeBaseClass(); 
} 

과 같이 위의 프로그램 실행 : 아래 그림과 같이 실행하는 동안 나는 몇 가지 인수를 전달해야합니다.

이제 Mule esb에서 동일한 항목을 실행해야합니다. 이것을 호출하고 mule esb에서 실행하는 가장 좋은 방법은?

자바 구성 요소를 추가하고 속성 키/값을 추가하려고했지만 작동하지 않습니다. 어떻게 노새에서 논증을 전달합니까? 스프링 또는 스크립팅 언어 또는 MEL을 사용하여 더 좋은 방법이 있습니까?

+0

이것은 [이 질문에] 중복 된 것 같습니다 (http://stackoverflow.com/questions/14769142/how-to-invoke-a-java- 컴포넌트 노멀) –

답변

1
<spring:beans> 
     <spring:bean id="transmission" class="com.test.InvokeMain"/> 
    </spring:beans> 
    <flow name="test" ... 
     <set-payload value="-mainclass com.test.Abcd -driver org.hsqldb.jdbc.JDBCDriver/> 
     <invoke object-ref="transmission" method="invoke" methodArgumentTypes="java.lang.String" methodArguments="#[payload]" name="transmissionAPI"/> 
    </flow> 

와 주요 클래스는 다음과 같습니다

import com.test.Main; 
public class InvokeTransmission { 

    public void invoke(String params){ 
     String[] res = params.split("\\s+"); 
     Main.main(res); 
    } 
} 
0

왜 당신은 예를 들어 ... 노새 스튜디오에서 입력을 할 뮬 표준 입출력 구성 요소 IN을 사용하지 마십시오 - 뮬 흐름 : -

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

<mule xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:mulexml="http://www.mulesoft.org/schema/mule/xml" xmlns:jdbc-ee="http://www.mulesoft.org/schema/mule/ee/jdbc" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns:stdio="http://www.mulesoft.org/schema/mule/stdio" xmlns:jdbc="http://www.mulesoft.org/schema/mule/jdbc" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" xmlns:core="http://www.mulesoft.org/schema/mule/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="EE-3.4.2" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd 
http://www.mulesoft.org/schema/mule/stdio http://www.mulesoft.org/schema/mule/stdio/current/mule-stdio.xsd 
http://www.mulesoft.org/schema/mule/ee/jdbc http://www.mulesoft.org/schema/mule/ee/jdbc/current/mule-jdbc-ee.xsd 
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.mulesoft.org/schema/mule/xml http://www.mulesoft.org/schema/mule/xml/current/mule-xml.xsd 
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd"> 
    <stdio:connector name="stdio" messageDelayTime="1000" promptMessage="Enter a parameter :" doc:name="STDIO" validateConnections="true"></stdio:connector> 


    <flow name="InputFlow" doc:name="InputFlow"> 
     <stdio:inbound-endpoint system="IN" responseTimeout="10000" connector-ref="stdio" doc:name="STDIO"></stdio:inbound-endpoint> 
     <custom-transformer class="InputProccesser" doc:name="Java"/> 
     <logger message="Payload is :- #[message.payload]" level="INFO" doc:name="Logger"/> 

    </flow> 

</mule> 
이제

우리는 InputProccesser가 처리 할 자바 클래스 흐름에 <custom-transformer class="InputProccesser" doc:name="Java"/>을 사용했다 입력 메시지 ... 이제

, 당신은 InputProccesser라는 이름의 자바 클래스를 생성 : - 이제

import java.util.List; 
import java.util.Map; 

import org.mule.api.MuleMessage; 
import org.mule.api.transformer.TransformerException; 
import org.mule.transformer.AbstractMessageTransformer; 

public class InputProccesser extends AbstractMessageTransformer { 

    @Override 
    public Object transformMessage(MuleMessage message, String outputEncoding) 
       throws TransformerException { 

     String mes=(String) message.getPayload(); 
     int input=0; 
     try 
     {  
     input = Integer.parseInt(mes); 

     System.out.println(" Your input variable is "+input); 

     return input; 
     } 

     catch(NumberFormatException nFE) 
      { 

      System.out.println("Please enter a number"); 
    return input; 
     } 


    } 

} 

당신이 할 수 입력 메시지를 처리하기 위해 귀하의 요구 사항에 따라, 자바 클래스을 수정할 수 있습니다 뮬 표준 구성 요소 뮬 응용 프로그램을 실행 한 후 입력을 받아들입니다.

관련 문제