1

如果我使用 App Engine maven 插件启动我的本地谷歌应用引擎开发服务器:

mvn appengine:devserver

我尝试启动一个 mapreduce 作业(使用 appengine-mapreduce 库),我得到一个 java.security.AccessControlException: access denied ("javax.security.auth.AuthPermission" "getSubject") 因为代码尝试调用 javax。 security.auth.Subject.getSubject() 方法(参见下面的完整堆栈跟踪)

这很奇怪,因为:

1)javax.security.auth.Subject.getSubject()在gae的白名单中,可以调用

2)如果我从intellij启动服务器,我没有得到这个异常并且map reduce作业启动成功

我尝试使用 GAE 1.8.1、1.8.2 和最新的 1.8.3 以及 maven google appengine 插件的相同版本。

出了什么问题?

完整的堆栈跟踪:[INFO] java.security.AccessControlException: access denied ("javax.security.auth.AuthPermission" "getSubject") [INFO] at java.security.AccessControlContext.checkPermission(AccessControlContext.java:366) [INFO ] 在 java.security.AccessController.checkPermission(AccessController.java:560) [INFO] 在 java.lang.SecurityManager.checkPermission(SecurityManager.java:549) [INFO] 在 com.google.appengine.tools.development.DevAppServerFactory$ CustomSecurityManager.checkPermission(DevAppServerFactory.java:383) [INFO] at javax.security.auth.Subject.getSubject(Subject.java:287) [INFO] at org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java: 467) [INFO] 在 org.apache.hadoop.mapreduce.JobContext.(JobContext.java:80) [INFO] 在 com.google.appengine.tools.mapreduce。AppEngineJobContext.(AppEngineJobContext.java:123) [INFO] at com.google.appengine.tools.mapreduce.AppEngineJobContext.createContextForNewJob(AppEngineJobContext.java:132) [INFO] at com.google.appengine.tools.mapreduce.v2.impl .handlers.Controller.handleStart(Controller.java:85) [INFO] at com.google.appengine.tools.mapreduce.v2.impl.handlers.Status.handleStartJob(Status.java:81) [INFO] at com.google .appengine.tools.mapreduce.v2.impl.handlers.Status.handleCommand(Status.java:182) [INFO] at com.google.appengine.tools.mapreduce.MapReduceServlet.doPost(MapReduceServlet.java:203) [INFO]在 javax.servlet.http.HttpServlet.service(HttpServlet.java:637) [INFO] 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) [INFO] 在 com.google.inject.servlet.ServletDefinition .doService(ServletDefinition.java:263)123) [INFO] com.google.appengine.tools.mapreduce.AppEngineJobContext.createContextForNewJob(AppEngineJobContext.java:132) [INFO] com.google.appengine.tools.mapreduce.v2.impl.handlers.Controller.handleStart( Controller.java:85) [INFO] 在 com.google.appengine.tools.mapreduce.v2.impl.handlers.Status.handleStartJob(Status.java:81) [INFO] 在 com.google.appengine.tools.mapreduce。 v2.impl.handlers.Status.handleCommand(Status.java:182) [INFO] at com.google.appengine.tools.mapreduce.MapReduceServlet.doPost(MapReduceServlet.java:203) [INFO] at javax.servlet.http。 HttpServlet.service(HttpServlet.java:637) [INFO] 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) [INFO] 在 com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java: 263)123) [INFO] com.google.appengine.tools.mapreduce.AppEngineJobContext.createContextForNewJob(AppEngineJobContext.java:132) [INFO] com.google.appengine.tools.mapreduce.v2.impl.handlers.Controller.handleStart( Controller.java:85) [INFO] 在 com.google.appengine.tools.mapreduce.v2.impl.handlers.Status.handleStartJob(Status.java:81) [INFO] 在 com.google.appengine.tools.mapreduce。 v2.impl.handlers.Status.handleCommand(Status.java:182) [INFO] at com.google.appengine.tools.mapreduce.MapReduceServlet.doPost(MapReduceServlet.java:203) [INFO] at javax.servlet.http。 HttpServlet.service(HttpServlet.java:637) [INFO] 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) [INFO] 在 com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java: 263)createContextForNewJob(AppEngineJobContext.java:132) [INFO] 在 com.google.appengine.tools.mapreduce.v2.impl.handlers.Controller.handleStart(Controller.java:85) [INFO] 在 com.google.appengine.tools。 mapreduce.v2.impl.handlers.Status.handleStartJob(Status.java:81) [INFO] at com.google.appengine.tools.mapreduce.v2.impl.handlers.Status.handleCommand(Status.java:182) [INFO ] 在 com.google.appengine.tools.mapreduce.MapReduceServlet.doPost(MapReduceServlet.java:203) [INFO] 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:637) [INFO] 在 javax.servlet。 http.HttpServlet.service(HttpServlet.java:717) [INFO] at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)createContextForNewJob(AppEngineJobContext.java:132) [INFO] 在 com.google.appengine.tools.mapreduce.v2.impl.handlers.Controller.handleStart(Controller.java:85) [INFO] 在 com.google.appengine.tools。 mapreduce.v2.impl.handlers.Status.handleStartJob(Status.java:81) [INFO] at com.google.appengine.tools.mapreduce.v2.impl.handlers.Status.handleCommand(Status.java:182) [INFO ] 在 com.google.appengine.tools.mapreduce.MapReduceServlet.doPost(MapReduceServlet.java:203) [INFO] 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:637) [INFO] 在 javax.servlet。 http.HttpServlet.service(HttpServlet.java:717) [INFO] at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)google.appengine.tools.mapreduce.v2.impl.handlers.Status.handleStartJob(Status.java:81) [INFO] at com.google.appengine.tools.mapreduce.v2.impl.handlers.Status.handleCommand(Status. java:182) [INFO] 在 com.google.appengine.tools.mapreduce.MapReduceServlet.doPost(MapReduceServlet.java:203) [INFO] 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:637) [INFO ] 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) [INFO] 在 com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)google.appengine.tools.mapreduce.v2.impl.handlers.Status.handleStartJob(Status.java:81) [INFO] at com.google.appengine.tools.mapreduce.v2.impl.handlers.Status.handleCommand(Status. java:182) [INFO] 在 com.google.appengine.tools.mapreduce.MapReduceServlet.doPost(MapReduceServlet.java:203) [INFO] 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:637) [INFO ] 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) [INFO] 在 com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)服务(HttpServlet.java:637)[INFO] 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) [INFO] 在 com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)服务(HttpServlet.java:637)[INFO] 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) [INFO] 在 com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)

4

0 回答 0