2012-08-29 5 views
0

Java 클래스를 아키텍트 요청에 따라 실행중인 Oracle 인스턴스로 컴파일 할 수 없으므로 대안을 찾고 있습니다. 요구 사항은 네트워크의 응용 프로그램 서버에있는 Java 라이브러리를 활용하는 것입니다. PL/SQL에서 다른 머신에있는 Java 메소드를 호출 할 수 있습니까? 나는 this article이 오라클의 외부 절차에 대해 이야기하고 있음을 발견했다. 한편으로는 수천 또는 수백만 건의 호출을 일괄 처리하는 데 사용할 수있을 정도로 성능이 빠르지 않아야합니다.오라클이 다른 머신에서 Java 메소드를 호출합니다.

답변

1

당신이 할 수있는 최선의 방법은 각 프로세스 또는 메시지 일괄 처리를 얻기 위해 Java 프로세스가 폴링하는 다른 테이블에 항목을 추가하는 것입니다. 오라클은 실제로 메시지 처리를 위해 설계되지 않았습니다.

어쨌든 나는 이것을 전문가로서 어떻게 해야할지 건축가와상의 할 것입니다. ;)

Oracle 시스템이 작업을 수행 할 수없는 경우 Oracle을 사용하지 않는 솔루션이 필요할 수 있습니다.

1.) 우리는 UTL_HTTP를 사용하여 PL/SQL 호출 HTTP를하여 유사한 문제를 해결 한 후 응용 프로그램 서버는 자바 프로 시저를 호출하자

+0

감사합니다. 우리는 현재이 문제에 대해 논의하고 있으며 귀하와 비슷한 대안이 있지만 폴링 대신 단계별 스케줄링을 사용합니다. 나는 궁금한데 왜 외부 절차 접근법을 배제 했습니까? – Alex

+0

@Alex 대부분 지난 번 (10 년 전) 사용했기 때문에 실제로 느려졌습니다. 지금은 더 좋을 것 같습니다. –

+0

지금은 더 좋아 보이지만, 외부 프로 시저로 라이브러리를 사용하는 것이 좋지 않은 정도로 통신 속도가 빠를 필요가있는 문제가 여전히 있습니다. –

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을 시도했지만이 지연 시간은 사용자가 원하지 않는만큼 빠릅니다. 또한 여러 요청을 병렬로 실행하여 일부 병렬 처리를 수행하는 방법을 제공합니다.

관련 문제