struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (WW-4105) Struts2 raise java.lang.ClassCastException when Result type is chain
Date Wed, 15 Mar 2017 11:52:41 GMT

    [ https://issues.apache.org/jira/browse/WW-4105?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15925971#comment-15925971
] 

ASF GitHub Bot commented on WW-4105:
------------------------------------

Github user yasserzamani commented on the issue:

    https://github.com/apache/struts/pull/118
  
    @aleksandr-m , Thank you for your time and comments; please let me know what do you think
about below; I would like to be sure about usefulness before starting implementation.
    
    > Are you sure? Can you provide some example?
    
    Yes, I created an attack example with latest Struts2 but I think I'm not allowed to post
details here so I emailed to security@struts.apache.org because the example is really can
be harmful and can be applied in an almost common usage by Struts2 users. **The vulnerability
is because of operating Struts inside other technologies borders!**
    
    > How knowing the name of the real class helps in that case? What are you going to
do with it?
    
    Knowing that helps Struts2 to not operate inside other technologies borders which may
arise some vulnerability as mentioned above.
    
    > 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 dependency of Spring is optional e.g. AopUtils is not available in core. Furthermore,
Struts2 user has several options for proxy creator from cglib, jdk to any unknown third party.
    
    > Proxying the action itself is not the best practice too.
    
    Please see [This is useful, for example, if you wish to apply more complex AOP or Spring-enabled
technologies, such as Acegi](https://struts.apache.org/docs/spring-plugin.html).
    
    > What is the problem with generating proxy data into json? What if this is what is
really needed?
    
    User may not get any exception then may not check the json result but actual result may
help hackers. If this is what is really needed, then we can provide an option for user.
    
    > 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.
    
    By word excluding, I meant in sensitive places rather than complete exclusion. In case
of chain or any not sensitive place, we should think about solution :)


> 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)

Mime
View raw message