[ https://issues.apache.org/jira/browse/WW-4105?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15979941#comment-15979941 ]
ASF GitHub Bot commented on WW-4105: ------------------------------------ Github user yasserzamani commented on the issue: https://github.com/apache/struts/pull/133 > What do you mean by that? There is no bean name. Users may set `class` attribute to a 1.class name or to a 2.bean name. I meant I think it is not nice to use `class` attribute for, as you say, two different topics. Additionally, in second use, S2 cannot know the config time class of the action in any clean way. > every action Not every. `bean` attribute is and will be optional. Just actions which their `class` attribute value can not be resolved to config time class of the action by `ojectfactory.getInstanceClass`. For example `<action class=beanName` with `<bean name=beanName class=com....` and if this bean is proxified e.g. by AOP needs to be protected. This PR warns about these and continue. > It is not about the amount of changes Sorry I meant about docs, satisfying user with the new design or param and maintain it for log time. > Yet another is to compare action configuration class with the current instance toString / getClass().toString As I mentioned, when user uses `class` attribute as a bean name, S2 cannot know the action configuration class in any clean way. > You're mixing two very different topics together, security and chain configuration. No, I think about S2 borders. I'm trying to discuss that S2 should or should not know the config time class of the action and then do not operate outside of that border. Input Parameters, Chain and JSON are three example operations of S2 which I discovered at first place. Then I discovered `<s:form validate=true`. I see all of these are because S2 1.does not know and 2.do not consider config time class of the action. > 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)