Oacle 실시 간 자바 http 인터페이스 호출

Oacle 실시 간 으로 자바 http 인 터 페 이 스 를 표 에 insert 로 호출 할 때 트리거 는 저장 과정 을 호출 하고 저장 과정 은 자바 http 를 호출 합 니 다.
자바 소스 만 들 기
비고: (plsql 일반 사용자 로그 인하 여 자바 소스 만 들 기) 새 자바 소스, 코드:
create or replace and compile java source named jym as
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

public class JYM {

	public static void sendGet(String url,String title){
		String result ="";
		BufferedReader in = null;
		try{
		String urlName = url+"?title="+title;
		URL realUrl = new URL(urlName);
		URLConnection conn = realUrl.openConnection();
		conn.setRequestProperty("accept", "*/*");
		conn.setRequestProperty("connection", "Keep-Alive");
		conn.connect();
		in= new BufferedReader(new InputStreamReader(conn.getInputStream()));
		String line;
		while((line = in.readLine())!=null){
		result += "/n"+line;
		}
		}catch(Exception e){
		System.out.println("  GET      "+e);
		e.printStackTrace();
		}
		finally{
		try{
		if(in !=null){
		in.close();
		}
		}catch(Exception e){
		e.printStackTrace();
		}
		}
		}
}

저장 프로시저 생 성
반환 값 과 반환 값 이 없 는 방법 은 구체 적 으로 저장 과정 을 만 드 는 방법 코드 를 보 세 요. 다음 과 같 습 니 다.
create or replace procedure lqHttp(ip varchar2,title varchar2)
as language java name
'JYM.sendGet(java.lang.String,java.lang.String)';

생 성 표:
create table message_notion(
 id number(2),
 name varchar2(20),
 title varchar2(20)
)

삽입:
insert into message_notion (id,name,title) values (89,'lihq','test');

트리거 생 성:
create or replace trigger insterMessageNotionAfter
after  insert on message_notion
for each row
begin
lqHttp('http://ip:   /Sp/helloworld',:new.title);
end insterMessageNotionAfter;

비고: ip + 포트 번 호 는 Oacle 이 ip 에 접근 할 수 있어 야 합 니 다. 제 쪽 은 Oacle 단독 서버 입 니 다. 프로젝트 단독 서버 입 니 다. 포트 권한 을 열 어야 합 니 다. 접근 할 수 있 습 니 다.
insert 데이터 하나:
insert into message_notion (id,name,title) values (9,'lihq','test');

인터페이스 에서 데 이 터 를 받 지 못 했 습 니 다. 이것 은 Oacle 이 네트워크 통신 에 접근 하려 면 ACl 제어 권한 을 추가 해 야 하기 때 문 입 니 다.로그 인 이름 을 전환 하고 sys 로 plsql 에 로그 인하 여 ACL 네트워크 권한 을 추가 합 니 다.
BEGIN
    dbms_network_acl_admin.create_acl(acl         => 'lhqhttp.xml',
                                      DESCRIPTION => 'Normal Access',
                                      principal   => 'SCOTT',
                                      is_grant    => TRUE,
                                      PRIVILEGE   => 'connect',
                                      start_date  => NULL,
                                      end_date    => NULL);
END;

principal: 사용자 이름, 자바 source 와 트리거 를 추가 한 사용자 이름
우 리 는 Markdown 편집기 에 대해 기능 확장 과 문법 지원 을 실 시 했 습 니 다. 표준 Markdown 편집기 기능 을 제외 하고 우 리 는 다음 과 같은 몇 가지 새로운 기능 을 추가 하여 블 로 그 를 쓸 수 있 도록 도 왔 습 니 다: isgrant: 권한 표시
begin  dbms_network_acl_admin.add_privilege(acl     => 'lhqhttp.xml',
                                         principal  => 'SCOTT',
                                         is_grant   => TRUE,
                                         privilege  => 'connect',
                                         start_date => null,
                                         end_date   => null);
end;
begin
    dbms_network_acl_admin.assign_acl(acl        => 'lhqhttp.xml',
                                      host       => '120.78.212.39',
                                      lower_port => 80,
                                      upper_port => NULL);
end;

이 세 단 계 를 실행 한 후, ACl 제어 권한 을 봅 니 다.
SELECT any_path
	FROM resource_view 
where any_path  like '/sys/acls/%.xml';

SELECT  acl,
       principal,
       privilege,
       is_grant,
       TO_CHAR(start_date, 'DD-MON-YYYY') AS start_date,
       TO_CHAR(end_date, 'DD-MON-YYYY') AS end_date
  FROM dba_network_acl_privileges;

SCOTT 사용자 로 insert 를 실행 합 니 다.볼 수 있 으 면 정상 입 니 다. 열 리 지 않 으 면 위쪽 insert 데 이 터 를 직접 실행 하여 인터페이스 가 호출 되 었 는 지 확인 할 수 있 습 니 다.ACL 제어 권한 인 터 페 이 스 를 추가 하여 호출 에 성 공 했 지만 sql 조회 권한 은 acl 을 볼 수 없 었 습 니 다. 다시 시작 하지 않 은 이 유 는 아 닌 지 모 르 겠 습 니 다.코드 다운로드 링크: Oacle 과 자바 코드 (포인트 자동 설정 5, 어떻게 된 일 인지 모 르 겠 습 니 다. 필요 한 친 구 는 메 시 지 를 남 길 수 있 습 니 다)

좋은 웹페이지 즐겨찾기