[
https://issues.apache.org/jira/browse/WW-4105?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15900873#comment-15900873
]
ASF GitHub Bot commented on WW-4105:
------------------------------------
Github user aleksandr-m commented on the issue:
https://github.com/apache/struts/pull/118
Let's break it down:
**chain**
First of all using `chain` is discouraged. Proxying the action itself is
not the best practice too.
If the only viable solution to know target class is to declare a real class
of the bean then it should be done in the chain interceptor not in the action
configuration.
**json result**
What is the problem with generating proxy data into json? What if this is
what is really needed?
**excluding `ActionSupport`**
If `ActionSupport` is excluded then its methods cannot be used in the JSP
(e.g. `getText`). In case of `chain` action errors / messages won't be moved to
the next action. Etc.
**overall**
*someone may successfully change proxy information of the action by an HTTP
request with named parameters*
Are you sure? Can you provide some example?
*there is no any clean way to check if it's a proxy and unwrap it to target
class*
How knowing the name of the real class helps in that case? What are you
going to do with it?
If it is spring proxy then there are helper methods to get target class
from the instance (e.g. `AopUtils`). If there is no *clean* way to do this in
the Struts core utility class then it can be delegated to current object
factory.
> Struts2 raise java.lang.ClassCastException when Result type is chain
> ---------------------------------------------------------------------
>
> Key: WW-4105
> URL: https://issues.apache.org/jira/browse/WW-4105
> Project: Struts 2
> Issue Type: Bug
> Components: Core Interceptors
> Affects Versions: 2.3.14.3
> Environment: tomcat6 struts2.3.*
> Reporter: zhouyong
> Fix For: 2.5.x
>
> Attachments: lib.zip.001, lib.zip.002, lib.zip.003, lib.zip.004,
> lib.zip.005, lib.zip.006, lib.zip.007, lib.zip.008, struts2-debug.tar.gz,
> test.zip, WW-4105.patch
>
>
> java.lang.ClassCastException: A action cannot be cast to B action when A
> chain to B.
> ChainingInterceptor.java has a bug in intercept function when Result type is
> chain.
> Intercept function of ChainingInterceptor will change action member of
> DefaultActionInvocation class. And invokeAction of DefaultActionInvocation
> will fail in line 450.
> My action class has a annotation. It is
> org.springframework.transaction.annotation.Transactional. Action work good
> if it has not org.springframework.transaction.annotation.Transactional
> AtestAction.java:
> {code:java}
> package demo.action;
> import org.apache.struts2.convention.annotation.Action;
> import org.apache.struts2.convention.annotation.ParentPackage;
> import org.apache.struts2.convention.annotation.Result;
> import org.apache.struts2.convention.annotation.Results;
> import org.springframework.context.annotation.Scope;
> import org.springframework.stereotype.Service;
> import org.springframework.transaction.annotation.Transactional;
> @Transactional
> @ParentPackage(value="swordlite")
> @Service("AtestAction")
> @Scope(value = "prototype")
> @Results( {
> @Result(name = "test", location = "testb", type = "chain",
> params = {
> "defineId", "${_defineId}",
> "rp", "${_resultPage}"}
> )
> })
> public class AtestAction {
> @Action(value = "/testa")
> public String run() throws Exception
> { return "test"; }
> }
> BtestAction.java:
> import org.apache.struts2.convention.annotation.Action;
> import org.apache.struts2.convention.annotation.ParentPackage;
> import org.apache.struts2.convention.annotation.Result;
> import org.apache.struts2.convention.annotation.Results;
> import org.springframework.context.annotation.Scope;
> import org.springframework.stereotype.Service;
> import org.springframework.transaction.annotation.Transactional;
> @Transactional
> @ParentPackage(value="swordlite")
> @Service("BtestAction")
> @Scope(value="prototype")
> @Results({
> @Result(name="ok", location="/ok.jsp", type="dispatcher"),
> })
> public class BtestAction {
> @Action(value = "/testb")
> public String run() throws Exception
> { return "ok"; }
> }
> {code}
> request: http://localhost:8080/test/testa.action
> raise error: java.lang.ClassCastException: demo.action.AtestAction cannot be
> cast to demo.action.BtestAction
> spring config file: applicationContext.xml
> {code: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:aop="http://www.springframework.org/schema/aop"
> xmlns:tx="http://www.springframework.org/schema/tx"
> xmlns:context="http://www.springframework.org/schema/context"
> xmlns:util="http://www.springframework.org/schema/util"
> xmlns="http://www.springframework.org/schema/p"
> xsi:schemaLocation="http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
> http://www.springframework.org/schema/aop
> http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
> http://www.springframework.org/schema/tx
> http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
> http://www.springframework.org/schema/context
> http://www.springframework.org/schema/context/spring-context-2.5.xsd
> http://www.springframework.org/schema/util
> http://www.springframework.org/schema/util/spring-util-2.5.xsd">
> <context:component-scan base-package="..action,.**.spring" />
> <context:annotation-config />
> <aop:aspectj-autoproxy proxy-target-class="true"/>
> <bean id="propertyConfigurer"
> class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
> <property name="locations">
> <list>
> <value>WEB-INF/config/db.properties</value>
> <value>WEB-INF/config/hibernate.properties</value>
> </list>
> </property>
> </bean>
> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
> destroy-method="close">
> <property name="driverClass" value="${database.working.driver}"></property>
> <property name="jdbcUrl" value="${database.working.url}"></property>
> <property name="user" value="${database.working.user}"></property>
> <property name="password" value="${database.working.password}"></property>
> <property name="maxPoolSize" value="${database.working.poolsize}"></property>
> <property name="minPoolSize" value="1"></property>
> <property name="initialPoolSize" value="1"></property>
> <property name="maxIdleTime" value="20"></property>
> </bean>
> <bean id="sessionFactory"
> class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
> <property name="dataSource" ref="dataSource" />
> <property name="packagesToScan">
> <list>
> <value>.*.model</value>
> </list>
> </property>
> <property name="hibernateProperties">
> <props>
> <prop key="hibernate.dialect">${hibernate.dialect}</prop>
> <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
> <prop key="hibernate.hbm2ddl.auto">none</prop>
> </props>
> </property>
> </bean>
> <bean id="transactionManager"
> class="org.springframework.orm.hibernate3.HibernateTransactionManager">
> <property name="sessionFactory" ref="sessionFactory"></property>
> </bean>
> <tx:annotation-driven transaction-manager="transactionManager" />
> </beans>
> {code}
> struts config file: struts.xml
> {code:xml}
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE struts PUBLIC
> "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
> "http://struts.apache.org/dtds/struts-2.3.dtd">
> <struts>
> <!-- <constant name="struts.objectFactory" value="spring" /> -->
> <constant name="struts.objectFactory"
> value="org.apache.struts2.spring.StrutsSpringObjectFactory" />
> <constant name="struts.devMode" value="false" />
> <package name="swordlite" namespace="/" extends="struts-default">
> <global-results>
> <result name="myerror">/mrg/error.jsp</result>
> <result name="re2Editpage">/mrg/re2Editpage.jsp</result>
> </global-results>
> <global-exception-mappings>
> <exception-mapping result="re2Editpage"
> exception="org.hibernate.PropertyValueException"></exception-mapping>
> </global-exception-mappings>
> </package>
> </struts>
> {code}
> stacktrace:
> {code:java}
> java.lang.ClassCastException: demo.action.AtestAction cannot be cast to
> demo.action.BtestAction
> at
> demo.action.BtestAction$$FastClassByCGLIB$$4c9ad5d.invoke(<generated>)
> ~[com.springsource.net.sf.cglib-2.2.0.jar:na]
> at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
> ~[com.springsource.net.sf.cglib-2.2.0.jar:na]
> at
> org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:688)
> ~[org.springframework.aop-3.0.5.RELEASE.jar:3.0.5.RELEASE]
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
> ~[org.springframework.aop-3.0.5.RELEASE.jar:3.0.5.RELEASE]
> at
> org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
> ~[org.springframework.transaction-3.0.5.RELEASE.jar:3.0.5.RELEASE]
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
> ~[org.springframework.aop-3.0.5.RELEASE.jar:3.0.5.RELEASE]
> at
> org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621)
> ~[org.springframework.aop-3.0.5.RELEASE.jar:3.0.5.RELEASE]
> at demo.action.BtestAction$$EnhancerByCGLIB$$cb3cf5cd.run(<generated>)
> ~[com.springsource.net.sf.cglib-2.2.0.jar:na]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> ~[na:1.6.0_29]
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> ~[na:1.6.0_29]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> ~[na:1.6.0_29]
> at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.6.0_29]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.ActionChainResult.execute(ActionChainResult.java:233)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:371)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:275)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
> ~[xwork-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:546)
> ~[struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:434)
> [struts2-core-2.3.14.3.jar:2.3.14.3]
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> [catalina.jar:6.0.35]
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> [catalina.jar:6.0.35]
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> [catalina.jar:6.0.35]
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
> [catalina.jar:6.0.35]
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> [catalina.jar:6.0.35]
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> [catalina.jar:6.0.35]
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> [catalina.jar:6.0.35]
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
> [catalina.jar:6.0.35]
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
> [tomcat-coyote.jar:6.0.35]
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
> [tomcat-coyote.jar:6.0.35]
> at
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
> [tomcat-coyote.jar:6.0.35]
> at java.lang.Thread.run(Unknown Source) [na:1.6.0_29]
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)