Issue Details (XML | Word | Printable)

Key: MULE-3669
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Critical Critical
Assignee: Ross Mason
Reporter: Gilles Gosuin
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Mule

Two connectors with the same protocol : IllegalStateException

Created: 16/Sep/08 04:01 AM   Updated: 06/Oct/08 06:52 AM
Component/s: Core: Endpoints
Affects Version/s: 2.0.2
Fix Version/s: 2.1.1

Time Tracking:
Not Specified

Labels:
User impact: High
Configuration:
<?xml version="1.0" encoding="UTF-8"?>
<mule
xmlns="http://www.mulesource.org/schema/mule/core/2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tcp="http://www.mulesource.org/schema/mule/tcp/2.0"
xmlns:spring="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.mulesource.org/schema/mule/core/2.0 http://www.mulesource.org/schema/mule/core/2.0/mule.xsd
http://www.mulesource.org/schema/mule/tcp/2.0 http://www.mulesource.org/schema/mule/tcp/2.0/mule-tcp.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<spring:bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<spring:property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
<spring:property name="locations">
<spring:list>
<spring:value>classpath:config/securysatfleet/gateway/transport/transport.properties</spring:value>
</spring:list>
</spring:property>
</spring:bean>

<custom-transformer
name="byteArrayToAbstractFleetMessageTransformer"
class="be.bfe.securysatfleet.gateway.service.dispatcher.transformer.ByteArrayToAbstractFleetMessageMuleTransformer"
returnClass="be.bfe.securysatfleet.domain.data.AbstractFleetMessage">
<spring:property name="transformers">
<spring:map>
<spring:entry key="65" value-ref="byteArrayToPeriodicTrackTransformer"/>
</spring:map>
</spring:property>
</custom-transformer>

<custom-transformer name="abstractFleetMessageToF7MessageTransformer" class="be.bfe.securysatfleet.gateway.service.dispatcher.transformer.PolymorphicTransformer">
<spring:property name="transformers">
<spring:map key-type="java.lang.Class">
<spring:entry key="be.bfe.securysatfleet.domain.data.PeriodicTrack" value-ref="periodicTrackToF7PeriodicTrackTransformer"/>
</spring:map>
</spring:property>
</custom-transformer>

<custom-transformer name="abstractF7MessageToByteArrayTransformer" class="be.bfe.securysatfleet.gateway.service.dispatcher.transformer.PolymorphicTransformer">
<spring:property name="transformers">
<spring:map key-type="java.lang.Class">
<spring:entry key="be.bfe.securysatfleet.gateway.domain.dispatcher.F7PeriodicTrack" value-ref="f7PeriodicTrackToByteArrayTransformer"/>
<spring:entry key="be.bfe.securysatfleet.gateway.domain.dispatcher.F7Alarm" value-ref="f7AlarmToByteArrayTransformer"/>
</spring:map>
</spring:property>
</custom-transformer>

<custom-filter name="dispatchingFilter" class="be.bfe.securysatfleet.gateway.service.dispatcher.filter.DispatchingFilter">
<spring:property name="dispatchingDao" ref="dispatchingDao"/>
</custom-filter>

<tcp:connector name="fleetConnector">
<tcp:custom-protocol class="be.bfe.securysatfleet.transport.FleetSegmentProtocol"/>
</tcp:connector>

<tcp:connector name="carTrakConnector">
<tcp:direct-protocol payloadOnly="true"/>
</tcp:connector>

<tcp:endpoint name="fleetEndpoint" host="localhost" port="${fleetPort}" connector-ref="fleetConnector"/>

<tcp:endpoint name="carTrakEndpoint" host="localhost" port="${carTrakPort}" connector-ref="carTrakConnector"/>

<model name="fleetModel">
<service name="carTrakListener">
<inbound>
<inbound-endpoint ref="carTrakEndpoint"/>
</inbound>
</service>

<service name="fleetMessageDispatcher">
<inbound>
<inbound-endpoint ref="fleetEndpoint" connector-ref="fleetConnector">
<transformer ref="byteArrayToAbstractFleetMessageTransformer"/>
</inbound-endpoint>
</inbound>
<bridge-component/>

<outbound>
<custom-outbound-router class="be.bfe.securysatfleet.gateway.service.dispatcher.router.DispatchingRouter">

<outbound-endpoint ref="carTrakEndpoint" connector-ref="carTrakConnector">

<transformers>
<transformer ref="abstractFleetMessageToF7MessageTransformer"/>
<transformer ref="abstractF7MessageToByteArrayTransformer"/>
</transformers>

</outbound-endpoint>
<filter ref="dispatchingFilter"/>
<spring:property name="dispatchingDao" ref="dispatchingDao"/>
</custom-outbound-router>

</outbound>

</service>

</model>

</mule>



 Description  « Hide
Mule throws the following exception when two connectors with the same protocols are defined.

java.lang.IllegalStateException: There are at least 2 connectors matching protocol "tcp", so the connector to use must be specified on the endpoint using the 'connector' property/attribute
at org.mule.transport.service.TransportFactory.getConnectorByProtocol(TransportFactory.java:168)
at org.mule.endpoint.AbstractEndpointBuilder.getConnector(AbstractEndpointBuilder.java:552)
at org.mule.endpoint.AbstractEndpointBuilder.getDefaultConnector(AbstractEndpointBuilder.java:275)
at org.mule.endpoint.AbstractEndpointBuilder.getConnector(AbstractEndpointBuilder.java:270)
at org.mule.endpoint.AbstractEndpointBuilder.doBuildOutboundEndpoint(AbstractEndpointBuilder.java:188)
at org.mule.endpoint.AbstractEndpointBuilder.buildOutboundEndpoint(AbstractEndpointBuilder.java:95)
at org.mule.endpoint.DefaultEndpointFactory.getOutboundEndpoint(DefaultEndpointFactory.java:86)
at org.mule.endpoint.DefaultEndpointFactory.getOutboundEndpoint(DefaultEndpointFactory.java:62)
at org.mule.routing.outbound.AbstractRecipientList.getRecipientEndpointFromString(AbstractRecipientList.java:184)
at org.mule.routing.outbound.AbstractRecipientList.getRecipientEndpoint(AbstractRecipientList.java:143)
at org.mule.routing.outbound.AbstractRecipientList.route(AbstractRecipientList.java:87)
at org.mule.routing.outbound.DefaultOutboundRouterCollection$1.doInTransaction(DefaultOutboundRouterCollection.java:64)
at org.mule.transaction.TransactionTemplate.execute(TransactionTemplate.java:45)
at org.mule.routing.outbound.DefaultOutboundRouterCollection.route(DefaultOutboundRouterCollection.java:69)
at org.mule.service.AbstractService.dispatchToOutboundRouter(AbstractService.java:883)
at org.mule.model.seda.SedaService.dispatchToOutboundRouter(SedaService.java:514)
at org.mule.model.seda.SedaService$ComponentStageWorker.run(SedaService.java:537)
at org.mule.work.WorkerContext.run(WorkerContext.java:310)
at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1061)
at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:575)
at java.lang.Thread.run(Unknown Source)

I DID define the connector explicitly on the endpoint (see configuration).



 All   Comments   Work Log   Change History   Transitions   FishEye      Sort Order: Ascending order - Click to sort in descending order
Ross Mason added a comment - 06/Oct/08 04:05 AM
This is a possible regression, so upping the priority

Ross Mason added a comment - 06/Oct/08 06:52 AM
Thanks for report, but I could not reproduce the the issue. I added some new test coverage just to make sure: http://fisheye.codehaus.org/changelog/mule/?cs=12909