Java 클래스를 아키텍트 요청에 따라 실행중인 Oracle 인스턴스로 컴파일 할 수 없으므로 대안을 찾고 있습니다. 요구 사항은 네트워크의 응용 프로그램 서버에있는 Java 라이브러리를 활용하는 것입니다. PL/SQL에서 다른 머신에있는 Java 메소드를 호출 할 수 있습니까? 나는 this article이 오라클의 외부 절차에 대해 이야기하고 있음을 발견했다. 한편으로는 수천 또는 수백만 건의 호출을 일괄 처리하는 데 사용할 수있을 정도로 성능이 빠르지 않아야합니다.오라클이 다른 머신에서 Java 메소드를 호출합니다.
0
A
답변
1
당신이 할 수있는 최선의 방법은 각 프로세스 또는 메시지 일괄 처리를 얻기 위해 Java 프로세스가 폴링하는 다른 테이블에 항목을 추가하는 것입니다. 오라클은 실제로 메시지 처리를 위해 설계되지 않았습니다.
어쨌든 나는 이것을 전문가로서 어떻게 해야할지 건축가와상의 할 것입니다. ;)
Oracle 시스템이 작업을 수행 할 수없는 경우 Oracle을 사용하지 않는 솔루션이 필요할 수 있습니다.
1.) 우리는 UTL_HTTP를 사용하여 PL/SQL 호출 HTTP를하여 유사한 문제를 해결 한 후 응용 프로그램 서버는 자바 프로 시저를 호출하자
1
당신은 세 가지 옵션이 있습니다. Oracle Database와 Oracle Reports를 인터페이스하기 위해이 작업을 수행했습니다. PL/SQL은 Java를 호출 한 app-server가 수신 한 HTTP 요청을 시작했습니다. Java는 일반 JDBC를 통해 PL/SQL을 호출 할 수 있습니다.
2.) 해당 Java proc를로드하지 못할 수도 있지만 RMI를 사용하여 호출 할 수있는 다른 Java 저장 프로 시저를 만들 수 있습니다.
3) AQ가 또 다른 방법입니다. 기본적으로 AQ를 사용하여 메시지를 대기열에 넣고 App Server에서 JMS를 사용하여 대기열에서 빼낸 다음 사용할 수 있습니다.
옵션 3이 가장 빠르지 만 옵션 1을 시도했지만이 지연 시간은 사용자가 원하지 않는만큼 빠릅니다. 또한 여러 요청을 병렬로 실행하여 일부 병렬 처리를 수행하는 방법을 제공합니다.
감사합니다. 우리는 현재이 문제에 대해 논의하고 있으며 귀하와 비슷한 대안이 있지만 폴링 대신 단계별 스케줄링을 사용합니다. 나는 궁금한데 왜 외부 절차 접근법을 배제 했습니까? – Alex
@Alex 대부분 지난 번 (10 년 전) 사용했기 때문에 실제로 느려졌습니다. 지금은 더 좋을 것 같습니다. –
지금은 더 좋아 보이지만, 외부 프로 시저로 라이브러리를 사용하는 것이 좋지 않은 정도로 통신 속도가 빠를 필요가있는 문제가 여전히 있습니다. –