2017-12-25 20 views
1

この例外の処理方法は? Content-Typeで間違ったエンコーディング値(UTF-88)を送信した場合、例外フローを実行せずに例外をスローします。 19:55733 [2017-mule_api_registry-uni_auth_app] .HttpConnectoConfig.worker.02] org.mule.module.http.internal.listener.DefaultHttpListener:例外が発生しました解析リクエスト:Mule 3.9.0 - 例外フローを実行しない例外を投げる例外(例外戦略)

は、2017年12月22日10に警告 java.nio.charset.UnsupportedCharsetException:UTF-at java.nio.charset.Charset.forName(Charset.java:531)〜[?:1.8.0_111] at org.mule.transformer.types.SimpleDataType.setEncoding (SimpleDataType.java:89)〜[mule-core-3.9.0.jar:3.9.0] at org.mule.DefaultMuleMessage.updateDataTypeWithProperty(DefaultMuleMessage.java:551)〜[mule-core-3.9.0.jar :3.9.0] at org.mule.DefaultMuleMessage.setProperty(DefaultMuleMessage.java:502)〜[mule-core-3.9.0.jar:3.9.0] at org.mule.DefaultMuleMessage.setProp illegal(DefaultMuleMessage.java:494)〜[mule-core-3.9.0.jar:3.9.0] at org.mule.DefaultMuleMessage.addProperties(DefaultMuleMessage.java:1398)〜[mule-core-3.9.0。 ja:3.9.0] at org.mule.DefaultMuleMessage。(DefaultMuleMessage.java:198)〜[mule-core-3.9.0.jar:3.9.0] at org.mule.DefaultMuleMessage。(DefaultMuleMessage.java: (HttpRequestToMuleEvent.java:128)〜[mule-module-http-Mule-module-http] 3.9.0.jar:3.9.0] 、org.mule.module.http.internal.listener.DefaultHttpListener.createEvent(DefaultHttpListener.java:187)〜[mule-module-http-3.9.0.jar:3.9。 0] 、org.mule.module.http.internal.listener.DefaultHttpListener.access $ 000(DefaultHttpListener.java:48)〜[mule-module-http-3.9.0.jar:3.9.0] org.mule.module.http.internal.listener.DefaultHttpListener $ 1.handleRequest(DefaultHttpListener.java:133)〜[mule-module-http-3.9.0.jar:3.9.0] at org.mule.module。 http.internal.listener.grizzly.GrizzlyRequestDispatcherFilter.handleRead(GrizzlyRequestDispatcherFilter.java:100)〜[mule-module-http-3.9.0.jar:3.9.0] at org.glassfish.grizzly.filterchain.ExecutorResolver $ 9.execute (ExecutorResolver.java:119)〜[grizzly-framework-2.3.33.jar:2.3.33] at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)〜[grizzly-framework-2.3 .33.jar:2.3.33] at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)〜[grizzly-framework-2.3.33.jar:2.3.33] at org.glassfish .grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)〜[grizzly-framework- 2.3.33.jar:2.3.33] at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)〜[[grizzly-framework-2.3.33.jar:2.3.33] at org。 glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)〜[grizzly-framework-2.3.33.jar:2.3.33] at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java: 539)〜[grizzly-framework-2.3.33.jar:2.3.33] at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)〜[grizzly-framework-2.3.33.jar: 2.3.33] 、org.mule.module.http.internal.listener.grizzly.ExecutorPerServerAddressIOStrategy.run0(ExecutorPerServerAddressIOStrategy.java:119)〜[mule-module-http-3.9.0.jar:3.9.0] at .jpg。 ExecutorPerServerAddressIOStrategy.java:31)〜[mule-module-http-3.9.0.jar:3.9.0] at org.mule.module.http.internal.listener.grizzly.ExecutorPerServerAddressIOStrategy $ WorkerThreadRunnable.run(ExecutorPerServerAddressIOStrategy.java: 142)〜[mule-module-http-3.9.0.jar:3.9.0] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[?:1.8.0_111] at java.util .concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)[?:1.8.0_111] at java.lang.Thread.run(Thread.java:745)[?:1.8。0_111] Content-Typeヘッダテストする各要素におけるMEL発現1.Use

答えて

0

#[message.inboundProperties [ 'のContent-Typeを']( 'UTF-8')が含まれ]

2.スイッチのデフォルトステートメントとして機能する要素を使用します。そこから例外をスローします。

例:ラバコアで

<choice> 
    <when expression="#[message.inboundProperties['Content-Type'].contains('??????? your required content type ??????')]"> 
      <logger message="when number one invoked" level="WARN"/> 
     </when> 
     <otherwise> 
      <logger message="otherwise invoked" level="WARN"/> 
     </otherwise> 
</choice> 
+0

本当にリクエストは私のフローでは受信されませんが、この例外はparseRequest = falseを設定してもリクエストを解析中に "DefaultHttpListener"で発生します。

0

、この例外に責任があるクラスorg.mule.transformer.types.SimpleDataType.javaがあります。方法setEncodingは、文字セットの有効性をチェックし、無効な文字セットの場合、Charset.fornameメソッドがをスローします。UnsupportedCharsetException。これを避けるために、あなたはそれ以外の場合は、あなたが私の場合は

message.getPayloadAsString(); 

like- MuleMessageインスタンスからのペイロードを得ることができない、あなたがデフォルトの文字セットを設定する必要がthis-

public void setEncoding(String encoding) 
{ 
    if (!StringUtils.isEmpty(encoding)) 
    { 
     try { 
      // Checks that the encoding is valid and supported 
      Charset.forName(encoding); 
     }catch(UnsupportedCharsetException e) { 
      encoding = "UTF-8"; 
     } 
    } 

    this.encoding = encoding; 
} 

のようなコードブロックを変更することができます私はそれを 'UTF-8'に設定しました。必要に応じて設定できます。

関連する問題