以下の Mule 構成と Java コードを使用すると、コンポーネント バインディングを介して Mule に例外を伝播させることができません。リモート サービスでスローされた例外を取得して、呼び出し元のコンポーネントに伝達するにはどうすればよいですか? ミュール EE 3.2.2
ありがとう
Mule 構成
<mule ...>
<flow name="Test">
<vm:inbound-endpoint path="Test" exchange-pattern="request-response" />
<component class="foo.Component">
<binding interface="foo.Interface" method="bar">
<vm:outbound-endpoint path="Interface.bar"
exchange-pattern="request-response" />
</binding>
</component>
</flow>
<flow name="Interface.bar">
<vm:inbound-endpoint path="Interface.bar"
exchange-pattern="request-response" />
<scripting:component>
<scripting:script engine="groovy">
throw new Exception();
</scripting:script>
</scripting:component>
</flow>
</mule>
Java コード
コンポーネント.java
package foo;
public class Component {
private Interface theInterface;
public void foo(final String unused) throws Exception {
theInterface.bar();
}
public void set(final Interface anInterface) {
theInterface = anInterface;
}
}
インターフェイス.java
package foo;
public interface Interface {
String bar() throws Exception;
}
ドライバ
package foo;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;
import org.mule.api.MuleException;
import org.mule.api.client.MuleClient;
import org.mule.tck.junit4.FunctionalTestCase;
@RunWith(MockitoJUnitRunner.class)
public class ATest extends FunctionalTestCase {
@Test(expected = Exception.class)
public void willItThrowException() throws MuleException {
final MuleClient client = muleContext.getClient();
client.send("vm://Test", "", null, RECEIVE_TIMEOUT);
}
@Override
protected String getConfigResources() {
return "app/mule-config.xml";
}
}