Struts 2
  1. Struts 2
  2. WW-3662

convention-plugin not work in jboss-7.0.0

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.2.3
    • Fix Version/s: 2.3.3
    • Component/s: Plugin - Convention
    • Labels:
      None
    • Environment:

      OS:win7, JDK:1.6.0_26, APP:jboss 7.0.0

      Description

      1. first, replace the xwork-x.x.x.jar with a bug-fixed version, see: https://issues.apache.org/jira/browse/WW-3558, prevent the bug breaking the deployment

      2. use follow config in struts.xml
      <constant name="struts.convention.exclude.parentClassLoader" value="true" />
      <constant name="struts.convention.action.fileProtocols" value="jar,vfs,vfsfile,vfszip" />

      <constant name="struts.convention.package.locators" value="actions,action" />
      <constant name="struts.convention.package.locators.disable" value="false" />
      <constant name="struts.convention.package.locators.basePackage" value="com.mcms.web.actions" />

      3. deploy *.war file to jboss, then start it, get follow error log
      17:40:27,711 SEVERE [com.opensymphony.xwork2.util.finder.ClassFinder] Unable to read URL [vfs:/G:/jboss-as-7.0.0.Final/bin/content/struts2.war/WEB-INF/classes/]: java.io.FileNotFoundException: G:\jboss-as-7.0.0.Final\bin\content\struts2.war\WEB-INF\classes
      at java.io.FileInputStream.open(Native Method) [:1.6.0_26]
      at java.io.FileInputStream.<init>(FileInputStream.java:120) [:1.6.0_26]
      at java.io.FileInputStream.<init>(FileInputStream.java:79) [:1.6.0_26]
      at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70) [:1.6.0_26]
      at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161) [:1.6.0_26]
      at java.net.URL.openStream(URL.java:1010) [:1.6.0_26]
      at com.opensymphony.xwork2.util.finder.ClassFinder.jar(ClassFinder.java:480) [xwork-core-2.2.3.jar:]
      at com.opensymphony.xwork2.util.finder.ClassFinder.<init>(ClassFinder.java:144) [xwork-core-2.2.3.jar:]
      at org.apache.struts2.convention.PackageBasedActionConfigBuilder.findActions(PackageBasedActionConfigBuilder.java:376) [struts2-convention-plugin-2.2.3.jar:]
      at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:334) [struts2-convention-plugin-2.2.3.jar:]
      at org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:53) [struts2-convention-plugin-2.2.3.jar:]

      4. use follow config in struts.xml
      <constant name="struts.convention.package.locators" value="actions,action" />
      <constant name="struts.convention.package.locators.disable" value="false" />
      <constant name="struts.convention.package.locators.basePackage" value="com.mcms.web.actions" />

      5. deploy *.war file to jboss, then start it.
      The war package deployed without any error, but no struts actions will be found(either use package scan or annotation)

      1. screenshot-invalid.png
        19 kB
        Karel Piwko
      2. ASF.LICENSE.NOT.GRANTED--screenshot-1.jpg
        20 kB
        Lukasz Lenart
      3. struts2-annon.zip
        21 kB
        Karel Piwko
      4. xwork-core-2.2.3.1-temporarily-resolved.jar
        610 kB
        lwen.ma
      5. URLUtil.java
        4 kB
        Sreekanth S Nair
      6. JBoss7Fix-2.patch
        7 kB
        Rob Juurlink
      7. xwork-core-2.2.1.2-SNAPSHOT.jar
        1.12 MB
        Rob Juurlink
      8. JBoss7Fix.patch
        8 kB
        Rob Juurlink

        Issue Links

          Activity

          Hide
          lwen.ma added a comment -

          I deploy war file to

          {jboss_home}

          \standalone\deployments

          Show
          lwen.ma added a comment - I deploy war file to {jboss_home} \standalone\deployments
          Hide
          Rob Juurlink added a comment - - edited

          I'm running into this same issue with JBoss7.
          Working on a fix for XWork right now.

          The problem is in org.apache.struts2.convention.PackageBasedActionConfigBuilder#buildUrlSet(). This method returns URLs of type vfs. vfs URLs do not reflect real locations, that is the cause of the File Not Found Exception.

          Show
          Rob Juurlink added a comment - - edited I'm running into this same issue with JBoss7. Working on a fix for XWork right now. The problem is in org.apache.struts2.convention.PackageBasedActionConfigBuilder#buildUrlSet(). This method returns URLs of type vfs. vfs URLs do not reflect real locations, that is the cause of the File Not Found Exception.
          Hide
          Rob Juurlink added a comment -

          Patch to fix convention plugin for JBoss 7.

          Added new utility method to convert JBoss's vfs URL to physical URL.

          Show
          Rob Juurlink added a comment - Patch to fix convention plugin for JBoss 7. Added new utility method to convert JBoss's vfs URL to physical URL.
          Hide
          Rob Juurlink added a comment -

          New binary build of xwork-core with fix applied.

          Show
          Rob Juurlink added a comment - New binary build of xwork-core with fix applied.
          Hide
          Rob Juurlink added a comment -

          Updated patch. Removed jboss-vfs.jar dependency, now using introspection.

          Show
          Rob Juurlink added a comment - Updated patch. Removed jboss-vfs.jar dependency, now using introspection.
          Hide
          Jason Pyeron added a comment -

          was reviewing the patch, it failed to apply. Are you working against the latest trunk?

          jpyeron@black /projects/struts/struts2/trunk
          $ svn info
          Path: .
          URL: http://svn.apache.org/repos/asf/struts/struts2/trunk
          Repository Root: http://svn.apache.org/repos/asf
          Repository UUID: 13f79535-47bb-0310-9956-ffa450edef68
          Revision: 1171384
          Node Kind: directory
          Schedule: normal
          Last Changed Author: jogep
          Last Changed Rev: 1161630
          Last Changed Date: 2011-08-25 12:30:49 -0400 (Thu, 25 Aug 2011)

          jpyeron@black /projects/struts/struts2/trunk
          $ patch -p0 --dry-run < JBoss7Fix-2.patch
          patching file xwork-core/src/test/java/com/opensymphony/xwork2/util/URLUtilTest.java
          Hunk #1 succeeded at 161 (offset 16 lines).
          patching file xwork-core/src/main/java/com/opensymphony/xwork2/util/FileManager.java
          patching file xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java
          Hunk #1 FAILED at 15.
          Hunk #2 succeeded at 46 (offset 2 lines).
          Hunk #3 succeeded at 58 (offset 2 lines).
          Hunk #4 FAILED at 69.
          Hunk #5 FAILED at 103.
          3 out of 5 hunks FAILED – saving rejects to file xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java.rej
          patching file xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/UrlSet.java

          Show
          Jason Pyeron added a comment - was reviewing the patch, it failed to apply. Are you working against the latest trunk? jpyeron@black /projects/struts/struts2/trunk $ svn info Path: . URL: http://svn.apache.org/repos/asf/struts/struts2/trunk Repository Root: http://svn.apache.org/repos/asf Repository UUID: 13f79535-47bb-0310-9956-ffa450edef68 Revision: 1171384 Node Kind: directory Schedule: normal Last Changed Author: jogep Last Changed Rev: 1161630 Last Changed Date: 2011-08-25 12:30:49 -0400 (Thu, 25 Aug 2011) jpyeron@black /projects/struts/struts2/trunk $ patch -p0 --dry-run < JBoss7Fix-2.patch patching file xwork-core/src/test/java/com/opensymphony/xwork2/util/URLUtilTest.java Hunk #1 succeeded at 161 (offset 16 lines). patching file xwork-core/src/main/java/com/opensymphony/xwork2/util/FileManager.java patching file xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java Hunk #1 FAILED at 15. Hunk #2 succeeded at 46 (offset 2 lines). Hunk #3 succeeded at 58 (offset 2 lines). Hunk #4 FAILED at 69. Hunk #5 FAILED at 103. 3 out of 5 hunks FAILED – saving rejects to file xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java.rej patching file xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/UrlSet.java
          Hide
          Rob Juurlink added a comment - - edited

          No, the patch is against the STRUTS_2_2_1_1 branch. Sorry for not mentioning.

          BTW the patch is still very rough, but it shows the concept of converting the JBoss vfs URLS to real locations.

          Show
          Rob Juurlink added a comment - - edited No, the patch is against the STRUTS_2_2_1_1 branch. Sorry for not mentioning. BTW the patch is still very rough, but it shows the concept of converting the JBoss vfs URLS to real locations.
          Hide
          Jason Pyeron added a comment -

          I am going to clean it up and put it against trunk.

          I am also going to recommend that the protocol handler be more of a plug in style. This will allow others to "fix" with out having to modify the struts source.

          Show
          Jason Pyeron added a comment - I am going to clean it up and put it against trunk. I am also going to recommend that the protocol handler be more of a plug in style. This will allow others to "fix" with out having to modify the struts source.
          Hide
          Jason Pyeron added a comment -

          bump. Still working on it, got pulled away last 2 weeks after dealing with protocol handlers (http://www.unicon.net/node/776)

          Show
          Jason Pyeron added a comment - bump. Still working on it, got pulled away last 2 weeks after dealing with protocol handlers ( http://www.unicon.net/node/776 )
          Hide
          Rob Juurlink added a comment -

          +1 Eager to see this fix in the trunk.

          Show
          Rob Juurlink added a comment - +1 Eager to see this fix in the trunk.
          Hide
          Jason Pyeron added a comment -

          this also has an impact on embeddedjsp and osgi plugins too.

          Show
          Jason Pyeron added a comment - this also has an impact on embeddedjsp and osgi plugins too.
          Hide
          Jason Pyeron added a comment - - edited

          looking for comment on how to load container specific items

          does adding urlHandlers to the short list sound justified? http://struts.apache.org/2.x/docs/webxml.html

                  <init-param>
                  	<description>The comma delimited list of url handlers to load first.</description>
                  	<param-name>urlHandlers</param-name>
                  	<param-value>org.apache.struts2.container.jboss.JBossURLHandler,com.foo.URLHandler,org.example.xyzzy.URLHandler</param-value>
                 	</init-param>
          

          it cannot be done through constants, since they are loaded by the url processing framework.

          using the JDBC approach:

          ===================================================================
          --- core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java    (revision 1177994)
          +++ core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java    (working copy)
          @@ -427,6 +427,7 @@
          
                   try {
                       init_DefaultProperties(); // [1]
          +            init_URLHandlers(); // [1b]
                       init_TraditionalXmlConfigurations(); // [2]
                       init_LegacyStrutsProperties(); // [3]
                       init_CustomConfigurationProviders(); // [5]
          @@ -450,6 +451,33 @@
                   }
               }
          
          +    private void init_URLHandlers()
          +    {
          +        String urlHandlers = initParams.get("urlHandlers");
          +        if (urlHandlers == null)
          +        {
          +            return;
          +        }
          +        String[] handlers = urlHandlers.split("\\s*[,]\\s*");
          +        for (String handler : handlers)
          +        {
          +            if (handler==null || handler.equals("")) continue;
          +            try
          +            {
          +                Class.forName(handler);
          +            }
          +            catch (ClassNotFoundException e)
          +            {
          +                LOG.warn("handler ["+handler+"] not found.", e);
          +            }
          +            catch (Throwable e)
          +            {
          +                LOG.warn("handler ["+handler+"] failed.", e);
          +            }
          +        }
          +
          +    }
          +
          
          Show
          Jason Pyeron added a comment - - edited looking for comment on how to load container specific items does adding urlHandlers to the short list sound justified? http://struts.apache.org/2.x/docs/webxml.html <init-param> <description>The comma delimited list of url handlers to load first.</description> <param-name>urlHandlers</param-name> <param-value>org.apache.struts2.container.jboss.JBossURLHandler,com.foo.URLHandler,org.example.xyzzy.URLHandler</param-value> </init-param> it cannot be done through constants, since they are loaded by the url processing framework. using the JDBC approach: =================================================================== --- core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java (revision 1177994) +++ core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java (working copy) @@ -427,6 +427,7 @@ try { init_DefaultProperties(); // [1] + init_URLHandlers(); // [1b] init_TraditionalXmlConfigurations(); // [2] init_LegacyStrutsProperties(); // [3] init_CustomConfigurationProviders(); // [5] @@ -450,6 +451,33 @@ } } + private void init_URLHandlers() + { + String urlHandlers = initParams.get( "urlHandlers" ); + if (urlHandlers == null ) + { + return ; + } + String [] handlers = urlHandlers.split( "\\s*[,]\\s*" ); + for ( String handler : handlers) + { + if (handler== null || handler.equals("")) continue ; + try + { + Class .forName(handler); + } + catch (ClassNotFoundException e) + { + LOG.warn( "handler [" +handler+ "] not found." , e); + } + catch (Throwable e) + { + LOG.warn( "handler [" +handler+ "] failed." , e); + } + } + + } +
          Hide
          Jason Moser added a comment -

          Is there an expected time when this issue will be resolved?

          Show
          Jason Moser added a comment - Is there an expected time when this issue will be resolved?
          Hide
          Maurizio Cucchiara added a comment -

          I'll take a look this WE.

          Show
          Maurizio Cucchiara added a comment - I'll take a look this WE.
          Hide
          Jason Pyeron added a comment -

          I can give you the code I have so far on this tonight. I am slamming at work right now. If you perfer calling +1 (202) 741-9397.

          It will also address the weblogic issue recently on the mailing list.

          Show
          Jason Pyeron added a comment - I can give you the code I have so far on this tonight. I am slamming at work right now. If you perfer calling +1 (202) 741-9397. It will also address the weblogic issue recently on the mailing list.
          Hide
          Sreekanth S Nair added a comment -

          Any updates on this issue...... Where is gonna change and what is gonna change ?
          Please give us some idea of making Struts 2 + conventional Plugin work with JBoss AS 7.

          Show
          Sreekanth S Nair added a comment - Any updates on this issue...... Where is gonna change and what is gonna change ? Please give us some idea of making Struts 2 + conventional Plugin work with JBoss AS 7.
          Hide
          Sreekanth S Nair added a comment -

          Thanks for your time and effort, i am able to solve this issue in JBoss AS 7 by changing URLUtil.java in xwork-core lib , Please let me know, if you want the patch.

          Show
          Sreekanth S Nair added a comment - Thanks for your time and effort, i am able to solve this issue in JBoss AS 7 by changing URLUtil.java in xwork-core lib , Please let me know, if you want the patch.
          Hide
          Rene Gielen added a comment -

          Of course we would appreciate your patch! Would be great if you could attach it to this issue.

          Show
          Rene Gielen added a comment - Of course we would appreciate your patch! Would be great if you could attach it to this issue.
          Hide
          Sreekanth S Nair added a comment -

          This particular file replaced with the same in xwork-core lib

          Show
          Sreekanth S Nair added a comment - This particular file replaced with the same in xwork-core lib
          Hide
          Sreekanth S Nair added a comment -

          The attached files will solve two issues...
          1) The warnings we are getting wrt reading struts*.xml files
          2) Conventional-Plugin is prob tht mentioned above.

          Thanks
          Srikanth

          Show
          Sreekanth S Nair added a comment - The attached files will solve two issues... 1) The warnings we are getting wrt reading struts*.xml files 2) Conventional-Plugin is prob tht mentioned above. Thanks Srikanth
          Hide
          Maurizio Cucchiara added a comment -

          @Sreekanth
          May I ask you what codebase you used?
          Looks like you are not using the trunk version (maybe 2.2.3?), and your file introduces more or less the same changes already included in trunk.
          I have already tested JBoss7Fix-2.patch which it sounds fine to me.
          So if there are no objection I'm going to apply this.

          Show
          Maurizio Cucchiara added a comment - @Sreekanth May I ask you what codebase you used? Looks like you are not using the trunk version (maybe 2.2.3?), and your file introduces more or less the same changes already included in trunk. I have already tested JBoss7Fix-2.patch which it sounds fine to me. So if there are no objection I'm going to apply this.
          Hide
          lwen.ma added a comment -

          @Maurizio Cucchiara
          Please note that 'jboss-vfs-1.x' and 'jboss-vfs-2.x' which used by jboss4 and jboss 5 declare 'VirtualFile' class in package 'org.jboss.virtual', and doesn't have method 'getPhysicalFile()'.

          Show
          lwen.ma added a comment - @Maurizio Cucchiara Please note that 'jboss-vfs-1.x' and 'jboss-vfs-2.x' which used by jboss4 and jboss 5 declare 'VirtualFile' class in package 'org.jboss.virtual', and doesn't have method 'getPhysicalFile()'.
          Hide
          Sreekanth S Nair added a comment -

          @Maurizio

          I'm using xwork-core-2.2.3.1.jar (which bundled with struts 2.2.3.1) which doesn't worked with JBoss AS7.1.0 Aplha1-SNAPSHOT, The problems got resolved only with my patch. I have no objection, if your changes works fine. All i want is our conventional-plugin have to work with JBoss AS 7 .

          Thanks
          Sreekanth

          Show
          Sreekanth S Nair added a comment - @Maurizio I'm using xwork-core-2.2.3.1.jar (which bundled with struts 2.2.3.1) which doesn't worked with JBoss AS7.1.0 Aplha1-SNAPSHOT, The problems got resolved only with my patch. I have no objection, if your changes works fine. All i want is our conventional-plugin have to work with JBoss AS 7 . Thanks Sreekanth
          Hide
          lwen.ma added a comment -

          @Maurizio, Sreekanth
          I diff the attached file 'URLUtil.java' with codebase xwork-core-2.2.3.1, seems it only change the method 'isJBoss5Url()'. The same changes have been made at https://issues.apache.org/jira/browse/WW-3558.
          JBoss7Fix-2.patch works well will jboss 6 and 7, but not support by jboss 4 and 5, for more detail, see my previous comment.

          Show
          lwen.ma added a comment - @Maurizio, Sreekanth I diff the attached file 'URLUtil.java' with codebase xwork-core-2.2.3.1, seems it only change the method 'isJBoss5Url()'. The same changes have been made at https://issues.apache.org/jira/browse/WW-3558 . JBoss7Fix-2.patch works well will jboss 6 and 7, but not support by jboss 4 and 5, for more detail, see my previous comment.
          Hide
          Sreekanth S Nair added a comment -

          @Iwen
          I haven't compare it with your patch.
          I added two lines of code in URLUtil.java, one is
          declaring <code>public static final String JBOSS_VFSFILE = "vfs";</code>
          second one is adding an additional check in isJboss5Url method <code>JBOSS_VFSFILE.equals(protocol)</code>
          If this or similar code is there in your patch obviously it will work in JBoss AS 7. We are anyway not thinking about backward compatibility, all we need is our conventional plugin have to work with JBoss AS 7 .

          Show
          Sreekanth S Nair added a comment - @Iwen I haven't compare it with your patch. I added two lines of code in URLUtil.java, one is declaring <code>public static final String JBOSS_VFSFILE = "vfs";</code> second one is adding an additional check in isJboss5Url method <code>JBOSS_VFSFILE.equals(protocol)</code> If this or similar code is there in your patch obviously it will work in JBoss AS 7. We are anyway not thinking about backward compatibility, all we need is our conventional plugin have to work with JBoss AS 7 .
          Hide
          lwen.ma added a comment - - edited

          attach file 'xwork-core-2.2.3.1-temporarily-resolved.jar' which temporarily resolve this issue base on xwork-2.2.3.1, source also be inclued in that jar, changes:
          com.opensymphony.xwork2.util.URLUtil.java
          com.opensymphony.xwork2.util.FileManager.java
          com.opensymphony.xwork2.util.finder.UrlSet.java

          Show
          lwen.ma added a comment - - edited attach file 'xwork-core-2.2.3.1-temporarily-resolved.jar' which temporarily resolve this issue base on xwork-2.2.3.1, source also be inclued in that jar, changes: com.opensymphony.xwork2.util.URLUtil.java com.opensymphony.xwork2.util.FileManager.java com.opensymphony.xwork2.util.finder.UrlSet.java
          Hide
          Jason Moser added a comment -

          Any updates on this issue?,
          like is this going to be put in a release anytime soon?

          Show
          Jason Moser added a comment - Any updates on this issue?, like is this going to be put in a release anytime soon?
          Hide
          Lukasz Lenart added a comment -

          @Maurizio I can apply that patch, any objections ?

          Show
          Lukasz Lenart added a comment - @Maurizio I can apply that patch, any objections ?
          Hide
          Maurizio Cucchiara added a comment -

          No objections from my side.
          Go for it, Lukasz (and thank you for taking care).

          Show
          Maurizio Cucchiara added a comment - No objections from my side. Go for it, Lukasz (and thank you for taking care).
          Hide
          Daniel Spasojevic added a comment -

          Hi,

          I am not sure if you have found this while applying patches, but it seems that the patch does not completely fix the problem (at least for WARs deployed inside EARs).

          Under AS 7.1, getPhysicalFile returns a file: protocol URL for WARs that are deployed inside an EAR (e.g. file:/opt/jboss-7.1/standalone/tmp/vfs/deploymentbf6286bf44ddf7db/ear-deployed-war.war-e4ba4d7598ffbb70/), so:

          com.opensymphony.xwork2.util.finder.UrlSet.java
          if ("jar".equals(finalUrl.getProtocol()))
          

          should probably be:

          com.opensymphony.xwork2.util.finder.UrlSet
          if ("jar".equals(finalUrl.getProtocol()) || "file".equals(finalUrl.getProtocol()))
          

          Additionally, ClassFinder only checks for and removes WEB-INF/classes when scanning JARs, so I changed:

          com.opensymphony.xwork2.util.finder.ClassFinder
              private void scanDir(File dir, List<String> classNames, String packageName) {
          ...
                           classNames.add(packageName + name);
          ...
              }
          

          to:

          com.opensymphony.xwork2.util.finder.ClassFinder
              private void scanDir(File dir, List<String> classNames, String packageName) {
          ...
                          // Classes packaged in an exploded .war (e.g. in a VFS file system) should not
                          // have WEB-INF.classes in their package name.
                          classNames.add(StringUtils.removeStart(packageName, "WEB-INF.classes.") + name);
          ...
              }
          

          I made these changes against trunk, and Actions appeared to be found and deployed (if that is the right word) as expected.

          I am not sure why I had to make these changes when others have had success with this patch - JBoss may be configured differently in my environment.

          Thanks to everyone that contributed to the existing patch - it certainly helped.

          Show
          Daniel Spasojevic added a comment - Hi, I am not sure if you have found this while applying patches, but it seems that the patch does not completely fix the problem (at least for WARs deployed inside EARs). Under AS 7.1, getPhysicalFile returns a file: protocol URL for WARs that are deployed inside an EAR (e.g. file:/opt/jboss-7.1/standalone/tmp/vfs/deploymentbf6286bf44ddf7db/ear-deployed-war.war-e4ba4d7598ffbb70/ ), so: com.opensymphony.xwork2.util.finder.UrlSet.java if ( "jar" .equals(finalUrl.getProtocol())) should probably be: com.opensymphony.xwork2.util.finder.UrlSet if ( "jar" .equals(finalUrl.getProtocol()) || "file" .equals(finalUrl.getProtocol())) Additionally, ClassFinder only checks for and removes WEB-INF/classes when scanning JARs, so I changed: com.opensymphony.xwork2.util.finder.ClassFinder private void scanDir(File dir, List< String > classNames, String packageName) { ... classNames.add(packageName + name); ... } to: com.opensymphony.xwork2.util.finder.ClassFinder private void scanDir(File dir, List< String > classNames, String packageName) { ... // Classes packaged in an exploded .war (e.g. in a VFS file system) should not // have WEB-INF.classes in their package name. classNames.add(StringUtils.removeStart(packageName, "WEB-INF.classes." ) + name); ... } I made these changes against trunk, and Actions appeared to be found and deployed (if that is the right word) as expected. I am not sure why I had to make these changes when others have had success with this patch - JBoss may be configured differently in my environment. Thanks to everyone that contributed to the existing patch - it certainly helped.
          Hide
          nick added a comment -

          Hi Daniel,
          What ever you have mentioned, i guess still to be looked. We were also facing the same problem with reading action classes from war files in Jboss AS 7.,
          Jboss AS7 EAR tructure will be like this

          xyz.ear--+ 
                   +-META-INF 
                   +-abc.war( will contain some Action classes) 
                   +-lib-+ 
                         +-abc.jar (will contain some Action classes and struts.xml file) 
                         +-struts2xyz.jar 
          

          before the patch convention plugin even failed to read from abc.jar, after the patch it got resolved.

          but problem still exist in reading Action classes from abc.war.

          FYI : Jboss AS 7 using Modular class loading, so all jar files comes under xyz.ear/lib/ will be in single class loade(Parent class loader) and each war files under xyz.ear\ will be in separate class loader.

          Show
          nick added a comment - Hi Daniel, What ever you have mentioned, i guess still to be looked. We were also facing the same problem with reading action classes from war files in Jboss AS 7., Jboss AS7 EAR tructure will be like this xyz.ear--+ +-META-INF +-abc.war( will contain some Action classes) +-lib-+ +-abc.jar (will contain some Action classes and struts.xml file) +-struts2xyz.jar before the patch convention plugin even failed to read from abc.jar, after the patch it got resolved. but problem still exist in reading Action classes from abc.war. FYI : Jboss AS 7 using Modular class loading, so all jar files comes under xyz.ear/lib/ will be in single class loade(Parent class loader) and each war files under xyz.ear\ will be in separate class loader.
          Hide
          Daniel Spasojevic added a comment -

          Hi Nick,

          Yes, that was the same behaviour that I was experiencing. The problem stems from the .war being exploded during deployment. This means that a File protocol URL is returned instead of a Jar protocol URL. As I mentioned, the ClassFinder knows to remove WEB-INF/classes from Jar protocol URLs, but not from File protocol URLs - hence the change (hack) that I made.

          If you apply the changes that I made (in addition to the patch), then I would expect it to work. I have not tested on 7.0 though, only 7.1.0.Final.

          I am super keen to see this resolved in an official release. If there is anything that I can do to help out, I am more than happy to.

          Show
          Daniel Spasojevic added a comment - Hi Nick, Yes, that was the same behaviour that I was experiencing. The problem stems from the .war being exploded during deployment. This means that a File protocol URL is returned instead of a Jar protocol URL. As I mentioned, the ClassFinder knows to remove WEB-INF/classes from Jar protocol URLs, but not from File protocol URLs - hence the change (hack) that I made. If you apply the changes that I made (in addition to the patch), then I would expect it to work. I have not tested on 7.0 though, only 7.1.0.Final. I am super keen to see this resolved in an official release. If there is anything that I can do to help out, I am more than happy to.
          Hide
          nick added a comment -

          Yeah you are correct, I have tested in JBoss AS 7.1.0 Final release with the hack you have done and its working. Same to you, if any one can take this up will be good to see this fix in next release.

          Show
          nick added a comment - Yeah you are correct, I have tested in JBoss AS 7.1.0 Final release with the hack you have done and its working. Same to you, if any one can take this up will be good to see this fix in next release.
          Hide
          Lukasz Lenart added a comment -

          I'm a bit confused, which patch should I apply ?

          Show
          Lukasz Lenart added a comment - I'm a bit confused, which patch should I apply ?
          Hide
          nick added a comment -

          Hi Lukasz,
          What ever the patch you have already done and released was working perfectly, According to Daniel and me, the patch is still missing logic to read Action classes from *.war files. Daniel have already done some hack (which is mentioned above) to solve this problem. But you can check the integrity of it and apply this too.

          Show
          nick added a comment - Hi Lukasz, What ever the patch you have already done and released was working perfectly, According to Daniel and me, the patch is still missing logic to read Action classes from *.war files. Daniel have already done some hack (which is mentioned above) to solve this problem. But you can check the integrity of it and apply this too.
          Hide
          Lukasz Lenart added a comment -

          Is it possible that you or Daniel prepares a patch with working complete solution ?

          Show
          Lukasz Lenart added a comment - Is it possible that you or Daniel prepares a patch with working complete solution ?
          Hide
          Lukasz Lenart added a comment -

          I did commit the changes, could take the latest build and test it in your environment ?

          Show
          Lukasz Lenart added a comment - I did commit the changes, could take the latest build and test it in your environment ?
          Hide
          Hudson added a comment -

          Integrated in Struts2 #426 (See https://builds.apache.org/job/Struts2/426/)
          WW-3662 - improves support for JBoss server (Revision 1297384)

          Result = SUCCESS
          lukaszlenart :
          Files :

          • /struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/FileManager.java
          • /struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java
          • /struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/ClassFinder.java
          • /struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/UrlSet.java
          • /struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/util/URLUtilTest.java
          Show
          Hudson added a comment - Integrated in Struts2 #426 (See https://builds.apache.org/job/Struts2/426/ ) WW-3662 - improves support for JBoss server (Revision 1297384) Result = SUCCESS lukaszlenart : Files : /struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/FileManager.java /struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/URLUtil.java /struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/ClassFinder.java /struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/UrlSet.java /struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/util/URLUtilTest.java
          Hide
          Lukasz Lenart added a comment -

          I've tested with my simple application (convetion + rest + json) on 7.1.1 and everything works

          Show
          Lukasz Lenart added a comment - I've tested with my simple application (convetion + rest + json) on 7.1.1 and everything works
          Hide
          Karel Piwko added a comment -

          Does not work for me.

          Application with xwork-core 3.3.2-SNAPSHOT (or the one for build #426) deploys fine, however ognl is not able to work on any of the classes:

          Steps to reproduce:
          1/ Compile attached app via: mvn clean package
          2/ Deploy to AS 7.1.1
          3/ Navigate 'register for the drawing'
          4/ Fill anything
          5/ Submit

          Following errors are logged:

          19:54:57,367 INFO  [org.apache.struts.struts2annotations.action.RegisterAction] (http--127.0.0.1-8080-1) In input method of class RegisterAction
          19:55:22,310 WARN  [com.opensymphony.xwork2.ognl.OgnlValueStack] (http--127.0.0.1-8080-1) Error setting expression 'personBean.age' with value '[Ljava.lang.String;@6016a917': ognl.MethodFailedException: Method "setAge" failed for object First Name: null Last Name:  null Email:      null Age:      0 [java.lang.NoSuchMethodException: org.apache.struts.struts2annotations.model.Person.setAge([Ljava.lang.String;)]
                  at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1292) [ognl-3.0.4.jar:]
                  at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1481) [ognl-3.0.4.jar:]
                  at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85) [ognl-3.0.4.jar:]
                  at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162) [ognl-3.0.4.jar:]
                  at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:27) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2318) [ognl-3.0.4.jar:]
                  at ognl.ASTProperty.setValueBody(ASTProperty.java:127) [ognl-3.0.4.jar:]
                  at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220) [ognl-3.0.4.jar:]
                  at ognl.SimpleNode.setValue(SimpleNode.java:301) [ognl-3.0.4.jar:]
                  at ognl.ASTChain.setValueBody(ASTChain.java:227) [ognl-3.0.4.jar:]
                  at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220) [ognl-3.0.4.jar:]
                  at ognl.SimpleNode.setValue(SimpleNode.java:301) [ognl-3.0.4.jar:]
                  at ognl.Ognl.setValue(Ognl.java:737) [ognl-3.0.4.jar:]
                  at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:217) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.ognl.OgnlValueStack.trySetValue(OgnlValueStack.java:186) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:173) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.ognl.OgnlValueStack.setParameter(OgnlValueStack.java:151) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:292) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:203) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:510) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
                  at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
                  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
                  at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_27]
          Caused by: java.lang.NoSuchMethodException: org.apache.struts.struts2annotations.model.Person.setAge([Ljava.lang.String;)
                  at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1233) [ognl-3.0.4.jar:]
                  ... 65 more
          
          19:55:22,350 WARN  [com.opensymphony.xwork2.ognl.OgnlValueStack] (http--127.0.0.1-8080-1) Error setting expression 'personBean.email' with value '[Ljava.lang.String;@6fb75649': ognl.MethodFailedException: Method "setEmail" failed for object First Name: null Last Name:  null Email:      null Age:      0 [java.lang.NoSuchMethodException: org.apache.struts.struts2annotations.model.Person.setEmail([Ljava.lang.String;)]
                  at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1292) [ognl-3.0.4.jar:]
                  at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1481) [ognl-3.0.4.jar:]
                  at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85) [ognl-3.0.4.jar:]
                  at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162) [ognl-3.0.4.jar:]
                  at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:27) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2318) [ognl-3.0.4.jar:]
                  at ognl.ASTProperty.setValueBody(ASTProperty.java:127) [ognl-3.0.4.jar:]
                  at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220) [ognl-3.0.4.jar:]
                  at ognl.SimpleNode.setValue(SimpleNode.java:301) [ognl-3.0.4.jar:]
                  at ognl.ASTChain.setValueBody(ASTChain.java:227) [ognl-3.0.4.jar:]
                  at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220) [ognl-3.0.4.jar:]
                  at ognl.SimpleNode.setValue(SimpleNode.java:301) [ognl-3.0.4.jar:]
                  at ognl.Ognl.setValue(Ognl.java:737) [ognl-3.0.4.jar:]
                  at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:217) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.ognl.OgnlValueStack.trySetValue(OgnlValueStack.java:186) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:173) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.ognl.OgnlValueStack.setParameter(OgnlValueStack.java:151) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:292) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:203) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:510) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
                  at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
                  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
                  at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_27]
          Caused by: java.lang.NoSuchMethodException: org.apache.struts.struts2annotations.model.Person.setEmail([Ljava.lang.String;)
                  at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1233) [ognl-3.0.4.jar:]
                  ... 65 more
          
          19:55:22,375 WARN  [com.opensymphony.xwork2.ognl.OgnlValueStack] (http--127.0.0.1-8080-1) Error setting expression 'personBean.firstName' with value '[Ljava.lang.String;@2af9aaf1': ognl.MethodFailedException: Method "setFirstName" failed for object First Name: null Last Name:  null Email:      null Age:      0 [java.lang.NoSuchMethodException: org.apache.struts.struts2annotations.model.Person.setFirstName([Ljava.lang.String;)]
                  at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1292) [ognl-3.0.4.jar:]
                  at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1481) [ognl-3.0.4.jar:]
                  at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85) [ognl-3.0.4.jar:]
                  at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162) [ognl-3.0.4.jar:]
                  at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:27) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2318) [ognl-3.0.4.jar:]
                  at ognl.ASTProperty.setValueBody(ASTProperty.java:127) [ognl-3.0.4.jar:]
                  at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220) [ognl-3.0.4.jar:]
                  at ognl.SimpleNode.setValue(SimpleNode.java:301) [ognl-3.0.4.jar:]
                  at ognl.ASTChain.setValueBody(ASTChain.java:227) [ognl-3.0.4.jar:]
                  at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220) [ognl-3.0.4.jar:]
                  at ognl.SimpleNode.setValue(SimpleNode.java:301) [ognl-3.0.4.jar:]
                  at ognl.Ognl.setValue(Ognl.java:737) [ognl-3.0.4.jar:]
                  at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:217) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.ognl.OgnlValueStack.trySetValue(OgnlValueStack.java:186) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:173) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.ognl.OgnlValueStack.setParameter(OgnlValueStack.java:151) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:292) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:203) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:510) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
                  at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
                  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
                  at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_27]
          Caused by: java.lang.NoSuchMethodException: org.apache.struts.struts2annotations.model.Person.setFirstName([Ljava.lang.String;)
                  at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1233) [ognl-3.0.4.jar:]
                  ... 65 more
          
          19:55:22,419 WARN  [com.opensymphony.xwork2.ognl.OgnlValueStack] (http--127.0.0.1-8080-1) Error setting expression 'personBean.lastName' with value '[Ljava.lang.String;@6d45ca41': ognl.MethodFailedException: Method "setLastName" failed for object First Name: null Last Name:  null Email:      null Age:      0 [java.lang.NoSuchMethodException: org.apache.struts.struts2annotations.model.Person.setLastName([Ljava.lang.String;)]
                  at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1292) [ognl-3.0.4.jar:]
                  at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1481) [ognl-3.0.4.jar:]
                  at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85) [ognl-3.0.4.jar:]
                  at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162) [ognl-3.0.4.jar:]
                  at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:27) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2318) [ognl-3.0.4.jar:]
                  at ognl.ASTProperty.setValueBody(ASTProperty.java:127) [ognl-3.0.4.jar:]
                  at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220) [ognl-3.0.4.jar:]
                  at ognl.SimpleNode.setValue(SimpleNode.java:301) [ognl-3.0.4.jar:]
                  at ognl.ASTChain.setValueBody(ASTChain.java:227) [ognl-3.0.4.jar:]
                  at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220) [ognl-3.0.4.jar:]
                  at ognl.SimpleNode.setValue(SimpleNode.java:301) [ognl-3.0.4.jar:]
                  at ognl.Ognl.setValue(Ognl.java:737) [ognl-3.0.4.jar:]
                  at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:217) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.ognl.OgnlValueStack.trySetValue(OgnlValueStack.java:186) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:173) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.ognl.OgnlValueStack.setParameter(OgnlValueStack.java:151) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:292) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:203) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT]
                  at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:510) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) [struts2-core-2.3.1.2.jar:2.3.1.2]
                  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
                  at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
                  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
                  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
                  at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_27]
          Caused by: java.lang.NoSuchMethodException: org.apache.struts.struts2annotations.model.Person.setLastName([Ljava.lang.String;)
                  at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1233) [ognl-3.0.4.jar:]
                  ... 65 more
          

          Seems that ognl uses different classloader than convention plugin which is not able to find org.apache.struts.struts2annotations.model.Person. Note that the same happens for org.apache.struts2.config_browser.ShowConfigAction, for instance.

          Show
          Karel Piwko added a comment - Does not work for me. Application with xwork-core 3.3.2-SNAPSHOT (or the one for build #426) deploys fine, however ognl is not able to work on any of the classes: Steps to reproduce: 1/ Compile attached app via: mvn clean package 2/ Deploy to AS 7.1.1 3/ Navigate 'register for the drawing' 4/ Fill anything 5/ Submit Following errors are logged: 19:54:57,367 INFO [org.apache.struts.struts2annotations.action.RegisterAction] (http--127.0.0.1-8080-1) In input method of class RegisterAction 19:55:22,310 WARN [com.opensymphony.xwork2.ognl.OgnlValueStack] (http--127.0.0.1-8080-1) Error setting expression 'personBean.age' with value '[Ljava.lang. String ;@6016a917': ognl.MethodFailedException: Method "setAge" failed for object First Name: null Last Name: null Email: null Age: 0 [java.lang.NoSuchMethodException: org.apache.struts.struts2annotations.model.Person.setAge([Ljava.lang. String ;)] at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1292) [ognl-3.0.4.jar:] at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1481) [ognl-3.0.4.jar:] at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85) [ognl-3.0.4.jar:] at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162) [ognl-3.0.4.jar:] at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:27) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2318) [ognl-3.0.4.jar:] at ognl.ASTProperty.setValueBody(ASTProperty.java:127) [ognl-3.0.4.jar:] at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220) [ognl-3.0.4.jar:] at ognl.SimpleNode.setValue(SimpleNode.java:301) [ognl-3.0.4.jar:] at ognl.ASTChain.setValueBody(ASTChain.java:227) [ognl-3.0.4.jar:] at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220) [ognl-3.0.4.jar:] at ognl.SimpleNode.setValue(SimpleNode.java:301) [ognl-3.0.4.jar:] at ognl.Ognl.setValue(Ognl.java:737) [ognl-3.0.4.jar:] at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:217) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.ognl.OgnlValueStack.trySetValue(OgnlValueStack.java:186) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:173) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.ognl.OgnlValueStack.setParameter(OgnlValueStack.java:151) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:292) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:203) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) [struts2-core-2.3.1.2.jar:2.3.1.2] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90) [struts2-core-2.3.1.2.jar:2.3.1.2] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243) [struts2-core-2.3.1.2.jar:2.3.1.2] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) [struts2-core-2.3.1.2.jar:2.3.1.2] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) [struts2-core-2.3.1.2.jar:2.3.1.2] at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:510) [struts2-core-2.3.1.2.jar:2.3.1.2] at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) [struts2-core-2.3.1.2.jar:2.3.1.2] at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) [struts2-core-2.3.1.2.jar:2.3.1.2] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:] at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:] at java.lang. Thread .run( Thread .java:662) [rt.jar:1.6.0_27] Caused by: java.lang.NoSuchMethodException: org.apache.struts.struts2annotations.model.Person.setAge([Ljava.lang. String ;) at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1233) [ognl-3.0.4.jar:] ... 65 more 19:55:22,350 WARN [com.opensymphony.xwork2.ognl.OgnlValueStack] (http--127.0.0.1-8080-1) Error setting expression 'personBean.email' with value '[Ljava.lang. String ;@6fb75649': ognl.MethodFailedException: Method "setEmail" failed for object First Name: null Last Name: null Email: null Age: 0 [java.lang.NoSuchMethodException: org.apache.struts.struts2annotations.model.Person.setEmail([Ljava.lang. String ;)] at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1292) [ognl-3.0.4.jar:] at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1481) [ognl-3.0.4.jar:] at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85) [ognl-3.0.4.jar:] at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162) [ognl-3.0.4.jar:] at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:27) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2318) [ognl-3.0.4.jar:] at ognl.ASTProperty.setValueBody(ASTProperty.java:127) [ognl-3.0.4.jar:] at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220) [ognl-3.0.4.jar:] at ognl.SimpleNode.setValue(SimpleNode.java:301) [ognl-3.0.4.jar:] at ognl.ASTChain.setValueBody(ASTChain.java:227) [ognl-3.0.4.jar:] at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220) [ognl-3.0.4.jar:] at ognl.SimpleNode.setValue(SimpleNode.java:301) [ognl-3.0.4.jar:] at ognl.Ognl.setValue(Ognl.java:737) [ognl-3.0.4.jar:] at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:217) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.ognl.OgnlValueStack.trySetValue(OgnlValueStack.java:186) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:173) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.ognl.OgnlValueStack.setParameter(OgnlValueStack.java:151) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:292) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:203) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) [struts2-core-2.3.1.2.jar:2.3.1.2] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90) [struts2-core-2.3.1.2.jar:2.3.1.2] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243) [struts2-core-2.3.1.2.jar:2.3.1.2] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) [struts2-core-2.3.1.2.jar:2.3.1.2] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) [struts2-core-2.3.1.2.jar:2.3.1.2] at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:510) [struts2-core-2.3.1.2.jar:2.3.1.2] at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) [struts2-core-2.3.1.2.jar:2.3.1.2] at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) [struts2-core-2.3.1.2.jar:2.3.1.2] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:] at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:] at java.lang. Thread .run( Thread .java:662) [rt.jar:1.6.0_27] Caused by: java.lang.NoSuchMethodException: org.apache.struts.struts2annotations.model.Person.setEmail([Ljava.lang. String ;) at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1233) [ognl-3.0.4.jar:] ... 65 more 19:55:22,375 WARN [com.opensymphony.xwork2.ognl.OgnlValueStack] (http--127.0.0.1-8080-1) Error setting expression 'personBean.firstName' with value '[Ljava.lang. String ;@2af9aaf1': ognl.MethodFailedException: Method "setFirstName" failed for object First Name: null Last Name: null Email: null Age: 0 [java.lang.NoSuchMethodException: org.apache.struts.struts2annotations.model.Person.setFirstName([Ljava.lang. String ;)] at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1292) [ognl-3.0.4.jar:] at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1481) [ognl-3.0.4.jar:] at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85) [ognl-3.0.4.jar:] at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162) [ognl-3.0.4.jar:] at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:27) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2318) [ognl-3.0.4.jar:] at ognl.ASTProperty.setValueBody(ASTProperty.java:127) [ognl-3.0.4.jar:] at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220) [ognl-3.0.4.jar:] at ognl.SimpleNode.setValue(SimpleNode.java:301) [ognl-3.0.4.jar:] at ognl.ASTChain.setValueBody(ASTChain.java:227) [ognl-3.0.4.jar:] at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220) [ognl-3.0.4.jar:] at ognl.SimpleNode.setValue(SimpleNode.java:301) [ognl-3.0.4.jar:] at ognl.Ognl.setValue(Ognl.java:737) [ognl-3.0.4.jar:] at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:217) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.ognl.OgnlValueStack.trySetValue(OgnlValueStack.java:186) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:173) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.ognl.OgnlValueStack.setParameter(OgnlValueStack.java:151) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:292) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:203) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) [struts2-core-2.3.1.2.jar:2.3.1.2] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90) [struts2-core-2.3.1.2.jar:2.3.1.2] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243) [struts2-core-2.3.1.2.jar:2.3.1.2] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) [struts2-core-2.3.1.2.jar:2.3.1.2] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) [struts2-core-2.3.1.2.jar:2.3.1.2] at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:510) [struts2-core-2.3.1.2.jar:2.3.1.2] at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) [struts2-core-2.3.1.2.jar:2.3.1.2] at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) [struts2-core-2.3.1.2.jar:2.3.1.2] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:] at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:] at java.lang. Thread .run( Thread .java:662) [rt.jar:1.6.0_27] Caused by: java.lang.NoSuchMethodException: org.apache.struts.struts2annotations.model.Person.setFirstName([Ljava.lang. String ;) at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1233) [ognl-3.0.4.jar:] ... 65 more 19:55:22,419 WARN [com.opensymphony.xwork2.ognl.OgnlValueStack] (http--127.0.0.1-8080-1) Error setting expression 'personBean.lastName' with value '[Ljava.lang. String ;@6d45ca41': ognl.MethodFailedException: Method "setLastName" failed for object First Name: null Last Name: null Email: null Age: 0 [java.lang.NoSuchMethodException: org.apache.struts.struts2annotations.model.Person.setLastName([Ljava.lang. String ;)] at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1292) [ognl-3.0.4.jar:] at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1481) [ognl-3.0.4.jar:] at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85) [ognl-3.0.4.jar:] at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162) [ognl-3.0.4.jar:] at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:27) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2318) [ognl-3.0.4.jar:] at ognl.ASTProperty.setValueBody(ASTProperty.java:127) [ognl-3.0.4.jar:] at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220) [ognl-3.0.4.jar:] at ognl.SimpleNode.setValue(SimpleNode.java:301) [ognl-3.0.4.jar:] at ognl.ASTChain.setValueBody(ASTChain.java:227) [ognl-3.0.4.jar:] at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220) [ognl-3.0.4.jar:] at ognl.SimpleNode.setValue(SimpleNode.java:301) [ognl-3.0.4.jar:] at ognl.Ognl.setValue(Ognl.java:737) [ognl-3.0.4.jar:] at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:217) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.ognl.OgnlValueStack.trySetValue(OgnlValueStack.java:186) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:173) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.ognl.OgnlValueStack.setParameter(OgnlValueStack.java:151) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:292) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:203) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) [struts2-core-2.3.1.2.jar:2.3.1.2] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90) [struts2-core-2.3.1.2.jar:2.3.1.2] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243) [struts2-core-2.3.1.2.jar:2.3.1.2] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) [struts2-core-2.3.1.2.jar:2.3.1.2] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [xwork-core-2.3.2-20120314.141945-40.jar:2.3.2-SNAPSHOT] at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) [struts2-core-2.3.1.2.jar:2.3.1.2] at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:510) [struts2-core-2.3.1.2.jar:2.3.1.2] at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) [struts2-core-2.3.1.2.jar:2.3.1.2] at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) [struts2-core-2.3.1.2.jar:2.3.1.2] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:] at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:] at java.lang. Thread .run( Thread .java:662) [rt.jar:1.6.0_27] Caused by: java.lang.NoSuchMethodException: org.apache.struts.struts2annotations.model.Person.setLastName([Ljava.lang. String ;) at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1233) [ognl-3.0.4.jar:] ... 65 more Seems that ognl uses different classloader than convention plugin which is not able to find org.apache.struts.struts2annotations.model.Person. Note that the same happens for org.apache.struts2.config_browser.ShowConfigAction, for instance.
          Hide
          Karel Piwko added a comment -
          Show
          Karel Piwko added a comment - Attaching simple application as Maven Project. Based on http://code.google.com/p/struts2-examples/downloads/detail?name=Struts2_Annotations_Mvn_2_2_1.zip&can=2&q=
          Hide
          Lukasz Lenart added a comment - - edited

          It works like a charm, I had to remove RegisterActionTest as there is a bug in StrutsTestCase. I even filled some strings into field Age and got the exception as above but it means you cannot put string into int variable But on the user side there is a nice error message, see the attachment - screenshot-1.jpg.

          Show
          Lukasz Lenart added a comment - - edited It works like a charm, I had to remove RegisterActionTest as there is a bug in StrutsTestCase. I even filled some strings into field Age and got the exception as above but it means you cannot put string into int variable But on the user side there is a nice error message, see the attachment - screenshot-1.jpg.
          Hide
          Karel Piwko added a comment -

          Lukasz, is there some extra configuration you have to add into the example I posted? Or you have a different one?

          Attaching screenshot for AS 7.0.2, 7.1.0 and 7.1.1.

          Note that string/int conversion is exception clear, however the same exception is fired for string/string conversion: for instance for setEmail(String) method

          Show
          Karel Piwko added a comment - Lukasz, is there some extra configuration you have to add into the example I posted? Or you have a different one? Attaching screenshot for AS 7.0.2, 7.1.0 and 7.1.1. Note that string/int conversion is exception clear, however the same exception is fired for string/string conversion: for instance for setEmail(String) method
          Hide
          Lukasz Lenart added a comment -

          Remove RegisterActionTest and Javassist dependency from pom.xml

          Show
          Lukasz Lenart added a comment - Remove RegisterActionTest and Javassist dependency from pom.xml
          Hide
          Lukasz Lenart added a comment -

          Javassist is part of OGNL again, as from 2.2.3 - WW-3544

          Show
          Lukasz Lenart added a comment - Javassist is part of OGNL again, as from 2.2.3 - WW-3544
          Hide
          Karel Piwko added a comment -

          Hi Lukasz,

          I verified the modifications you suggested to me work with Struts 2.2.3.1 and https://issues.apache.org/jira/secure/attachment/12506377/xwork-core-2.2.3.1-temporarily-resolved.jar. I also verified that it works when everything is updated to Struts 2.3.2-SNAPSHOT using https://repository.apache.org/content/groups/snapshots-group/.

          The problem I had was caused by combining xwork-core 2.3.2-SNAPSHOT with struts-* 2.3.1.2 dependencies.

          Thanks!

          Show
          Karel Piwko added a comment - Hi Lukasz, I verified the modifications you suggested to me work with Struts 2.2.3.1 and https://issues.apache.org/jira/secure/attachment/12506377/xwork-core-2.2.3.1-temporarily-resolved.jar . I also verified that it works when everything is updated to Struts 2.3.2-SNAPSHOT using https://repository.apache.org/content/groups/snapshots-group/ . The problem I had was caused by combining xwork-core 2.3.2-SNAPSHOT with struts-* 2.3.1.2 dependencies. Thanks!
          Hide
          Lukasz Lenart added a comment -

          Nice, so I can close ?

          Show
          Lukasz Lenart added a comment - Nice, so I can close ?
          Hide
          Karel Piwko added a comment -

          Sure.

          Show
          Karel Piwko added a comment - Sure.

            People

            • Assignee:
              Lukasz Lenart
              Reporter:
              lwen.ma
            • Votes:
              8 Vote for this issue
              Watchers:
              13 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development