1

少し緊急です助けてください!

IllegalArgumentException が発生するのはなぜですか? Spring で String 型の値を必要な型 Product に変換できませんか?

同様の例外が発生しているため、この質問をすでに読みました。

<Feb 13, 2012 11:55:39 AM IST> <Warning> <HTTP> <BEA-101162> <User defined listener org.springframework.web.context.ContextLoaderListener failed: org.springframework.beans.factory.BeanCreationExceptio
n: Error creating bean with name 'jmsTemplate' defined in class path resource [manager-security-audit.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchExc
eption: Failed to convert property value of type [java.lang.String] to required type [javax.jms.ConnectionFactory] for property 'connectionFactory'; nested exception is java.lang.IllegalArgumentExcept
ion: Cannot convert value of type [java.lang.String] to required type [javax.jms.ConnectionFactory] for property 'connectionFactory': no matching editors or conversion strategy found.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jmsTemplate' defined in class path resource [manager-security-audit.xml]: Initialization of bean failed; nested
exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [javax.jms.ConnectionFactory] for property 'connectionFactory
'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [java.lang.String] to required type [javax.jms.ConnectionFactory] for property 'connectionFactory': no matching
editors or conversion strategy found
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:480)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
        Truncated. see log file for complete stacktrace

私はその質問に対する答えも見ましたが、私の場合の問題は次のとおりです。パラメーターの定義に同様の問題があるかどうかを確認するにはどうすればよいですか (個人的には、ここでの問題ではないと思います (直感だけ)) )? または、これは他の問題ですか?

助けてください

xml ファイルは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>

  <beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:lang="http://www.springframework.org/schema/lang"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/lang

http://www.springframework.org/schema/lang/spring-lang-2.0.xsd">
<bean id="auditListener" class="com.unica.manager.audit.AuditListener"/>
<bean id="auditEventDestination" class="org.apache.activemq.command.ActiveMQQueue">
    <constructor-arg value="audit.event.queue"/>
</bean>
<bean id="auditEventMessageConverter" class="com.unica.manager.audit.AuditEventMessageConverter"/>

<bean id="purePojoMdp" class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
    <property name="delegate" ref="AuditEventManager"/>
    <property name="defaultListenerMethod" value="addAuditEvent"/>
    <property name="messageConverter" ref="auditEventMessageConverter"/>
</bean>
<bean name="auditListenerContainer"  class="org.springframework.jms.listener.SimpleMessageListenerContainer" lazy-init="true">
    <property name="autoStartup" value="false"/>
    <property name="connectionFactory" value=""/>
    <property name="destination" ref="auditEventDestination"/>
    <property name="messageListener" ref="purePojoMdp"/>
</bean>
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate" depends-on="ConfigurationManager" >
    <property name="connectionFactory" value=""/>
    <property name="messageConverter" ref="auditEventMessageConverter"/>
</bean>
<bean id="audit" class="com.unica.manager.audit.Audit" >
    <property name="jmsTemplate" ref="jmsTemplate"/>
        <property name="enableQueuing" value="true"/>
        <property name="auditEventManager" ref="AuditEventManager"/>
    <property name="destination" ref="auditEventDestination"/>
</bean>

4

2 に答える 2

3

connectionFactoryプロパティに何も注入しないのはなぜですか:

<property name="connectionFactory" value=""/>

これは次のように変更する必要があります。

<property name="connectionFactory" ref="amqConnectionFactory"/>

connectionFactoryプロパティは型ですjavax.jms.ConnectionFactory(参照: JmsAccessor.setConnectionFactory())。

amqConnectionFactoryfactory は次のように定義できます。

<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:amq="http://activemq.apache.org/schema/core"
   xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">

    <amq:connectionFactory id="amqConnectionFactory" brokerURL="vm://localhost" />

</beans>
于 2012-02-13T07:20:19.830 に答える
1

Spring 構成の詳細 (xml ファイル) を投稿してください。現在、ログから明らかなのは、プロパティ connectionFactoryを文字列として挿入しようとしているということだけです。Bean を idconnectionFactoryで定義していることを確認してください。それはタイプである必要がありjavax.jms.ConnectionFactory、それを使用して注入してください。

xml構成を投稿してください。これは、問題をさらにデバッグするのに役立ちます。

編集

あなたの入力に基づいて、

<property name="connectionFactory" ...Bean がどこにも定義されていません。また、他の環境で動作していることにも言及しています。どの xml ファイルにこの Bean の定義が含まれているかを確認し、投稿した xml とともにそのファイルが spring によってロードされていることを確認してください。

于 2012-02-13T07:10:58.790 に答える