dbms\u java.grant\u每个新会话都需要权限

v2g6jxz6  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(463)

我正在尝试实现java rmi客户机-服务器连接,我在netbeans ide中创建了服务器,在oracle数据库中创建了客户机类作为java存储过程,并通过plsql块中的oracle函数使用它,一切正常,但我遇到了以下小问题:
我在系统用户中编写了这个java存储程序并给出了 dbms_java.grant_permission('SYSTEM','java.net.SocketPermission','192.168.43.25:*','connect,resolve') 对于系统用户,通过sysdba,“*”用于所有可用端口。我从我的服务器得到完美的响应,但直到特定的会话到期。
每当我从系统用户注销并再次登录时,它会再次抛出一个异常 the Permission ("java.net.SocketPermission" "192.168.43.25:56792" "connect,resolve") has not been granted 请指导我怎样才能摆脱这个重复的任务?因为在开发环境中,我将管理它,但是如何在生产环境中部署它,这是一个问题。我的环境是oracledb18cxe,谢谢!
以下是我的java存储过程:

create or replace and compile java source named rmi as
package rmi;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.rmi.Naming;
import java.security.Policy;

 public class RmiClient {

    public RmiClient(){
    }

    public static String getRequestFromClient(){
        Policy.setPolicy(new MyPolicy());
        String result = "";
        try {
            IServer server = getServer();
            result = server.getRequestFromClient();
        } catch (Exception ex) {
            result = ex.getMessage().toString();
        }
        return result;

    }
    private static IServer getServer() throws Exception {
        Parameter configurationParameters = new Parameter();
        IServer server = (IServer) Naming.lookup( configurationParameters.objectName);

        return server;
    }
    }
js81xvg6

js81xvg61#

授予权限 DBMS_JAVA 和一般的Oracle补助有点不同。授予使用权限后 DBMS_JAVA.GRANT_PERMISSION ,您需要 COMMIT 在授予之后的某个时刻,为了使其永久生效,授予已经被执行。注意这里有一个 COMMIT 之后 DBMS_JAVA 调用oracle文档。

相关问题