1

Due to the security issues in Struts 2.3.14.3 we upgraded to Struts 2.3.15.1 today.

But we have a problem, since the struts2-tiles-plugin was updated from version 2.1.4 to 3.0.1 and our server is not working anymore.

The error is:

18.07.2013 16:19:20 org.apache.catalina.core.StandardContext listenerStart
SCHWERWIEGEND: Error configuring application listener of class org.apache.struts2.tiles.StrutsTilesListener
java.lang.NoClassDefFoundError: org/apache/tiles/web/startup/TilesListener
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at de.hybris.tomcat.HybrisWebappClassLoader60.findClassInternal(HybrisWebappClassLoader60.java:2244)
at de.hybris.tomcat.HybrisWebappClassLoader60.findClass(HybrisWebappClassLoader60.java:982)
at de.hybris.tomcat.HybrisWebappClassLoader60.loadClass(HybrisWebappClassLoader60.java:1610)
at de.hybris.tomcat.HybrisWebappClassLoader60.loadClass(HybrisWebappClassLoader60.java:1443)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4078)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
at org.apache.catalina.core.StandardService.start(StandardService.java:519)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:244)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.ClassNotFoundException: org.apache.tiles.web.startup.TilesListener
at de.hybris.tomcat.HybrisWebappClassLoader60.loadClass(HybrisWebappClassLoader60.java:1663)
at de.hybris.tomcat.HybrisWebappClassLoader60.loadClass(HybrisWebappClassLoader60.java:1443)
... 29 more
18.07.2013 16:19:20 org.apache.catalina.core.StandardContext listenerStart
SCHWERWIEGEND: Skipped installing application listeners due to previous error(s)
18.07.2013 16:19:20 org.apache.catalina.core.StandardContext start

Now I am a bit stuck, since this article here: How to integrate Struts 2 with Tiles 3 starts to integrate tiles-extras (why do I need that, exactly) and uses annotations and listeners and whatever. I just wanted to do a quick update of struts and not do an update of tiles as well. Can anyone point me out exactly how to do that? Thanks for any help :)

Community
  • 1
  • 1
ferrari2k
  • 461
  • 1
  • 5
  • 16
  • 1
    Do not use *urgent* in the body and especially in the title of a question... it is a free ticket to the Downvote Festival ;) – Andrea Ligios Jul 18 '13 at 14:55
  • Well, I understand that, but I am just here for another half an hour and we do not want to leave the servers with a vulnerable struts version over night ;) – ferrari2k Jul 18 '13 at 14:57
  • I thought there was a tiles 3 plugin, is that the one you're using? – Dave Newton Jul 18 '13 at 15:13
  • Why do you upgrading tiles if it is not planned? – Roman C Jul 18 '13 at 16:25
  • Just don't upgrade tiles if you don't want to do so. – Aleksandr M Jul 18 '13 at 18:24
  • I think you should be able to stick with tiles2. Tiles 3 does offer some new features that you might find interesting. You can use expressions such as Wildcards, regular expressions and even OGNL. The wildcards/regex can greatly reduce the number of tiles. – Quaternion Jul 19 '13 at 04:23
  • Hi, thanks for the answers! We use tiles, because the struts package does not offer a tiles-servlet in version 2.x anymore but only 3.x. So I thought, that the struts framework "forces" us to use tiles 3, why else wouldn't they ship the 2.x version of that package anymore? – ferrari2k Jul 19 '13 at 05:17
  • OK, I now managed to update to Struts 2.3.15.1 by updating the struts jars and leaving the tiles-servlet jar at the old version 2.1.4. But as I definitely want to upgrade that to the version shipped with the new struts version, I now have some work to do, to upgrade our project to tiles 3 ;) Just keeps me wondering, why exactly do the struts developers force their users to upgrade to a beta version of tiles? Have they ever tried to start a server with the new version? As the TilesListener class is not available any more, that is impossible. A little bit of testing would have been nice ;) – ferrari2k Jul 19 '13 at 07:18
  • There are two plugins: the Tiles plugin [1] and the Tiles 3 [2] plugin - you cannot use both at the same time. [1] http://struts.apache.org/development/2.x/docs/tiles-plugin.html [2] http://struts.apache.org/development/2.x/docs/tiles-3-plugin.html – Lukasz Lenart Jul 23 '13 at 08:49

1 Answers1

-1

We upgraded now only the struts packages and tiles (including the problematic tiles-servlet) to version 2.2.2. The implementation of tiles 3.0.1 in the new struts package is incomplete and cannot be used.

ferrari2k
  • 461
  • 1
  • 5
  • 16