[ 
https://issues.apache.org/activemq/browse/CAMEL-2237?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=56187#action_56187
 ] 

Martin Krasser commented on CAMEL-2237:
---------------------------------------

Maybe instead of using {{useDefaultCodec}} (with default value true) we should 
use {{allowDefaultCodec}} (with default value true) because a default codec is 
only installed if the {{codec}} parameter is {{null}} and the {{textline}} 
parameter is {{false}}. With {{useDefaultCodec}} a user might expect that the 
default codec is enforced (i.e. always used) which is not the case. An 
{{allowDefaultCodec}} parameter expresses more closely what the component is 
actually doing.

> Improper ordering of MINA filters
> ---------------------------------
>
>                 Key: CAMEL-2237
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-2237
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-mina
>    Affects Versions: 2.1.0
>            Reporter: Dmytro Rud
>            Assignee: Martin Krasser
>             Fix For: 2.2.0
>
>         Attachments: camel-mina-20091130.patch
>
>
> When we want to use SSL on the consumer side, MINA's SSLFilter must be 
> inserted as the very first filter into the chain (or, at least, as the second 
> one after an {{ExecutorFilter}}), but it is currently not possible, because 
> {{MinaComponent#createSocketEndpoint()}} always inserts a 
> {{ProtocolCodecFilter}} at the very beginning by calling 
> {{configureCodecFactory()}}.
> A proposed workaround is to introduce an additional URL parameter 
> _noDefaultCodec_ which prohibits the installation of the default protocol 
> codec filter. The protocol codec must be then configured manually, e.g. using 
> Spring:
> {quote}
> <bean id="sslFilter" class="org.apache.mina.filter.SSLFilter">
>     <constructor-arg>
>         <bean class="javax.net.ssl.SSLContext" factory-method="getDefault" />
>     </constructor-arg>
> </bean>
> <bean id="codecFilter" 
> class="org.apache.mina.filter.codec.ProtocolCodecFilter">
>     <constructor-arg ref="hl7codec" />
> </bean>
> <bean id="hl7codec" class="org.apache.camel.component.hl7.HL7MLLPCodec" />
> <bean id="minaFilters" class="java.util.ArrayList">
>     <constructor-arg>
>         <list value-type="org.apache.mina.common.IoFilter">
>              <ref bean="sslFilter" /> 
>              <ref bean="codecFilter" /> 
>         </list>
>     </constructor-arg>
> </bean>
> {quote}
> After that, the consumer endpoint URL can look like
> {{from("mina:tcp://0.0.0.0:8888?sync=true&lazySessionCreation=true&noDefaultCodec=true&filters=#minaFilters")}}.
> I am not sure whether this approach is optimal, therefore I call it 
> "workaround" and not "solution".  The corresponding patch is attached.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to