浏览 3127 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-08-21
首先开发一个Java的POJO,也就是要编译成为存储过程的类,代码如下: public class HttpUrlCaller { public HttpUrlCaller() { } public static final String GET_URL = "http://localhost:7777/ServletTest/test.zte?name=k4&age=48"; private static URLConnection connection; private static void connect(String urlString) { try { URL url = new URL(urlString); connection = url.openConnection(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private static String getContents() { String str = ""; BufferedReader in = null; try { in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) { str += inputLine; } } catch (IOException e) { e.printStackTrace(); } return str; } public static String entry(String url) { connect(url); String result = getContents(); System.out.println(result); return result; } } 如果该POJO用到了第三方类库的话,那么就需要在command窗口模式下使用loadjava/dropjava命令先将第三方类库上传/下载。 好了,完成了编写POJO以后,同样使用loadjava上传该类,并且通过一些命令的参数解析这个类文件,如: loadjava -user <username>/<password>@<service_name> -v -f -r d:/lsy/HttpUrlCaller.java 其中: -v 显示执行过程 -f 强制装载 -r 编译并解析类 转载成功之后,就要将HttpUrlCaller类的entry方法转换为存储过程: CREATE OR REPLACE PROCEDURE myJavaProcedure(url IN VARCHAR2) AUTHID CURRENT_USER AS LANGUAGE JAVA NAME 'HttpUrlCaller.entry(java.lang.String)' 这时候就全部成功了,可以使用call myJavaProcedure('url');测试一下。 由于这个例子的代码使用了URLConnection 的API所以需要给数据库的登陆用户设置一下权限,否则在执行上述操作的时候,很有可能发生下述错误: java.security.AccessControlException: the Permission (java.net.SocketPermission 127.0.0.1:7777 connect,resolve) has not been granted to SISTEMAS. The PL/SQL to grant this is dbms_java.grant_permission( 'apps', 'SYS:java.ne t.SocketPermission', 127.0.0.1:7777', 'connect,resolve' ) 提示信息就是说apps的用户没有权限,可以使用sys用户授权,执行: exec dbms_java.grant_permission( 'apps', 'SYS:java.net.SocketPermission', '127.0.0.1:7777', 'connect,resolve' ) 如果还有关于权限的问题,可以尝试着执行下列命令: exec dbms_java.grant_permission('apps','java.util.PropertyPermission','*','*'); exec dbms_java.grant_permission('apps','java.io.SerializablePermission','*','*'); exec dbms_java.grant_permission('apps','java.io.FilePermission','*','*'); exec dbms_java.grant_permission('apps','java.net.NetPermission','*','*'); exec dbms_java.grant_permission('apps','java.net.SocketPermission','*','*'); exec dbms_java.grant_permission('apps','java.lang.RuntimePermission','*','*'); exec dbms_java.grant_permission('apps','java.lang.reflect.ReflectPermission','*','*'); exec dbms_java.grant_permission('apps','java.security.SecurityPermission','*','*'); exec dbms_java.grant_permission('apps','oracle.aurora.rdbms.security.PolicyTablePermission','*','*'); exec dbms_java.grant_permission('apps','oracle.aurora.security.JServerPermission','*','*'); 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |