我有一个连接到另一个localhost服务器所需的GoogleAppEngine应用程序,但是当我尝试从服务器代码执行此操作时,我得到:
java.security.AccessControlException: access denied (java.net.SocketPermission localhost resolve)
我知道我可以使用java虚拟机参数指定我的额外安全授权(我在 Web应用程序运行配置中指定它们):
java -Djava.security.manager -Djava.security.policy=WEB-INF/java.policy
java.policy
内容的:
grant {
permission java.net.SocketPermission "localhost:8081", "connect, resolve";
};
但它会覆盖位于com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager
的私有类中的GoogleAppEngine内部安全管理器,因此以这种方式禁用AppEngine本身所需的属性。
有没有办法让GoogleAppEngine内部安全管理器类使用我的策略文件而不是用jar中的stub(允许任何内容)文件手动替换它?
答案 0 :(得分:2)
您无法在App Engine上打开套接字。您需要通过java.net或直接使用URLFetch API。但是,当您的应用程序上传到App Engine时,您希望如何访问“localhost”?
答案 1 :(得分:0)
如果您特别需要使用jabber(xmpp),则可以使用app引擎的XMPP API。