Oracle PL/SQL의 웹 서비스 사용
우리 애플리케이션은 요즘 많은 웹 서비스와 연동하고 있습니다.몇 년 전 누군가 UTL_HTTP를 사용하여 작성한 자체 패키지가 있으며 일반적으로 작동하지만 특정 시스템에서 작동하려면 SOAP 엔벨로프의 하드코딩이 필요합니다.좀 더 포괄적으로 만들고 싶지만 얼마나 많은 시나리오를 처리해야 하는지 경험이 부족합니다.변경 사항은 선언해야 하는 네임스페이스와 요소의 형식에 있습니다.우리는 몇 개의 매개 변수를 가진 간단한 호출과 인코딩된 문자열에서 많은 양의 데이터를 전달하는 호출을 모두 처리해야 합니다.
10g에 UTL_DBWS가 있는 것으로 알고 있는데, 온라인상에서 사용 사례가 많지 않습니다.일반적으로 사용할 수 있을 정도로 안정적이고 유연합니까?문서화
사용했습니다.UTL_HTTP
간단하면서도 효과가 있습니다.자신의 패키지에 문제가 발생한 경우 인터넷에서 UTL_HTTP를 중심으로 한 여러 래퍼 패키지 중 하나에서 해결책을 찾을 수 있습니다(Google은 "pl/sql에서 웹 서비스를 소비"). 예를 들어 http://www.oracle-base.com/articles/9i/ConsumingWebServices9i.php) 로 안내합니다.
아무도 사용하지 않는 이유UTL_DBWS
기본 설치된 데이터베이스에서는 작동하지 않습니다.수많은 Java 클래스를 데이터베이스에 로드해야 하지만 표준 명령어에 결함이 있는 것 같습니다. 이 프로세스는 Java 오류를 좌우로 생성하여 궁극적으로 실패합니다.이 접근 방식을 효과적으로 만들기 위해 시간을 들여 패키지 의존성을 추적하려는 사람은 거의 없는 것으로 보입니다.
저는 이런 어려움을 겪었고, Sten이 Oracle-Base에서 제안하는 'SOAP API' 패키지를 찾아 설치했습니다.UTL_HTTP 위에 좋은 엔벨로프 생성 기능을 제공합니다.
하지만 당신의 질문과 관련된 몇 가지 제한이 있었습니다.SOAP_API는 모든 요청이 단순 XML, 즉 하나의 계층 태그 계층 구조라고 가정합니다.
SOAP_API 패키지를 확장하여 클라이언트 코드가 추가 태그를 임의로 삽입할 수 있도록 하였습니다.그래서 , 계속해서 요청을 빌드하고 , 닫는 태그를 삽입하는 등의 하위 수준을 삽입할 수 있습니다.
네임스페이스 문제는 프로젝트에 영향을 미쳤습니다. XML의 여러 수준에 따라 네임스페이스가 다릅니다.
내가 사용한 좋은 디버깅 툴은 Pocket Soap의 TCP Trace입니다. www.pocketsoap.com/tcptrace/ 프록시처럼 설정하고 클라이언트와 서버 코드 사이의 HTTP 요청 및 응답 개체를 봅니다.
그럼에도 불구하고, 우리는 데이터베이스에 SOAP 클라이언트가 있는 것을 매우 좋아합니다. 우리는 모든 데이터와 기존의 PLSQL 코드에 완벽하게 접근할 수 있고, 커서를 통해 쉽게 루프하고 필요할 때 SOAP를 통해 외부 앱을 호출할 수 있습니다.많은 맞춤형 Java 또는 를 사용하여 중간 계층을 구축하는 것보다 훨씬 빠르고 쉬웠습니다.NET 코드.행운을 빌어요 그리고 저의 향상된 SOAP API 코드를 보고 싶다면 저에게 알려주세요.
우리는 또한 당신이 설명한 것과 유사한 방식으로 UTL_HTTP를 사용했습니다.UTL_DBWS에 대한 직접적인 경험이 없으므로, 수집할 수 있는 정보/경험을 확인해 주시기 바랍니다.
@kogus, 아니요. 많은 애플리케이션에 적합한 디자인입니다.PL/SQL은 많은 큰 응용 프로그램에 사용되어 온 본격적인 프로그래밍 언어입니다.
이 오래된 게시물을 확인해 보세요.저는 그 게시물의 첫 번째 답변에 동의할 수 밖에 없습니다; 이것이 좋은 디자인이 될 수 있는 시나리오를 상상하기 어렵습니다.
데이터베이스의 테이블과 대화할 수 있는 서비스 또는 독립 실행형 응용프로그램을 작성할 수 없습니까?그러면 그 테이블에 트리거로 원하는 것을 구현할 수 있습니다.
언급URL : https://stackoverflow.com/questions/37586/consuming-web-services-from-oracle-pl-sql
'programing' 카테고리의 다른 글
GUID/UUID 데이터베이스 키의 장단점 (0) | 2023.09.26 |
---|---|
몽고에서 Spring Boot을 사용하여 생 JSON을 저장하는 방법 (0) | 2023.09.26 |
jQuery를 사용하여 테이블의 행을 보기(element.scroll in View)로 스크롤하려면 어떻게 합니까? (0) | 2023.09.26 |
jQuery의 요소 총 너비(패딩 및 테두리 포함) (0) | 2023.09.26 |
Excel 시트의 행 높이를 프로그래밍 방식으로 변경 (0) | 2023.09.26 |