PL/SQL 调用JAVA使用UDP发送数据
步骤如下
1.直接在SQL命令中写入JAVA代码(用SYS帐号执行,不然权限等太麻烦)
create or replace and resolve java source named udp
as
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class udp {
/*
public static void main(String[] args){
udp.send("192.168.0.110","514","java 1.5 send successfully!");
}
*/
public static String send(String ip,String port,String msg){
try{
int int_port=Integer.parseInt(port); //字符转整形
DatagramSocket ds = new DatagramSocket();
DatagramPacket dp = new DatagramPacket(msg.getBytes(), msg.length(), InetAddress.getByName(ip), int_port);
ds.send(dp);
ds.close(); //关闭连接
return "Successfully";
}catch(Exception e){
return "Failed";
}
}
}
-----------------------------------------------------------------------------------
提示:
或者先用JAVAC编译完JAVA代码,再用 loadjava 命令上传
C:\>javac udp.java
/*dbadmin 为数据库管理员权限(普通权限也可以)*/
C:\>loadjava -user dbadmin/password@sid -o -v -f -r c:\udp.class
//此步骤如同使用 create or replace and resolve java source named udp 。。。一样。
------------------------------------------------------------------------------------
2.编写调用JAVA的包或方法
--包头
create or replace package udp is
function send(
p_ip in varchar2,--目标IP地址
p_port in varchar2,--目标端口号
p_msg in varchar2 --发送消息内容
) return varchar2; --成功返回 Successfully,否则返回其他
end udp;
/
--包体
create or replace package body udp is
function send(
p_ip in varchar2,--目标IP地址
p_port in varchar2,--目标端口号
p_msg in varchar2 --发送消息内容
) return varchar2 is
language java name 'udp.send(java.lang.String,java.lang.String,java.lang.String) return java.lang.String';
end udp;
------------------------------------------------------------------
提示:
使用 PLSQL 方法也可以,如下
function send(
p_ip in varchar2,--目标IP地址
p_port in varchar2,--目标端口号
p_msg in varchar2 --发送消息内容
) return varchar2 is
language java name 'udp.send(java.lang.String,java.lang.String,java.lang.String) return java.lang.String';
------------------------------------------------------------------
3.把 udp 包授权给普通用户,普通用户就可以使用了。
在SQL输入命令(使用SYS帐号),如下
GRANT EXECUTE ON udp TO USERNAME;
------------------------------------------------------------------
提示
如果出现网络等错误,可用如下代码解决(用SYS 帐输入,如下代码)
begin
dbms_network_acl_admin.create_acl (
acl => 'UTL_INADDR.xml',
description => 'utl_inaddr',
principal => 'USERNAME', --此为将来要进行操作的用户
is_grant => TRUE,
privilege => 'resolve'
);
commit;
end;
/
begin
dbms_network_acl_admin.add_privilege (
acl => 'UTL_INADDR.xml',
principal => 'USERNAME',
is_grant => true,
privilege => 'connect'
);
commit;
end;
/
begin
dbms_network_acl_admin.assign_acl(
acl => 'UTL_INADDR.xml',
host => '*'
);
commit;
end;
/
exec sys.dbms_java.grant_permission( 'USERNAME', 'SYS:java.net.SocketPermission', '192.168.1.110:514', 'connect,resolve' );
------------------------------------------------------------------
4.使用
declare
l_res varchar2(100);
begin l_res:=udp.send('192.168.0.10','1234','我是将要发送的内容');
if upper(l_res)='SUCCESSFULLY' then
htp.print('发送成功!');
else
htp.print('发送失败!');
end if; end;
---------------------------------------
提示,如果这些代码日后不使用了,可用如下方法删除
1.删除包
drop package udp;
2.删除java
drop java source udp;
如果用 loadjava 上传的,可用
drop java class udp;
或在命令提示符下输入如下代码
dropjava -u dbadmin/password@sid001 udp.class
--------------------------------------
PL/SQL 调用JAVA使用UDP发送数据的更多相关文章
- Java使用UDP发送数据到InfluxDB
最近在做压测引擎相关的开发,需要将聚合数据发送到InfluxDB保存以便实时分析和控制QPS. 下面介绍对InfluxDB的使用. 什么是InfluxDB InfluxDB是一款用Go语言编写的开源分 ...
- oracle PL/SQL调用Java生成Excel
现在有个需求, 要求编写oracle存储过程生成Excel文件到指定目录, 但是oracle自己的API貌似不太给力, 所以只能通过另一种更强大的语言来实现了 ——Java.有一个Java框架 ...
- PL/SQL 调用 JAVA代码
1.直接在 SQL Developer中写入代码 create or replace and compile java source named "HelloWorld" as p ...
- 通过 UDP 发送数据的简单范例
package j2se.core.net.udp; import java.io.IOException;import java.net.DatagramPacket;import java.net ...
- C#调用API向外部程序发送数据
C#调用API向外部程序发送数据 最近有可能要做一个项目.在项目中有这么一个功能,在A程序中调用B程序,同时在A程序中进行登陆后,要将A程序的登录名和密码自动填充到B程序的登陆对话框中,这样B程序就不 ...
- java实现udp发送端和接收端
发送端: package demo02; import java.io.IOException; import java.net.DatagramPacket; import java.net.Dat ...
- PL/SQL导出到execl中,数据前面的0发生丢失的解决办法
ERR出现的场景再现: 使用 PL/SQL导出按钮,选择‘CSV文件’,保存为1.csv,后用execl打开,复制到VuGen中作为login脚本的参数化文件username. ERR及发现过程: 在 ...
- PL/SQL 导入excel表格到oracle数据表
通过使用PL/SQL 批量查询取数时,将excel中的每一列数据复制黏贴进新建的中间表,黏贴时会有贴歪的情况,也就是某些列会从第二第三行开始插入整列,导致数据乱掉,然后好像又不支持批量删除整列数据,所 ...
- PL/SQL简单使用——导入、导出数据表
1.使用PL/SQL导出.导入表 在使用PL/SQL操作oracle数据库时,经常使用的一个操作就是将自己写的数据表导出,或者想把他人的数据表导入到自己的数据库中.虽然是很简单的操作,但自己之前一直出 ...
随机推荐
- 使用WebService发布soap接口,并实现客户端的https验证
什么是https HTTPS其实是有两部分组成:HTTP + SSL / TLS, 也就是在HTTP上又加了一层处理加密信息的模块,并且会进行身份的验证. 如何进行身份验证? 首先我们要明白什么是对称 ...
- 第三章.定制专属的kali
1.更新升级 • apt-get update • apt-get upgrade • apt-get dis-upgrade 2.根据个人喜好需求安装软件包 • 库 • Apt-get命令 • ...
- DataGrid通过DataSet保存为xml文件,并导入
做了个小的DataGrid通过DataSet保存为xml_测试,DataGrid通过DataSet保存为xml_测试,通过dataSet.writeXML()和dataSet.readXML()方法完 ...
- Java 类加载之匿名类和主类相互依赖问题
Qestion /** * ClassInitializedOrder for : Java Classload Order Test * * @author <a href="mai ...
- MYSQL数据库的安装,配置文件,登入
07.13自我总结 MYSQL数据库 一.MYQL数据库的安装 可以去mysql官网下载mysql压缩包 运行程序:在bin文件夹中,其中客户端运行文件是mysql.exe,服务端运行文件为mysql ...
- SpringBoot第二十二篇:应用监控之Actuator
作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/11226397.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言 很多文章都 ...
- 【HDOJ】2007平方和与立方和
Problem Description 给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和. Input 输入数据包含多组测试实例,每组测试实例包含一行,由两个整数m和n组成. ...
- Uncaught ReferenceError: xxx is not defined 解决办法
VM11371:1 Uncaught ReferenceError: inputSize is not defined at <anonymous>:1:1 解决办法(根据需求调整) ...
- MVC WebApi 实现Token验证
基于令牌的认证 我们知道WEB网站的身份验证一般通过session或者cookie完成的,登录成功后客户端发送的任何请求都带上cookie,服务端根据客户端发送来的cookie来识别用户. WEB A ...
- pycharm remote debug
换工作了好久没写blog了,堕落了,哈哈,发现了好的东西分享一下,和以前使用的pycharm的远程debug相比,更为方便,原理同步本地和远程的代码,加载远程的环境运行,使用本地的代码+远程的环境,方 ...