分享

在oracle数据库中调用java程序实现socket出现权限问题解决办法

 乱七九糟 2015-04-28

  在使用oracle过程中,有时候需要集成JAVA函数来发送socket包(作为异步处理,一般是是通知类的UDP包,可能对包的安全性有所影响,主要是可能有丢包发生)。在这里主要是处理发生udp包的事件。

  但在调用函数的时候发生错误信息。

  ORA-29532: Java call terminated by uncaught Java exception: java.security.AccessControlException: the Permission (java.net.SocketPermission localhost:10000 listen,resolve) has not been granted to RADIUS. The PL/SQL to grant this is dbms_java.grant_permission( 'RADIUS', 'SYS:java.net.SocketPermission', 'localhost:10000', 'listen,resolve' )
ORA-06512: at "RADIUS.UDP_SEND", line 0
ORA-06512: at "RADIUS.WEB800CALLBACKITEMLIST_INS", line 20
ORA-04088: error during execution of trigger 'RADIUS.WEB800CALLBACKITEMLIST_INS'
ORA-06512: at "RADIUS.SF_CREATE800PHONECALLBACKNEW", line 25
ORA-06512: at line 1

坚决办法是将用户radius权限提升。
解决办法:
1.打开 PL/SQL Develop 登陆数据库使用system管理员账号。
2.打开命令窗口

  sql>exec dbms_java.grant_permission( 'RADIUS', 'SYS:java.net.SocketPermission', 'localhost:10000', 'listen,resolve' );
  sql>commit;
  sql>exec dbms_java.grant_permission( 'RADIUS', 'SYS:java.net.SocketPermission', '192.168.0.123:8056', 'connect,resolve' );

  sql>commit;


  sql>exec dbms_java.grant_permission( 'RADIUS', 'SYS:java.net.SocketPermission', 'localhost:11000', 'listen,resolve' );
  sql>commit;
  sql>exec dbms_java.grant_permission( 'RADIUS', 'SYS:java.net.SocketPermission','192.168.0.123:10010','connect,resolve');

  sql>commit;

 

这里要注意接收包的地址和发送包的地址要进行认证。

 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多