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