camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Martin Krasser (JIRA)" <j...@apache.org>
Subject [jira] Commented: (CAMEL-2237) Improper ordering of MINA filters
Date Tue, 01 Dec 2009 10:23:53 GMT

    [ 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.


Mime
View raw message