【问题标题】:struts 2.3.16.1 upgrades giving TypeMismatchException for struts xwork and SimpleMessageListenerContainer in Spring frameworkstruts 2.3.16.1 升级为 Spring 框架中的 struts xwork 和 SimpleMessageListenerContainer 提供 TypeMismatchException
【发布时间】:2014-05-20 13:44:04
【问题描述】:

我已从 struts 2.0 升级到 2.3.16.1,以便为我的 Web 应用程序获取最新的 struts 安全修复程序

当我升级部署在 tomcat 服务器中时,它会出现以下错误:

原因:无法加载配置。 - 拦截器 - jar:file:/C:/Projects/apache-tomcat-7.0.50/webapps/myweb/WEB-INF/lib/struts2-core-2.3.16.1.jar!/struts-default.xml:167: 106 在 com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:58) 在 org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:445) 在 org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:489)

原因:注册拦截器类 org.apache.struts2.interceptor.FileUploadInterceptor - 拦截器 - jar:file:/C:/Projects/apache-tomcat-7.0.50/webapps/myweb/WEB-INF/ 时捕获异常lib/struts2-core-2.3.16.1.jar!/struts-default.xml:167:106

原因:org.springframework.beans.TypeMismatchException: 无法将类型 [org.springframework.jms.listener.SimpleMessageListenerContainer] 的属性值转换为所需类型 [com.opensymphony.xwork2.inject .Container] 用于属性“容器”;嵌套异常是 java.lang.IllegalArgumentException:无法将类型 [org.springframework.jms.listener.SimpleMessageListenerContainer] 的值转换为属性“容器”所需的类型 [com.opensymphony.xwork2.inject.Container] ': 未找到匹配的编辑器或转换策略

为了您的方便,下面给出了我的配置

pom.xml 中的 maven 配置如下所示

<dependency>
    <groupId>com.opensymphony</groupId>
        <artifactId>xwork</artifactId>
        <version>2.1.3</version>
    </dependency>
<dependency>
    <groupId>org.apache.struts</groupId>
        <artifactId>struts2-spring-plugin</artifactId>
        <version>2.3.16.1</version>
    </dependency>

<dependency>
    <groupId>org.springframework</groupId>
        <artifactId>spring-jms</artifactId>
        <version>3.0.5.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.3.16.1</version>
</dependency>
<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-spring-plugin</artifactId>
    <version>2.3.16.1</version>
</dependency>
<dependency>
    <groupId>ognl</groupId>
    <artifactId>ognl</artifactId>
    <version>3.0.8</version>
</dependency>

spring bean.xml的配置

<bean id="container" class="org.springframework.jms.listener.SimpleMessageListenerContainer">
    <property name="connectionFactory" ref="connectionFactory" />
    <property name="messageListener" ref="listener" />
    <property name="destination" ref="requestQueue" />
</bean>

<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    <property name="connectionFactory" ref="connectionFactory" />
    <property name="defaultDestination" ref="requestQueue" />
</bean>

<bean id="requestQueue" class="org.apache.activemq.command.ActiveMQQueue">
    <constructor-arg value="MYEMAILQUEUE" />
</bean>
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="tcp://localhost:61616?keepAlive=true" />
</bean>

如果有人可以提供解决此问题的解决方案或想法,不胜感激。

【问题讨论】:

    标签: java spring tomcat struts2 maven-2


    【解决方案1】:

    我猜这与错误的库有关。

    仔细查看Struts2 project dependencies

    这个

    <dependency>
        <groupId>com.opensymphony</groupId>
        <artifactId>xwork</artifactId>
        <version>2.1.3</version>
    </dependency>
    

    例如应该像其他人一样2.3.16.1...

    【讨论】:

    【解决方案2】:

    将你的 pom.xml 缩减为以下内容并允许 Maven 解决缺失的依赖项:

    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-spring-plugin</artifactId>
        <version>2.3.16.1</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jms</artifactId>
        <version>3.0.5.RELEASE</version>
    </dependency>
    

    【讨论】:

    • 谢谢,这提醒你仔细检查这个条目,我发现了一个错误:-)
    猜你喜欢
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 2014-05-25
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多