Here is the exception:
Exception in thread "main"
org.springframework.beans.factory.BeanCreationException: Error creating
bean with name 'filterChainBuilder' defined in file
[/opt/tracker2/./etc/jmxServerContext.xml]: Error setting property
values; nested exception is PropertyAccessExceptionsException (1 errors)
Caused by: PropertyAccessExceptionsException (1 errors)
org.springframework.beans.TypeMismatchException: Failed to convert
property value of type [java.util.ArrayList] to required type
[org.apache.mina.common.IoFilter[]] for property 'filters'; nested
exception is java.lang.IllegalArgumentException: No matching editors or
conversion strategy found
Caused by: java.lang.IllegalArgumentException: No matching editors or
conversion strategy found
at
org.springframework.beans.PropertyTypeConverter.convertIfNecessary(PropertyTypeConverter.java:209)
at
org.springframework.beans.PropertyTypeConverter.convertIfNecessary(PropertyTypeConverter.java:93)
at
org.springframework.beans.PropertyTypeConverter.convertToTypedArray(PropertyTypeConverter.java:264)
at
org.springframework.beans.PropertyTypeConverter.convertIfNecessary(PropertyTypeConverter.java:182)
at
org.springframework.beans.PropertyTypeConverter.convertIfNecessary(PropertyTypeConverter.java:108)
at
org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:723)
at
org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:575)
at
org.springframework.beans.AbstractPropertyAccessor.setPropertyValue(AbstractPropertyAccessor.java:49)
at
org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:68)
at
org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:57)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:809)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:589)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:389)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:256)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:167)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:253)
at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:332)
at
org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:89)
at
org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:74)
And here is the complete filterchain:
<bean id="filterChainBuilder"
class="org.apache.mina.integration.spring.DefaultIoFilterChainBuilderFactoryBean">
<property name="filters">
<list>
<bean class="org.apache.mina.filter.thread.ThreadPoolFilter">
<constructor-arg>
<bean
class="org.apache.mina.filter.thread.LeaderFollowersThreadPool">
<property name="threadNamePrefix" value="IoWorker"/>
<property name="maximumPoolSize" value="16"/>
<property name="keepAliveTime" value="60000"/>
</bean>
</constructor-arg>
</bean>
<bean class="org.apache.mina.integration.spring.IoFilterMapping">
<property name="name" value="LOGGING_FILTER" />
<property name="filter">
<bean class="org.apache.mina.filter.LoggingFilter"/>
</property>
</bean>
</list>
</property>
</bean>
The same happens also, when I use only the part:
<bean id="filterChainBuilder"
class="org.apache.mina.integration.spring.DefaultIoFilterChainBuilderFactoryBean">
<property name="filters">
<list>
<bean class="org.apache.mina.integration.spring.IoFilterMapping">
<property name="name" value="LOGGING_FILTER" />
<property name="filter">
<bean class="org.apache.mina.filter.LoggingFilter"/>
</property>
</bean>
</list>
</property>
</bean>
If you need more of the config file, I can attach the whole one in the
next mail.
Regards
Michael
Niklas Therning wrote:
Michael Bauroth wrote:
Hi,
can you tell me, what's wrong with this code?
<bean class="org.apache.mina.integration.spring.IoFilterMapping">
<constructor-arg value="abc" />
<constructor-arg>
<bean class="org.apache.mina.filter.LoggingFilter"/>
</constructor-arg>
</bean>
When I use instead:
<bean class="org.apache.mina.filter.LoggingFilter" />
all works fine. When I check the code of class IoFilterMapping, the
first approach should work?
What happens with the first? Do you get an exception? If that's the case
please post it here. I think the first should work as long as you don't
mix the two approaches. You must either use explicit IoFilterMappings
for all your filters set on a DefaultIoFilterChainBuilderFactoryBean or
use the simpler for all. You can't mix them.
You could try to use:
<bean class="org.apache.mina.integration.spring.IoFilterMapping">
<property name="name" value="abc" />
<property name="filter">
<bean class="org.apache.mina.filter.LoggingFilter"/>
</property>
</bean>
instead. I've had some problems with Spring and constructor-arg before
where Spring couldn't find a matching constructor or picked the wrong
one. Though I don't think that's the case here.
It might help if I get to see more of your Spring file.