나는 자바 개발과 오라클 중 하나에 새로운,하지만 난 배우고있어.자바 정적 메서드 Oracle 함수로 사용
내 문제는 .net에서 dll을 생성하고 MSSqlServer의 사용자 정의 함수로 사용했습니다. 기본적으로이 라이브러리는 SOAP 게이트웨이로 작동하여 GET 및 POST에서 모두 webservice를 호출합니다. 단순히 SELECT를 사용합니다. like이
SELECT *
FROM fn_SoapGateway_MakeWebRequest
(
'GET', -- Method
'https://fish.go-moo.it', -- Url
'/foo/bar?method=info', -- Path
'' -- XML Envelope
)
지금, 나는 Oracle을 위해 Java를 사용하면서 같은 일을하고 싶습니다. 모든 것을 볼 단지 문자열을 반환 -
1) 공공 statis 문자열 GetData의() < : 테스트 목적으로 , 나는 클래스 두 개의 정적 메서드를 공개한다 "SoapGateway"를 생성 좋은 일을 ..
2) 공공 정적 문자열 MakeWebRequest (문자열 이름, 문자열 암호, 문자열 방법, 문자열 URL, 문자열 경로, 문자열 봉투) < - m akes 웹 서비스에 대한 호출
두 번째 단계는 Oracle Java 컴파일러로 모든 것을 컴파일하므로 java 버전 : done!
이제 세 번째 단계 :이
CREATE OR 언어 자바 이름으로 기능 fn_SoapGateway_GetData RETURN VARCHAR2 교체 'SoapGateway.GetData() 반환 자바와 같은 간단한 코드로 자바 클래스에 오라클 기능을 결합. lang.String '; COMMIT;
마지막으로는 샤름 등이
SELECT MY_SCHEMA.fn_SoapGateway_GetData() FROM DUAL ;
선택
작품으로 간단한 함수 GetData의 테스트! 그리고 그것은 내 사용자 지정 문자열을 반환합니다.
이제 마지막으로 나는 당신이 내 질문을 할 수 있습니다
1)나는 기능 "MakeWebRequest"을 결합하여 오라클의 함수를 만드는 오라클에서 무엇을 작성해야?)
2는 올바른 봉투로 "문자열"을 전송하고 "문자열"을 반환하거나 내가 더 큰 데이터 유형을 사용해야합니까? 그렇다면 어떤 종류의 데이터 유형입니까? 제 코드를 수정하도록 도와 주시겠습니까? 그것은 내가 XML 변수로 응답을 얻기 위해 오라클에서 올바르게 함수를 호출 할 수있는 방법
3)를 작동하면 나는 모든 것을 공유 할 수 있습니까?
많은 분들께 감사드립니다. 내가 뭔가 명확하지 않다면 말해줘!((:
----------------------- UPDATEEEEE ------------------- ----------, 그래서 ..
을
좋아들, 지금은 2.0 단계 ... 난 자바에서 원하는 결과를 얻을 난의 java.sql.Clob을 사용하고 다 잘 보인다 나는 SoapGateway.MakeWebRequest (.....)라고 불리는 이클립스에서 테스트했고, 모든 것이 완벽 해 보였다. 원격 호스트가 Get 메서드에 대해 xml로 응답했다. -> ok
이제, loadjava로 Oracle 서버에 자바 클래스 넣기 - schema bla bla bla -> ok
그런 다음, 엔터프라이즈 관리자에서 컴파일 -> 확인 -> 확인을
그런 다음이
CREATE OR REPLACE FUNCTION fn_SoapGateway_MakeWebRequest(v_username VARCHAR2, v_password VARCHAR2, v_method VARCHAR2, v_url VARCHAR2, v_path VARCHAR2, v_envelope VARCHAR2) RETURN CLOB
AS LANGUAGE JAVA NAME 'SoapGateway.MakeWebRequest_Clob(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String) return java.sql.Clob';
COMMIT;
같은 기능을 만들었습니다!
SELECT MY_SCHEMA.FN_SOAPGATEWAY_MAKEWEBREQUEST
(
'user',
'pass',
'method',
'url',
'path',
'envelope',
) FROM DUAL;
ORA-29532 : Chiamata 자바 terminata causa가 디 un'eccezione 자바 비 ottenuta : java.lang.NullPointerException이 (널 포인터 예외 종료 자바 호출)
그리고 마지막으로는 .. 그것을 호출 -> KO !!
이제 Eclipse에서 charme 및 Oracle과 같은 오류가 발생하는 이유는 무엇입니까? 내가 잘못하고 있니?
정말 고마워요!
L.가
안녕 Rzysia를, 당신의 답장을 보내 주셔서 감사합니다, 나는 오라클 사람에게 물어 후 CLOB을 완벽하게 발견했다. 내 스레드를 업데이트했습니다. 하단 부분을 살펴볼 수 있습니까? 고마워요! (: L. –
안녕하세요, 다른 아이디어는 무엇입니까? –
두 가지 : 1) 오로라 (Oracle DB의 JVM)가 최신 jdk - ex 일 필요는 없습니다. 오라클 11g 거기에 JDK1.5 - 어쩌면 당신의 excepton의 이유가있다 2) 내가 용의자 장소에서 try - catch 블록을 추가하여 디버깅 중입니다 :) 그것은 최선의 방법은 아니지만, 나는 두려워하지만 작동 중입니다;)이 코드는 예외가 발생하는 곳을 찾는 데 도움이됩니다. – rzysia