2012-02-08 8 views
2

私は、Mule(3.2)のプライベートフローから例外が伝播されない場所を読んでいます。プライベートフローから例外を伝播するにはどうすればよいですか?

  • は別の構築物から参照することができるメッセージプロセッサのチェーン
  • を呼び出す構築

に例外を伝播している:その場合は、別のラバはそれを構築していますか?

または、プライベートフローから例外が伝播されないという制限を回避する方法はありますか?

あなたは例外が民間の流れの外に伝播しないで、私は上記の記述しています動作を再現するためにラバ-config.xmlに以下のJavaコードを使用することができます。

ラバ-config.xmlの

<?xml version="1.0" encoding="UTF-8"?> 
<mule xmlns="http://www.mulesoft.org/schema/mule/core" 
    xmlns:stdio="http://www.mulesoft.org/schema/mule/stdio" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

    xsi:schemaLocation=" 
    http://www.mulesoft.org/schema/mule/stdio http://www.mulesoft.org/schema/mule/stdio/3.2/mule-stdio.xsd 
    http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/3.2/mule.xsd"> 

<stdio:connector name="unused" promptMessage="Yes? " messageDelayTime="1000" /> 

<flow name="throwsException"> 
    <component class="apackage.ThrowsException" /> 
</flow> 

<flow name="echo"> 
    <stdio:inbound-endpoint system="IN"/> 

    <flow-ref name="throwsException" /> 
    <component class="apackage.DuplicateString" /> 

    <stdio:outbound-endpoint system="OUT"/> 
</flow> 

</mule> 

ThrowsException.java

package apackage; 

public class ThrowsException { 

    public String throwsException(String string) { 
     throw new RuntimeException(); 
    } 

} 

DuplicateString.java

package apackage; 

public class DuplicateString { 

    public String duplicateString(String string) { 
     return string.concat(string); 
    } 

} 
+0

この質問に非常に驚きました。サブフローで最初に手を加えた例外を飲み込んだ経験はありますか? –

+0

は元の質問にコードを追加して、私が記述している振る舞いを簡単に複製できるようにしました。 – beluchin

+0

あなたの設定を共有してくれてありがとう、それは確かに気づいている振る舞いを再現するのに非常に役立ちます。 –

答えて

2

あなたではなく、他のフローよりもサブ流れを使いたいように見えます。

  • 流れは、それが副流が正確に再利用することができるマクロのように動作し、それはコピーと同じだ
  • 等自身のライフサイクル、例外処理と処理戦略のフローに同一のプロセッサを貼り付け有しますそれはサブフローを参照して使用しています。

HTH。

+0

OMGダニエル、あなたはワシの目を持っています!私は特定のbeluchinがサブフローを使用していて、サブフローであるかのようにフロー要素を使用したことに気付かなかったことがわかりました!優れたキャッチ! –

+0

サブフローのセマンティクスについて説明しているドキュメントを教えてください。ありがとう。 – beluchin

0

Danが正しいです。

例外の伝播はできませんでしたが、Mule 3.3以降では、プライベートフローにスローされた例外を伝播できるため、呼び出し側フロー例外戦略で管理することができます。

+0

しかし、サブフローではなくプライベートフローをいつ使用しますか?手動で例外を伝播する必要がある場合は、なぜサブフローを使用しないのですか?私はプライベートフローのユースケースを理解していないと思います... –

関連する問題