ORACLE中JAVA程序触发HTTP请求

本文介绍了如何在ORACLE 11g中通过JAVA程序实现表数据变动时触发HTTP请求的详细步骤,包括创建JAVA程序、存储过程、触发器及相应的授权设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:数据库中表数据的变动,触发调用某个HTTP接口

步骤1:在ORACLE中创建JAVA程序并编辑(ORACLE 11g ),参数需根据实际需求修改

create or replace and compile java source named  esb.HttpPost as 

import java.io.*;

import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

/**
* Created by wl on 2017/9/19.
*/
public class HttpPost {

public static void doPostStatus(String url,String barcode,String patno,String status) throws Exception {


String data =barcode+"&"+patno+"&"+status;

URL localURL = new URL(url);

URLConnection connection = localURL.openConnection();
HttpURLConnection httpURLConnection = (HttpURLConnection) connection;

httpURLConnection.setDoOutput(true);
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setRequestProperty("Accept-Charset", "utf-8");
httpURLConnection.setRequestProperty("Content-Type", "application/json");
httpURLConnection.setRequestProperty("Content-Length", String.valueOf(data.length()));

OutputStream outputStream = null;
OutputStreamWriter outputStreamWriter = null;
InputStream inputStream = null;
InputStreamReader inputStreamReader = null;
BufferedReader reader = null;
StringBuffer resultBuffer = new StringBuffer();
String tempLine = null;

try {
outputStream = httpURLConnection.getOutputStream();
outputStreamWriter = new OutputStreamWriter(outputStream);

outputStreamWriter.write(data);
outputStreamWriter.flush();

if (httpURLConnection.getResponseCode() >= 300) {
throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());
}

inputStream = httpURLConnection.getInputStream();
inputStreamReader = new InputStreamReader(inputStream);
reader = new BufferedReader(inputStreamReader);

while ((tempLine = reader.readLine()) != null) {
resultBuffer.append(tempLine);
}

} finally {
if (outputStreamWriter != null) {
outputStreamWriter.close();
}

if (outputStream != null) {
outputStream.close();
}

if (reader != null) {
reader.close();
}

if (inputStreamReader != null) {
inputStreamReader.close();
}

if (inputStream != null) {
inputStream.close();
}

}
}
public static void doPostResult(String url,String barcode,String type) throws Exception {


String data=barcode+"&"+type;

URL localURL = new URL(url);

URLConnection connection = localURL.openConnection();
HttpURLConnection httpURLConnection = (HttpURLConnection) connection;

httpURLConnection.setDoOutput(true);
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setRequestProperty("Accept-Charset", "utf-8");
httpURLConnection.setRequestProperty("Content-Type", "application/json");
httpURLConnection.setRequestProperty("Content-Length", String.valueOf(data.length()));

OutputStream outputStream = null;
OutputStreamWriter outputStreamWriter = null;
InputStream inputStream = null;
InputStreamReader inputStreamReader = null;
BufferedReader reader = null;
StringBuffer resultBuffer = new StringBuffer();
String tempLine = null;

try {
outputStream = httpURLConnection.getOutputStream();
outputStreamWriter = new OutputStreamWriter(outputStream);

outputStreamWriter.write(data);
outputStreamWriter.flush();
if (httpURLConnection.getResponseCode() >= 300) {
throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());
}
inputStream = httpURLConnection.getInputStream();
inputStreamReader = new InputStreamReader(inputStream);
reader = new BufferedReader(inputStreamReader);

while ((tempLine = reader.readLine()) != null) {
resultBuffer.append(tempLine);
}

} finally {
if (outputStreamWriter != null) {
outputStreamWriter.close();
}

if (outputStream != null) {
outputStream.close();
}

if (reader != null) {
reader.close();
}

if (inputStreamReader != null) {
inputStreamReader.close();
}

if (inputStream != null) {
inputStream.close();
}

}
}
}

步骤2:创建Oracle数据库存储过程

CREATE OR REPLACE PROCEDURE "用户名"."表名" (url VARCHAR2,barcode VARCHAR2, type VARCHAR2)
AS language java name 'HttpPost.doPostResult(java.lang.String,java.lang.String,java.lang.String)';
/

步骤3:创建触发器

CREATE OR REPLACE TRIGGER "用户名"."名字" AFTER INSERT OR UPDATE OF "CHECKDATE","CHECKTIME" ON "用户名"."表名" REFERENCING OLD AS "OLD" NEW AS "NEW" FOR EACH ROW ENABLE
BEGIN
MZJGRESULT('http://ip:port/uri',:new.barcode,:new.type);
END;

步骤4:ORACLE授权

exec dbms_java.grant_permission( '用户名', 'SYS:java.net.SocketPermission', 'ip:port', 'connect,resolve' );

授权参考文章:
http://hy-zhym.iteye.com/blog/1313039

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值