Java 新的Mongo对象从servlet引发异常

Java 新的Mongo对象从servlet引发异常,java,mongodb,servlets,mlab,mongo-java,Java,Mongodb,Servlets,Mlab,Mongo Java,当我从HttpServlet内部创建一个新的Mongo(--location--,--port#--)时,我得到一个AccessControlException。我不知道为什么。如果我从一个公共静态void main方法内部执行,它工作得很好。有人知道为什么在doPost中实例化对象会抛出异常,并且从psvm运行该异常会使其正常工作吗。我试着从servlet类中提取代码并将其放入助手类中。。。但我还是得到了同样的结果。这是我的密码: Mongo m = new Mongo("dbh75.mong

当我从HttpServlet内部创建一个新的Mongo(--location--,--port#--)时,我得到一个AccessControlException。我不知道为什么。如果我从一个公共静态void main方法内部执行,它工作得很好。有人知道为什么在doPost中实例化对象会抛出异常,并且从psvm运行该异常会使其正常工作吗。我试着从servlet类中提取代码并将其放入助手类中。。。但我还是得到了同样的结果。这是我的密码:

Mongo m = new Mongo("dbh75.mongolab.com",27757);
这是个例外

java.security.AccessControlException: access denied (java.net.SocketPermission dbh75.mongolab.com resolve)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374)
at java.security.AccessController.checkPermission(AccessController.java:546)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:166)
at java.lang.SecurityManager.checkConnect(SecurityManager.java:1031)
at java.net.InetAddress.getAllByName0(InetAddress.java:1145)
at java.net.InetAddress.getAllByName(InetAddress.java:1083)
at java.net.InetAddress.getAllByName(InetAddress.java:1019)
at com.mongodb.ServerAddress._getAddress(ServerAddress.java:223)
at com.mongodb.ServerAddress.<init>(ServerAddress.java:75)
at com.mongodb.Mongo.<init>(Mongo.java:137)
at com.ffftimer.helper.MongoHelper.save(MongoHelper.java:30)
at com.ffftimer.services.workoutBucket.doPost(workoutBucket.java:26)
java.security.AccessControlException:拒绝访问(java.net.SocketPermission dbh75.mongollab.com解析)
位于java.security.AccessControlContext.checkPermission(AccessControlContext.java:374)
在java.security.AccessController.checkPermission(AccessController.java:546)
位于java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
在com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:166)上
位于java.lang.SecurityManager.checkConnect(SecurityManager.java:1031)
位于java.net.InetAddress.getAllByName0(InetAddress.java:1145)
位于java.net.InetAddress.getAllByName(InetAddress.java:1083)
位于java.net.InetAddress.getAllByName(InetAddress.java:1019)
在com.mongodb.ServerAddress.\u getAddress(ServerAddress.java:223)
位于com.mongodb.ServerAddress。(ServerAddress.java:75)
位于com.mongodb.Mongo(Mongo.java:137)
位于com.ffftimer.helper.MongoHelper.save(MongoHelper.java:30)
位于com.ffftimer.services.workoutBucket.doPost(workoutBucket.java:26)

在两种环境中运行相同的代码时,似乎应用了不同的Java安全策略。如果您让web服务器使用与手动运行时相同的JRE,它将正常工作。或者,您可以比较两个JRE的安全策略文件,并相应地修复其中一个?在第三方主机上?例外情况基本上是告诉运行代码的环境不允许解析主机名(您可以尝试指定一个IP地址,但我认为如果已经不允许解析主机名,它不会解决这个问题)。我认为它不允许您打开外部系统的套接字,这是令人沮丧的。不知道他们为什么会那样做。我想遵循@srkavin的建议,但是GAE运行它自己的JRE,我不能让它在不破坏一切的情况下使用窗口的默认设置。我想我要看看能不能找到赫罗库