根据我的调查
java.security.AccessControlException:访问被拒绝(“ java.io.FilePermission”“
jar:file: E: eclipse Shaun Convergent war WEB-INF lib
struts2-core-2.3.15.3.jar“”读”)
仅 当尝试在 Windows版 Google App Engine上运行Struts 2应用程序时 才会 发生异常。
在尝试将应用程序移植到GAE时,我在Windows上遇到了相同的问题,但是我无法在GNU /
Linux下重现它,也无法在使用appcfg.sh将其部署到Google服务器时重现–oauth2 update dist / myapp
为了解决在Windows版Google App Engine下运行时的问题, 我发现的唯一可行解决方案是实现
自定义插件/扩展点,该插件/扩展点实现以下接口com.opensymphony.xwork2.FileManager和com.opensymphony.xwork2.FileManagerFactory
在插件内部实现上述接口的类将覆盖Struts
2默认实例化的实现,即DefaultFileManager和DefaultFileManagerFactory
我创建的自定义文件插件具有三个主要组件:
- 该支柱-plugin.xml的文件指定从插件的文件管理和FileManagerFactory执行应被视为默认
- Struts2FileManagerFactoryOnGAE,FileManagerFactory接口的自定义实现,其中与DefaultFileManagerFactory实现唯一不同的是类名
- Struts2FileManagerOnGAE,自定义FileManager实现,在其中进行了必要的更改,即 fileNeedsReloading()方法和internal应该返回false,而support()方法应该返回true。
另外,在应用程序的WEB-INF / web.xml中,我添加了:
<init-param> <param-name>config</param-name> <param-value>struts-default.xml,struts-plugin.xml,struts.xml</param-value> </init-param>
因为我将Ant用作构建系统,所以我为自定义文件插件创建了新目标,该目标将插件的jar编译并复制到最终工件中:https : //gitlab.com/alibitek-java/Struts-
GAE /blob/master/build.xml
您可以在以下位置查看我的测试应用程序的源代码:https : //gitlab.com/alibitek-java/Struts-
GAE/tree/master
如果您想尝试一下,则可以运行:
ant dev_appserver
在build.xml中设置Google App Engine SDK的路径后,或者您可以在此处实时查看它http://struts-
gae.appspot.com/jsp/index.jsp
该应用程序的作用是:您需要猜测所生成的随机数,在尝试几次之后,它将显示一个提示,当您猜测该数字时,它将显示您已经猜测了多少次。



