我在Oracle中建了一个java存储过程create or replace and compile java source named javaproc as
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.io.PrintWriter; public class JavaProc {
public static void db_run() {
Socket socket = null;
Connection conn = null;
String sql = null;
Statement stmt = null;
ResultSet rs = null; List list = new ArrayList();
String docno = "";
OutputStream socketOut = null;
try {
conn = DriverManager.getConnection("jdbc:default:connection:");
stmt = conn.createStatement(); try {
socket = new Socket("192.168.1.106", 1234);
socketOut = socket.getOutputStream(); socketOut.write(java.net.URLEncoder.encode("asdfasdf" + "\n","UTF-8").getBytes());
// 接收服务器的反馈
BufferedReader br = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
String msg = null;
while ((msg = br.readLine()) != null) {
System.out.println(msg);
}
socketOut.close();
socket.close();
br.close();
} catch (Exception e) { }
}
rs.close();
} catch (Exception e) {
e.printStackTrace();
} }
}
使用触发器调用存储过程,然后存储过程调用java存储过程向客服端发消息,但是会报如下错误:
java.security.AccessControlException: the Permission (java.net.SocketPermission 192.168.1.106:1234 connect,resolve) has not been granted to DA. The PL/SQL to grant this is dbms_java.grant_permission( 'DA', 'SYS:java.net.SocketPermission', '192.168.1.106:1 234', 'connect,resolve' )有一个办法是使用sys用户给da授权
exec dbms_java.grant_permission( 'DA', 'SYS:java.net.SocketPermission', '192.168.1.106:1234', 'connect,resolve' );
commit;但是这样只能一个ip一个ip的授权,有没有其他办法解决 谢谢
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.io.PrintWriter; public class JavaProc {
public static void db_run() {
Socket socket = null;
Connection conn = null;
String sql = null;
Statement stmt = null;
ResultSet rs = null; List list = new ArrayList();
String docno = "";
OutputStream socketOut = null;
try {
conn = DriverManager.getConnection("jdbc:default:connection:");
stmt = conn.createStatement(); try {
socket = new Socket("192.168.1.106", 1234);
socketOut = socket.getOutputStream(); socketOut.write(java.net.URLEncoder.encode("asdfasdf" + "\n","UTF-8").getBytes());
// 接收服务器的反馈
BufferedReader br = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
String msg = null;
while ((msg = br.readLine()) != null) {
System.out.println(msg);
}
socketOut.close();
socket.close();
br.close();
} catch (Exception e) { }
}
rs.close();
} catch (Exception e) {
e.printStackTrace();
} }
}
使用触发器调用存储过程,然后存储过程调用java存储过程向客服端发消息,但是会报如下错误:
java.security.AccessControlException: the Permission (java.net.SocketPermission 192.168.1.106:1234 connect,resolve) has not been granted to DA. The PL/SQL to grant this is dbms_java.grant_permission( 'DA', 'SYS:java.net.SocketPermission', '192.168.1.106:1 234', 'connect,resolve' )有一个办法是使用sys用户给da授权
exec dbms_java.grant_permission( 'DA', 'SYS:java.net.SocketPermission', '192.168.1.106:1234', 'connect,resolve' );
commit;但是这样只能一个ip一个ip的授权,有没有其他办法解决 谢谢
解决方案 »
- 为什么公开的类在的文件的名字必须和类名相同?
- 线程构造方法thread()和thread(this)的区别在哪里?
- JAVA
- Exception in thread "main" java.lang.NullPointerException
- 请问你们都采用的是什么工具来开发JAVA程序的?jbulid如何?
- 怎样才能知道弹出菜单是在哪个文本框弹出的?
- 用socket通信,传送文件时用DatagramPacket,那个byte[]不能太大,不然就内存不够
- C/S结构???
- jdbc的连接字符串
- 为什么在jbuilder3中编译的部分applet在浏览器中不能运行?
- java初学者求教一个小问题
- 求教:类集、集合类以及容器的区别是什么?
http://publib.boulder.ibm.com/infocenter/adiehelp/v5r1m1/index.jsp?topic=%2Fcom.sun.api.doc%2Fjava%2Fnet%2FSocketPermission.html某人Blog:
http://blog.synyx.de/2011/10/sending-jms-from-oracledb-to-external-activemq-broker/
国内的Blog:
http://tangbo645.iteye.com/blog/218513http://www.csharpwin.net/ddwstp/java/javase/1056dr5048.shtml