I'm facing this problem on my struts 2.3.4.1 AppEngine (GAE) project. Seems that struts is trying to reload server and it's forbidden by appEngine.
I've googled this issue but only found struts2.1.8 version error fixing changing by struts2.1.6.
web.xml:
<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5">
<display-name>LifeMusic</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>home.jsp</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
libs on WEB-INF/lib:
appengine-api-1.0-sdk-1.7.2.1.jar
appengine-api-labs.jar
appengine-api-labs-1.7.2.1.jar
appengine-endpoints.jar
appengine-jsr107cache-1.7.2.1.jar
commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar
commons-lang3-3.1.jar
datanucleus-appengine-1.0.10.final.jar
datanucleus-core-1.1.5.jar
datanucleus-jpa-1.1.5.jar
freemarker-2.3.19.jar
geronimo-jpa_3.0_spec-1.1.1.jar
geronimo-jta_1.1_spec-1.1.1.jar
gwt-servlet.jar
javassist-3.11.0.GA.jar
jdo2-api-2.3-eb.jar
jsr107cache-1.1.jar
log4j-1.2.15.jar
mail.jar
ognl-3.0.5.jar
struts2-core-2.3.4.1.jar
xwork-core-2.3.4.1.jar
stacktrace error:
java.security.AccessControlException: access denied ("java.io.FilePermission" "jar:file:\G:\Proyectos\LifeMusic\war\WEB-INF\lib\struts2-core-2.3.4.1.jar" "read")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:366)
at java.security.AccessController.checkPermission(AccessController.java:555)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:289)
at java.lang.SecurityManager.checkRead(SecurityManager.java:888)
at java.util.zip.ZipFile.(ZipFile.java:205)
at java.util.zip.ZipFile.(ZipFile.java:144)
at java.util.jar.JarFile.(JarFile.java:152)
at java.util.jar.JarFile.(JarFile.java:89)
at com.opensymphony.xwork2.util.fs.JarEntryRevision.needsReloading(JarEntryRevision.java:36)
at com.opensymphony.xwork2.util.fs.DefaultFileManager.fileNeedsReloading(DefaultFileManager.java:68)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.needsReload(XmlConfigurationProvider.java:346)
at org.apache.struts2.config.StrutsXmlConfigurationProvider.needsReload(StrutsXmlConfigurationProvider.java:169)
at com.opensymphony.xwork2.config.ConfigurationManager.needReloadContainerProviders(ConfigurationManager.java:203)
at com.opensymphony.xwork2.config.ConfigurationManager.conditionalReload(ConfigurationManager.java:177)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:72)
at org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:901)
at org.apache.struts2.dispatcher.ng.PrepareOperations.createActionContext(PrepareOperations.java:78)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:78)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:110)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:61)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:94)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:380)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
I'm facing this problem on my struts 2.3.4.1 AppEngine 1.7.2 (GAE) project. Seems that struts is trying to reload server and it's forbidden by appEngine.
I'm facing this problem on my struts 2.3.4.1 AppEngine 1.7.2 (GAE) project. It seems that struts is trying to reload the server and it's forbidden by appEngine.
java.security.AccessControlException: access denied ("java.io.FilePermission" "jar:file:\G:\Proyectos\LifeMusic\war\WEB-INF\lib\struts2-core-2.3.4.1.jar" "read")<br/>
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:366)<br/>
at java.security.AccessController.checkPermission(AccessController.java:555)<br/>
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)<br/>
at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:289)<br/>
at java.lang.SecurityManager.checkRead(SecurityManager.java:888)<br/>
at java.util.zip.ZipFile.<init>(ZipFile.java:205)<br/>
at java.util.zip.ZipFile.<init>(ZipFile.java:144)<br/>
at java.util.jar.JarFile.<init>(JarFile.java:152)<br/>
at java.util.jar.JarFile.<init>(JarFile.java:89)<br/>
at com.opensymphony.xwork2.util.fs.JarEntryRevision.needsReloading(JarEntryRevision.java:36)<br/>
at com.opensymphony.xwork2.util.fs.DefaultFileManager.fileNeedsReloading(DefaultFileManager.java:68)<br/>
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.needsReload(XmlConfigurationProvider.java:346)<br/>
at org.apache.struts2.config.StrutsXmlConfigurationProvider.needsReload(StrutsXmlConfigurationProvider.java:169)<br/>
at com.opensymphony.xwork2.config.ConfigurationManager.needReloadContainerProviders(ConfigurationManager.java:203)<br/>
at com.opensymphony.xwork2.config.ConfigurationManager.conditionalReload(ConfigurationManager.java:177)<br/>
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:72)<br/>
at org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:901)<br/>
at org.apache.struts2.dispatcher.ng.PrepareOperations.createActionContext(PrepareOperations.java:78)<br/>
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:78)<br/>
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)<br/>
at com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74)<br/>
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)<br/>
at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:110)<br/>
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)<br/>
at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34)<br/>
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)<br/>
at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:61)<br/>
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)<br/>
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)<br/>
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)<br/>
at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125)<br/>
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)<br/>
at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97)<br/>
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)<br/>
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)<br/>
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)<br/>
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)<br/>
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)<br/>
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)<br/>
at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:94)<br/>
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)<br/>
at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:380)<br/>
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)<br/>
at org.mortbay.jetty.Server.handle(Server.java:326)<br/>
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)<br/>
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)<br/>
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)<br/>
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)<br/>
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)<br/>
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)<br/>
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)<br/>
I've a achieved a working version with this svn repository: http://code.google.com/p/tutorial-struts2/source/checkout
Some fixings needed:
1. Update your AppEngine SDK to 1.7.2 on your project properties
2. Add AcctionSupport to WelcomeUserAction
public class WelcomeUserAction extends ActionSupport
3. Change struts.xml with this version:
<?xml version="1.0" encoding="UTF-8" ?>
<package name="user" extends="struts-default">
<action name="login">
<result>/user/pages/login.jsp</result>
</action>
<action name="welcome" class="com.sample.user.action.WelcomeUserAction">
<result name="SUCCESS">/user/pages/welcome_user.jsp</result>
</action>
</package>
app-engine.xml
<threadsafe>false</threadsafe>
web.xml:
struts2 *.action
I've a achieved a working version modifying with this svn repository: http://code.google.com/p/tutorial-struts2/source/checkout
Some fixings needed:
1. Update your AppEngine SDK to 1.7.2 on your project properties
2. Add AcctionSupport to WelcomeUserAction
public class WelcomeUserAction extends ActionSupport
3. Change struts.xml with this version:
<package name="user" extends="struts-default">
<action name="login">
<result>/user/pages/login.jsp</result>
</action>
<action name="welcome" class="com.sample.user.action.WelcomeUserAction">
<result name="SUCCESS">/user/pages/welcome_user.jsp</result>
</action>
</package>
4. I've changed all action & directories names to lower-case:
login.jsp(action="welcome")
User (directory) -> user
5. app-engine.xml
<threadsafe>false</threadsafe>
6. web.xml:
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
With this works!
Then when add:
log4j-1.2.15.jar
mail.jar
and all my classes to the project (model & dao basiclly), I get the same error!
Put this properties to false at struts.properties:
struts.configuration.xml.reload=false
struts.devMode = false
struts.i18n.reload=false