oracle 调用Java 实现ftp文件的上传和下载 问题

来源:互联网 发布:美工实例教程 编辑:程序博客网 时间:2024/06/04 20:04
 

 对于之前写的一个 oracle 调用Java 代码,实现ftp 文件的上传下载 一篇文章里,里面的操作都是使用 sys oracle系统管理员用户登录的,所以执行任何命令都没有问题,如果是普通用户执行时会出现问题。

执行命令:

SQL> set serveroutput on size 5000;
SQL> call dbms_java.set_output(5000);
 
Method called
 
SQL> select FtpUD_downFileTest() as d from dual;

 

报错如下:

java.security.AccessControlException: the Permission (java.net.SocketPermission 10.254.200.186:21 connect,resolve) has not been granted to HOLLYDM. The PL/SQL to grant this is dbms_java.grant_permission( 'HOLLYDM', 'SYS:java.net.SocketPermission', '10.2
54.200.186:21', 'connect,resolve' )
 at java.security.AccessControlContext.checkPermission(AccessControlContext.java:280)
 at java.security.AccessController.checkPermission(AccessController.java:429)
 at java.lang.SecurityManager.checkPermission(SecurityManager.java:528)
 at oracle.aurora.rdbms.SecurityManagerImpl.checkPermission(SecurityManagerImpl.java:192)
 at java.lang.SecurityManager.checkConnect(SecurityManager.java:1030)
 at java.net.Socket.connect(Socket.java:446)
 at java.net.Socket.connect(Socket.java:402)
 at sun.net.ftp.FtpClient.openPassiveDataConnection(FtpClient.java:316)
 at sun.net.ftp.FtpClient.openDataConnection(FtpClient.java:343)
 at sun.net.ftp.FtpClient.nameList(FtpClient.java:572)
 at FtpUD.getFileList(FTPUD:159)
 at FtpUD.downFileTest(FTPUD:358)

 

初步分析:

1、因为这时用的普通用户登录的,可能没有相关的权限

 

解决:

第一步、使用sys 管理员用户给普通用户分配权限:

我们只要直接执行报错提示给的命令就可以,命令如下:

dbms_java.grant_permission( 'HOLLYDM', 'SYS:java.net.SocketPermission', '10.254.200.186:21', 'connect,resolve' )

第二步、把 JAVASYSPRIV 角色授予给该用户,这样该用户就可以执行 java程序了。

grant JAVASYSPRIV  to user1;//将该角色分配给某用户

 

 如果要删除可以使用:revoke JAVASYSPRIV  from user1; //移除某用户该角色

 

原创粉丝点击