如何在 Glassfish 中允许该权限

Posted

技术标签:

【中文标题】如何在 Glassfish 中允许该权限【英文标题】:How to allow that permission in Glassfish 【发布时间】:2012-03-19 17:06:01 【问题描述】:

在我的 Glassfish 服务器上,我最近启用了安全管理器。一旦我这样做了,我使用的neo4j-JCA connector 就停止了工作,抱怨这个异常:

Caused by: java.security.AccessControlException: access denied (java.lang.management.ManagementPermission monitor)
    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 sun.management.ManagementFactory.checkAccess(ManagementFactory.java:223)
    at sun.management.ManagementFactory.checkMonitorAccess(ManagementFactory.java:228)
    at sun.management.RuntimeImpl.getBootClassPath(RuntimeImpl.java:89)
    at org.neo4j.kernel.ConfigurationLogging.logConfig(ConfigurationLogging.java:91)
    at org.neo4j.kernel.GraphDbInstance.start(GraphDbInstance.java:166)
    at org.neo4j.kernel.EmbeddedGraphDbImpl.<init>(EmbeddedGraphDbImpl.java:190)
    at org.neo4j.kernel.EmbeddedGraphDatabase.<init>(EmbeddedGraphDatabase.java:80)
    at com.netoprise.neo4j.Neo4jManagedConnectionFactory.createDatabase(Neo4jManagedConnectionFactory.java:278)
    at com.netoprise.neo4j.Neo4jManagedConnectionFactory.createManagedConnection(Neo4jManagedConnectionFactory.java:154)
    at com.sun.enterprise.resource.allocator.ConnectorAllocator.createResource(ConnectorAllocator.java:160)
    at com.sun.enterprise.resource.pool.ConnectionPool.createSingleResource(ConnectionPool.java:907)
    ... 74 more

我知道我必须在我的 server.policy 中写一些东西,但是什么?我试过了

//Neo4J management permission for logging
grant  codeBase "file:$com.sun.aas.installRoot/neo4j-connector-0.3-SNAPSHOT/-"
      permission java.lang.management.ManagementPermission "monitor";
;

完全没有效果。那么我应该使用什么语法? (注意 neo4j-connector-0.3-SNAPSHOT 是 Neo4J 的 JCA 连接器的名称

【问题讨论】:

【参考方案1】:

尝试将权限放入 JCA 描述符文件 ra.xml。这是example:

        <security-permission>
            <security-permission-spec> permission java.io.FilePermission
                "/tmp/db/fs_store/*", "read,write"; 
            </security-permission-spec>
        </security-permission>

【讨论】:

当 Glassfish 抱怨 ManagementPermission 时添加 FilePermission 是否正常? 这只是一个例子。添加适配器所需的正确权限。

以上是关于如何在 Glassfish 中允许该权限的主要内容,如果未能解决你的问题,请参考以下文章

Chrome,本地页面和插件

我如何在 MySql 中允许外部连接?

在Android Fragment中允许权限导致应用程序崩溃?

在 WebView [Android Studio] [Java] 中允许麦克风访问(权限)

Glassfish 管理控制台可以拥有多个具有特定权限的用户吗?

Glass:如何优雅地退出主菜单