{"id":304017,"date":"2020-05-21T15:01:24","date_gmt":"2020-05-21T15:01:24","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=304017"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=304017","title":{"rendered":"\u0412\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0432 Oracle"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/custis\/blog\/502030\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/bn\/fa\/9y\/bnfa9ydnf9mlh7nubs0t86xfdm4.png\"><\/p>\n<p>  <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%92%D0%B5%D0%B1-%D1%81%D0%BB%D1%83%D0%B6%D0%B1%D0%B0\">\u0412\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u044b<\/a> \u0448\u0438\u0440\u043e\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438 \u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438\u043b\u0438 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438. \u041f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043a\u0430\u043a \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043e\u0431\u0443\u0441\u043b\u043e\u0432\u043b\u0435\u043d\u0430 \u0438\u0445&nbsp;\u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e, \u0430&nbsp;\u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438&nbsp;\u043e\u0442\u043b\u0430\u0434\u043a\u0438. \u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441&nbsp;\u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441&nbsp;\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0438&nbsp;\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 HTTP. \u0412\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0434\u0430\u044e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u043c\u0438 \u043d\u0430&nbsp;\u0440\u0430\u0437\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445. \u041f\u0440\u043e\u0441\u0442\u043e\u0442\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0437\u0430&nbsp;\u0441\u0447\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0432\u043e&nbsp;\u043c\u043d\u043e\u0433\u0438\u0435 IDE \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0438&nbsp;\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0445 \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u0441\u0430\u043c \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441 (provider side), \u0442\u0430\u043a \u0438&nbsp;\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043d\u0430&nbsp;\u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 (client side). \u041e\u0442\u043b\u0430\u0434\u043a\u0443 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0445 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438&nbsp;\u2014 XML \u0438 JSON. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0443\u0442\u0438\u043b\u0438\u0442 \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438&nbsp;\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u0432&nbsp;\u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0433\u043e.<\/p>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438\u0437 \u0421\u0423\u0411\u0414 Oracle, \u0442\u043e&nbsp;\u0435\u0441\u0442\u044c \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435<\/b>                         <\/p>\n<div class=\"spoiler_text\"><a href=\"#Introduction\">\u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f<\/a><br \/>  <a href=\"#NativeOracle\">Native Oracle XML DB Web Services<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#NativeOracleFeatures\">\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#NativeOracleSetup\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#NativeOracleSetup-Step1\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Oracle XML DB HTTP server<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#NativeOracleSetup-Step2\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0447\u0435\u0440\u0435\u0437 HTTP<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#NativeOracleSetup-Step3\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u043b\u0435\u0442\u0430 \u0434\u043b\u044f \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0430<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#NativeOracleSetup-Step4\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Access List (ACL)<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#NativeOracleExample\">\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#NativeOracleSummary\">\u0412\u044b\u0432\u043e\u0434\u044b<\/a><br \/>  <a href=\"#OracleREST\">Oracle REST Data Service<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#OracleRESTFeatures\">\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#OracleRESTSetup\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#OracleRESTSetup-Step1\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#OracleRESTSetup-Step2\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#OracleRESTSetup-Step3\">\u0417\u0430\u043f\u0443\u0441\u043a<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#OracleRESTSetup-Step4\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#OracleRESTExample1\">\u041f\u0440\u0438\u043c\u0435\u0440 1: \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0434\u043b\u044f POST-\u0437\u0430\u043f\u0440\u043e\u0441\u0430<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#OracleRESTExample1-Step1\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0434\u043b\u044f WS<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#OracleRESTExample1-Step2\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0445\u0435\u043c\u044b \u0411\u0414<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#OracleRESTExample1-Step3\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u044f \u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0430<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#OracleRESTExample1-Step4\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u0430<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#OracleRESTExample1-Step5\">\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0437\u043e\u0432\u0430<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#OracleRESTExample1-Step6\">\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437 \u0437\u0430\u043f\u0440\u043e\u0441\u0430<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#OracleRESTExample1-Step7\">CGI-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#OracleRESTExample2\">\u041f\u0440\u0438\u043c\u0435\u0440 2: \u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0447\u0435\u0440\u0435\u0437 ORDS<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#OracleRESTExample2-Step1\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#OracleRESTExample2-Step2\">\u041e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0447\u0435\u0440\u0435\u0437 ORDS<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#OracleRESTExample2-Step3\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#OracleRESTExample2-Step4\">\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#OracleRESTExample2-Step5\">\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#OracleRESTSummary\">\u0412\u044b\u0432\u043e\u0434\u044b<\/a><br \/>  <a href=\"#Alternatives\">\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#JavaServlet\">Java Servlet<\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#DatabaseAccessDescriptor\">Database Access Descriptor (PL\/SQL Servlet)<\/a><br \/>  <a href=\"#Conclusion\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/a><\/div>\n<\/p><\/div>\n<p>  <a name=\"Introduction\"><\/a><\/p>\n<h2>\u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f<\/h2>\n<p>  \u0414\u0430\u043d\u043e: \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0431\u0438\u0437\u043d\u0435\u0441-\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043a\u0440\u0443\u043f\u043d\u043e\u0439 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0435\u0442\u0438 (\u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0442\u044b\u0441\u044f\u0447\u0438 \u0440\u043e\u0437\u043d\u0438\u0447\u043d\u044b\u0445 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u043e\u0432), \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0430\u044f \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0438 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c. \u0412\u043d\u0443\u0442\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440&nbsp;\u2014 \u0411\u0414 Oracle \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u043e\u0439. \u041a\u0430\u0441\u0441\u043e\u0432\u044b\u0435 \u0443\u0437\u043b\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u041f\u041e \u0441\u043e \u0441\u0432\u043e\u0435\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0411\u0414. \u042d\u0442\u043e \u041f\u041e \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441&nbsp;\u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 (\u0447\u0435\u0440\u0435\u0437 WS SOAP) \u0438 \u043e\u0442\u0434\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u0440\u043e\u0434\u0430\u0436\u0438 (\u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0439 \u043e\u0431\u043c\u0435\u043d).<\/p>\n<p>  \u041f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 \u043d\u0435 \u0441\u0442\u043e\u044f\u043b \u043d\u0430 \u043c\u0435\u0441\u0442\u0435, \u0438 \u0432 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430\u0445 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u043d\u043e\u0432\u043e\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435. \u0414\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043f\u0430\u0434\u0430\u0442\u044c \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430 (\u043f\u0435\u0440\u0438\u043e\u0434&nbsp;\u2014 \u043a\u0430\u0436\u0434\u044b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u043d\u0443\u0442), \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441, \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442, \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u0435 \u043d\u0443\u0436\u043d\u0430. \u041c\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u0438, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0441 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u0418 \u043d\u0430\u0447\u0430\u043b\u0438\u0441\u044c \u043f\u043e\u0438\u0441\u043a\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u2026 <\/p>\n<p>  \u0412 \u0438\u0442\u043e\u0433\u0435 \u0431\u044b\u043b\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043a\u0440\u044b\u043b \u0431\u044b \u0434\u043b\u044f \u0411\u0414 Oracle \u043e\u043a\u043d\u043e \u0432 \u043c\u0438\u0440 HTTP: \u0441 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b \u0431\u044b \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441, \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u2014 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0431\u044b \u0441 \u0411\u0414 \u0447\u0435\u0440\u0435\u0437 JDBC. \u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442, \u0432\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0430 \u0442\u044b\u0441\u044f\u0447\u0443 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u043e\u0432, \u0438, \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u0431\u044b \u0435\u0449\u0435 \u043e\u0434\u043d\u043e \u0437\u0432\u0435\u043d\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u0442\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u044b\u043c \u0432\u0441\u0435 \u0436\u0435 \u0431\u044b\u043b \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 Oracle.<\/p>\n<p>  \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u0438\u0441\u043a\u043e\u0432 \u043c\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0438 \u0447\u0435\u0442\u044b\u0440\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435: <\/p>\n<ol>\n<li>Native Oracle XML DB Web Services<\/li>\n<li>Oracle REST Data Service<\/li>\n<li>Java Servlet<\/li>\n<li>Database Access Descriptor (PL\/SQL servlet)<\/li>\n<\/ol>\n<p>  \u041f\u0435\u0440\u0432\u044b\u0435 \u0434\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e. Native Oracle XML DB Web Services \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0432 \u043d\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e, \u0442\u043e \u0435\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u043b\u0441\u044f, \u0442\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043f\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0443. ORDS \u0441\u0442\u0430\u043b \u0437\u0430\u043c\u0435\u043d\u043e\u0439 \u044d\u0442\u043e\u0439 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 (\u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0432\u0441\u0435 \u0436\u0435 \u043f\u043e\u0442\u0440\u0443\u0434\u0438\u0442\u044c\u0441\u044f \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c ORDS \u043d\u0430 \u0442\u044b\u0441\u044f\u0447\u0443 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u043e\u0432).<\/p>\n<p>  \u0414\u0432\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u2014 Java Servlet \u0438 PL\/SQL Servlet \u2014 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0438 \u043d\u0430\u0440\u044f\u0434\u0443 \u0441 ORDS \u043f\u0440\u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b Native Oracle WS, \u043d\u043e \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0435 \u0441\u0442\u0430\u043b\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0442\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043c\u0441\u044f \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0439 \u0441\u043f\u0440\u0430\u0432\u043a\u043e\u0439.<\/p>\n<p>  \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u0441\u0435\u0440\u0432\u0438\u0441.<\/p>\n<p>  <a name=\"NativeOracle\"><\/a><\/p>\n<h2>Native Oracle XML DB Web Services<\/h2>\n<p>  <a name=\"NativeOracleFeatures\"><\/a><\/p>\n<h3>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438<\/h3>\n<p>  \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0411\u0414 Oracle \u0447\u0435\u0440\u0435\u0437 HTTP, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f WS SOAP (\u0432\u0435\u0440\u0441\u0438\u044f 1.1):<\/p>\n<ul>\n<li>\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 SQL- \u0438\u043b\u0438 XQuery-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 SOAP.<\/li>\n<li>\u0412\u044b\u0437\u043e\u0432 \u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440 \u0438\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 (\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0438\u043b\u0438 \u0438\u0437 \u043f\u0430\u043a\u0435\u0442\u0430).<\/li>\n<\/ul>\n<p>  <b>\u041f\u043b\u044e\u0441\u044b<\/b><\/p>\n<ul>\n<li>\u0414\u043b\u044f \u043f\u043e\u0434\u043d\u044f\u0442\u0438\u044f \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u041f\u041e: \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u0443\u0436\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432 \u0421\u0423\u0411\u0414, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 HTTP-\u0441\u0435\u0440\u0432\u0435\u0440.<\/li>\n<li>\u0414\u043b\u044f \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 (WSDL), \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0435\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430, \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441.<\/li>\n<li>\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441. \u041f\u043e \u0441\u0443\u0442\u0438, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u2014 \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430, \u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u2014 \u044d\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0438\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u043f\u0430\u043a\u0435\u0442\u0435.<\/li>\n<li>\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0430\u0440\u0441\u0438\u043d\u0433 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 XML-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u0421 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u044d\u0442\u043e \u043f\u043b\u044e\u0441, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u0443\u043c\u0430\u0442\u044c \u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 XML, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u0430\u0440\u0441\u0435\u0440\u044b \u0438 \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0438\u0445 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u2014 \u0432\u0441\u0435 \u044d\u0442\u043e Oracle \u0434\u0435\u043b\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043a \u044d\u0442\u043e\u0439 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u043a\u0443\u0445\u043d\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f WS-\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432 \u0432\u044b\u0437\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b Oracle \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u2014\u043d\u0438\u043a\u0430\u043a \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u044d\u0442\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b, \u0435\u0441\u043b\u0438 \u0432\u0434\u0440\u0443\u0433 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0447\u0442\u043e-\u0442\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c. <\/li>\n<\/ul>\n<p>  <b>\u041c\u0438\u043d\u0443\u0441\u044b<\/b><\/p>\n<ul>\n<li>\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0439 WSDL \u0438\u043c\u0435\u0435\u0442 \u0440\u044f\u0434 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439, \u0438 \u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432. \u0414\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0435\u0441\u0442\u044c \u043e\u0431\u0445\u043e\u0434\u043d\u043e\u0439 \u043f\u0443\u0442\u044c \u2014 \u0432\u043c\u0435\u0441\u0442\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432\u0440\u0443\u0447\u043d\u0443\u044e WSDL, \u043d\u043e \u0442\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442 WSDL \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044f\u0441\u044c \u043f\u0440\u0430\u0432\u0438\u043b \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432.<\/li>\n<li>\u041c\u043e\u0436\u0435\u0442 \u0432\u0435\u0441\u0442\u0438 \u0441\u0435\u0431\u044f \u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 (\u043f\u043e\u0440\u044f\u0434\u043a\u0430 50 \u041c\u0431). \u0412 \u043b\u0443\u0447\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0432 \u0445\u0443\u0434\u0448\u0435\u043c \u2014 \u043e\u0442\u0434\u0430\u0435\u0442 \u043e\u0442\u0432\u0435\u0442, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u0430 \u0447\u0430\u0441\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u0412\u043e\u043e\u0431\u0449\u0435, \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u2014 \u044d\u0442\u043e \u0441\u043a\u043e\u0440\u0435\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u0447\u0435\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043d\u043e \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u0434\u0441\u0442\u0440\u0430\u0445\u043e\u0432\u0430\u0442\u044c\u0441\u044f.<\/li>\n<\/ul>\n<p>  \u0421\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f (\u0438\u0437 <a href=\"https:\/\/docs.oracle.com\/cd\/B28359_01\/appdev.111\/b28369\/xdb22pro.htm#i1026724\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>: Basic Authentication: Oracle XML DB supports Basic Authentication, where a client sends the user name and password in clear text in the Authorization header). \u0412 Oracle \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 HTTP \u2014 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 <a href=\"https:\/\/docs.oracle.com\/cd\/B28359_01\/appdev.111\/b28369\/xdb22pro.htm#i1026716\">Oracle XML DB Protocol Server<\/a>, \u043d\u043e \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f GET-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0430 \u0434\u043b\u044f POST-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 Native Oracle WS \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 POST-\u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u043d\u0435\u0442.<\/p>\n<p>  <a name=\"NativeOracleSetup\"><\/a><\/p>\n<h3>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430<\/h3>\n<p>  \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b Native Oracle WS \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f: <\/p>\n<ol>\n<li>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0432 Oracle HTTP-\u0441\u0435\u0440\u0432\u0435\u0440.<\/li>\n<li>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0432\u043d\u0443\u0442\u0440\u0438 \u0411\u0414 Oracle (\u043e\u0442\u043a\u0440\u044b\u0442\u044c HTTP-\u043f\u043e\u0440\u0442).<\/li>\n<li>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u043b\u0435\u0442.<\/li>\n<li>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c ACL (Access List).<\/li>\n<\/ol>\n<p>  <a name=\"NativeOracleSetup-Step1\"><\/a><\/p>\n<h4>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Oracle XML DB HTTP server<\/h4>\n<p>  HTTP-\u0441\u0435\u0440\u0432\u0435\u0440 \u0443\u0436\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043d\u043e \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f listener \u2014 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 DESCRIPTION_LIST \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0431\u043b\u043e\u043a\u0430:<\/p>\n<pre><code class=\"sql\">(DESCRIPTION=   (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=8080))(Presentation=HTTP)(Session=RAW) )<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c listener.<\/p>\n<p>  <a name=\"NativeOracleSetup-Step2\"><\/a><\/p>\n<h4>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0447\u0435\u0440\u0435\u0437 HTTP<\/h4>\n<p>  <\/p>\n<ol>\n<li>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u0440\u0442\u0430 \u0434\u043b\u044f HTTP.\n<pre><code class=\"sql\">SELECT dbms_xdb.gethttpport() AS http_port FROM dual;<\/code><\/pre>\n<p>  \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u00ab0\u00bb \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0443\u043f \u0447\u0435\u0440\u0435\u0437 HTTP \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d.<\/li>\n<li>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043e\u0440\u0442\u0430.\n<pre><code class=\"sql\">BEGIN     -- \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043e\u0440\u0442\u0430 \u0434\u043b\u044f web-services     dbms_xdb.setHttpPort(8080);     COMMIT; END; \/<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>  <a name=\"NativeOracleSetup-Step3\"><\/a><\/p>\n<h4>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u043b\u0435\u0442\u0430 \u0434\u043b\u044f \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0430<\/h4>\n<p>  \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0432\u043b\u0435\u0442\u0430 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0411\u0414.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0421\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u043b\u0435\u0442\u0430<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">-- \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u043e\u0434 SYS DECLARE     l_servlet_name      VARCHAR2(32)  := 'orawsv'; BEGIN     -- \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0432\u043b\u0435\u0442\u0430 orawsv \u0434\u043b\u044f \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 Native Web Services     DBMS_XDB.deleteServletMapping(l_servlet_name);     DBMS_XDB.deleteServlet(l_servlet_name);       DBMS_XDB.addServlet( NAME     =&gt; l_servlet_name                        , LANGUAGE =&gt; 'C'                        , DISPNAME =&gt; 'Oracle Query Web Service'                        , DESCRIPT =&gt; 'Servlet for issuing queries as a Web Service'                        , SCHEMA   =&gt; 'XDB');       DBMS_XDB.addServletSecRole( SERVNAME =&gt; l_servlet_name                               , ROLENAME =&gt; 'XDB_WEBSERVICES'                               , ROLELINK =&gt; 'XDB_WEBSERVICES');       DBMS_XDB.addServletMapping( PATTERN =&gt; '\/orawsv\/*'                               , NAME    =&gt; l_servlet_name);     COMMIT; END; \/<\/code><\/pre>\n<\/div><\/div>\n<p>  <a name=\"NativeOracleSetup-Step4\"><\/a><\/p>\n<h4>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Access List<\/h4>\n<p>  \u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a Oracle \u0447\u0435\u0440\u0435\u0437 HTTP \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0421\u0423\u0411\u0414. \u0414\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442 \u0421\u0423\u0411\u0414. <\/p>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 ACL \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f:<\/p>\n<ul>\n<li>c\u043a\u0440\u0438\u043f\u0442, \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0411\u0414 (\u043d\u0438\u0436\u0435);<\/li>\n<li>c\u0445\u0435\u043c\u0430 \u0411\u0414, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430.<\/li>\n<\/ul>\n<p>  \u0422\u043e \u0435\u0441\u0442\u044c \u0441\u0445\u0435\u043c\u0430 \u0411\u0414, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 ACL, \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0443\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0430. \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u043d\u0438\u0436\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u0441\u044b\u043b\u043a\u0438 \u043a \u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0437\u0434\u0435\u043b\u0443, \u0432 \u0442\u0435\u0445 \u043c\u0435\u0441\u0442\u0430\u0445, \u0433\u0434\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0441\u0445\u0435\u043c\u044b \u0411\u0414 \u2014 \u0434\u043b\u044f \u043d\u0438\u0445 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 ACL.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0412 \u0441\u0445\u0435\u043c\u0435 SYS \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 ACL:<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">-- \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u043e\u0434 SYS DECLARE     l_ws_user       VARCHAR2(32)  := 'WS_SOAP_TEST'; -- \u0423\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u043c\u044f \u0441\u0445\u0435\u043c\u044b \u0411\u0414, \u0433\u0434\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 WS     l_acl           VARCHAR2(250) := 'acl_allow_all.xml';     l_tmp           VARCHAR2(250); BEGIN     EXECUTE IMMEDIATE 'GRANT XDB_WEBSERVICES TO &quot;'||l_ws_user||'&quot;';     EXECUTE IMMEDIATE 'GRANT XDB_WEBSERVICES_OVER_HTTP TO &quot;'||l_ws_user||'&quot;';     EXECUTE IMMEDIATE 'GRANT XDB_WEBSERVICES_WITH_PUBLIC TO &quot;'||l_ws_user||'&quot;';       -- \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0438\u0437 PL\/SQL \u043f\u0430\u043a\u0435\u0442\u043e\u0432     BEGIN         dbms_network_acl_admin.drop_acl(acl =&gt; '\/sys\/acls\/'||l_acl);     EXCEPTION         WHEN dbms_network_acl_admin.acl_not_found THEN             NULL;     END;       -- \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 ACL     dbms_network_acl_admin.create_acl( acl         =&gt; l_acl                                      , description =&gt; 'Allow all connections'                                      , is_grant    =&gt; TRUE                                      , start_date  =&gt; SYSTIMESTAMP                                      , end_date    =&gt; NULL                                      , principal   =&gt; 'SYS'                                      , privilege   =&gt; 'connect');       dbms_network_acl_admin.assign_acl( acl        =&gt; l_acl                                      , host       =&gt; '*'                                      , lower_port =&gt; NULL                                      , upper_port =&gt; NULL);       -- \u041f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 (resolve)\u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0438\u043c\u0435\u043d\u0438     dbms_network_acl_admin.add_privilege( acl        =&gt; l_acl                                         , principal  =&gt; l_ws_user                                         , is_grant   =&gt; TRUE                                         , privilege  =&gt; 'resolve'                                         , POSITION   =&gt; NULL                                         , start_date =&gt; SYSTIMESTAMP                                         , end_date   =&gt; NULL);       COMMIT; END; \/<\/code><\/pre>\n<\/div><\/div>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 ACL \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e Native Oracle WS, \u043d\u043e \u0438 \u0432\u0441\u0435\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0445 \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432.<\/p>\n<p>  <a name=\"NativeOracleExample\"><\/a><\/p>\n<h3>\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b<\/h3>\n<p>  \u041d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f:<\/p>\n<ul>\n<li>\u0421\u0445\u0435\u043c\u0430 \u0411\u0414, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0430.<\/li>\n<li>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0434\u043b\u044f \u043b\u043e\u0433\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/li>\n<li>\u041f\u0430\u043a\u0435\u0442 \u0441 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043e\u0439\/\u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439.<\/li>\n<li>\u041b\u044e\u0431\u043e\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u0435\u0431-\u0437\u0430\u043f\u0440\u043e\u0441\u044b. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 <a href=\"https:\/\/www.soapui.org\/%7C\">SOAP UI<\/a>, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e, \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438.<\/li>\n<\/ul>\n<p>  \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438: <\/p>\n<ul>\n<li>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u043c\u0435\u0442\u044c \u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0435, \u043b\u0438\u0431\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0435 \u0442\u0438\u043f\u044b. \u0418\u043d\u0430\u0447\u0435 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043c\u0435\u0442\u043e\u0434 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0441\u0435\u0440\u0432\u0438\u0441\u0430.<\/li>\n<li>\u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0438\u043b\u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0435 \u0442\u0438\u043f\u044b (\u043f\u0430\u043a\u0435\u0442\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f).<\/li>\n<\/ul>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0411\u0414:<\/p>\n<ol>\n<li>\u0421\u0445\u0435\u043c\u0430 <code>WS_TEST<\/code>:\n<pre><code class=\"sql\">CREATE USER WS_SOAP_TEST IDENTIFIED BY ws_soap_test QUOTA 200M ON USERS; GRANT CREATE SESSION, RESOURCE TO ws_soap_test;<\/code><\/pre>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u043e\u0432\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0432 ACL. \u0421\u043a\u0440\u0438\u043f\u0442 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435.<\/li>\n<li>\u0412 \u043d\u043e\u0432\u043e\u0439 \u0441\u0445\u0435\u043c\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0434\u043b\u044f \u043b\u043e\u0433\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f <code>T_WS_REQ_LOG<\/code>:\n<pre><code class=\"sql\">CREATE TABLE T_WS_REQ_LOG (   id_log      NUMBER GENERATED ALWAYS AS IDENTITY,   message     VARCHAR2(2000),   proc        VARCHAR2(128),   dtm_request TIMESTAMP(6) DEFAULT SYSTIMESTAMP ); COMMENT ON TABLE T_WS_REQ_LOG IS '\u041b\u043e\u0433 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432'; COMMENT ON COLUMN T_WS_REQ_LOG.id_log IS '\u041f\u041a'; COMMENT ON COLUMN T_WS_REQ_LOG.message IS '\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435'; COMMENT ON COLUMN T_WS_REQ_LOG.proc IS '\u041f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430'; COMMENT ON COLUMN T_WS_REQ_LOG.dtm_request IS '\u0414\u0430\u0442\u0430\/\u0432\u0440\u0435\u043c\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430';<\/code><\/pre>\n<\/li>\n<li>\u041f\u0430\u043a\u0435\u0442 \u0441 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043e\u0439:\n<pre><code class=\"sql\"> CREATE OR REPLACE PACKAGE PK_NATIVE_WS_TEST IS   PROCEDURE proc_simple     ( a_id      INTEGER     , a_data    VARCHAR2     , o_result  OUT VARCHAR2     );   END PK_NATIVE_WS_TEST; \/ CREATE OR REPLACE PACKAGE BODY PK_NATIVE_WS_TEST IS   PROCEDURE proc_simple     ( a_id      INTEGER     , a_data    VARCHAR2     , o_result  OUT VARCHAR2     ) AS BEGIN     INSERT INTO t_ws_req_log (message, proc)     VALUES ('ID='||a_id||'; DATA='||a_data, 'proc_simple')     RETURNING id_log INTO o_result; END proc_simple;   END PK_NATIVE_WS_TEST; \/<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>  \u041f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441 \u0441\u043e\u0437\u0434\u0430\u043d \u0438 \u0433\u043e\u0442\u043e\u0432 \u043a \u0440\u0430\u0431\u043e\u0442\u0435.<\/p>\n<p>  \u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c URL \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430:<\/p>\n<pre><code class=\"sql\">http:\/\/[server]:[port]\/[servlet_name]\/[DB_SCHEMA]\/[WS_OBJ]?wsdl<\/code><\/pre>\n<p>  \u0413\u0434\u0435:<\/p>\n<p>  <b>[server]<\/b> \u2014 \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u0438\u043b\u0438 IP-\u0430\u0434\u0440\u0435\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0411\u0414 Oracle<br \/>  <b>[port]<\/b> \u2014 \u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0447\u0435\u0440\u0435\u0437 HTTP, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u00ab\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0447\u0435\u0440\u0435\u0437 HTTP\u00bb<br \/>  <b>[servlet_name]<\/b> \u2014 \u0438\u043c\u044f \u0441\u0435\u0440\u0432\u043b\u0435\u0442\u0430, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u00ab\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u043b\u0435\u0442\u0430 \u0434\u043b\u044f \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0430\u00bb<br \/>  <b>[DB_SCHEMA]<\/b> \u2014 \u0438\u043c\u044f \u0441\u0445\u0435\u043c\u044b \u0411\u0414 (\u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435)<br \/>  <b>[WS_OBJ]<\/b> \u2014 \u0438\u043c\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430 (\u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435), \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0440\u0430\u0432\u043d\u043e \u0438\u043c\u0435\u043d\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0411\u0414, \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2013 \u0438\u043c\u0435\u043d\u0438 \u043f\u0430\u043a\u0435\u0442\u0430<\/p>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432 URL \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0432\u0430\u0436\u0435\u043d! <\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u0441\u044b\u043b\u043a\u0438: <\/p>\n<pre><code class=\"sql\">http:\/\/my.server:8080\/orawsv\/WS_SOAP_TEST\/PK_NATIVE_WS_TEST?wsdl <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043f\u043e \u044d\u0442\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430 WSDL: <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">WSDL<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"xml\">&lt;definitions name=&quot;PK_NATIVE_WS_TEST&quot;     targetNamespace=&quot;http:\/\/xmlns.oracle.com\/orawsv\/WS_SOAP_TEST\/PK_NATIVE_WS_TEST&quot;     xmlns=&quot;http:\/\/schemas.xmlsoap.org\/wsdl\/&quot;     xmlns:tns=&quot;http:\/\/xmlns.oracle.com\/orawsv\/WS_SOAP_TEST\/PK_NATIVE_WS_TEST&quot;     xmlns:xsd=&quot;http:\/\/www.w3.org\/2001\/XMLSchema&quot;     xmlns:soap=&quot;http:\/\/schemas.xmlsoap.org\/wsdl\/soap\/&quot;&gt;   &lt;types&gt;     &lt;xsd:schema targetNamespace=&quot;http:\/\/xmlns.oracle.com\/orawsv\/WS_SOAP_TEST\/PK_NATIVE_WS_TEST&quot;      elementFormDefault=&quot;qualified&quot;&gt;       &lt;xsd:element name=&quot;PROC_SIMPLEInput&quot;&gt;         &lt;xsd:complexType&gt;             &lt;xsd:sequence&gt;               &lt;xsd:element name=&quot;A_DATA-VARCHAR2-IN&quot; type=&quot;xsd:string&quot;\/&gt;               &lt;xsd:element name=&quot;A_ID-NUMBER-IN&quot; type=&quot;xsd:integer&quot;\/&gt;             &lt;\/xsd:sequence&gt;           &lt;\/xsd:complexType&gt;       &lt;\/xsd:element&gt;         &lt;xsd:element name=&quot;PROC_SIMPLEOutput&quot;&gt;         &lt;xsd:complexType&gt;             &lt;xsd:sequence&gt;               &lt;xsd:element name=&quot;O_RESULT&quot; type=&quot;xsd:string&quot;\/&gt;             &lt;\/xsd:sequence&gt;           &lt;\/xsd:complexType&gt;       &lt;\/xsd:element&gt;    &lt;\/xsd:schema&gt;   &lt;\/types&gt;     &lt;message name=&quot;PROC_SIMPLEInputMessage&quot;&gt;     &lt;part name=&quot;parameters&quot; element=&quot;tns:PROC_SIMPLEInput&quot;\/&gt;   &lt;\/message&gt;     &lt;message name=&quot;PROC_SIMPLEOutputMessage&quot;&gt;     &lt;part name=&quot;parameters&quot; element=&quot;tns:PROC_SIMPLEOutput&quot;\/&gt;   &lt;\/message&gt;     &lt;portType name=&quot;PK_NATIVE_WS_TESTPortType&quot;&gt;   &lt;operation name=&quot;PROC_SIMPLE&quot;&gt;       &lt;input message=&quot;tns:PROC_SIMPLEInputMessage&quot;\/&gt;       &lt;output message=&quot;tns:PROC_SIMPLEOutputMessage&quot;\/&gt;     &lt;\/operation&gt;   &lt;\/portType&gt;     &lt;binding name=&quot;PK_NATIVE_WS_TESTBinding&quot;            type=&quot;tns:PK_NATIVE_WS_TESTPortType&quot;&gt;     &lt;soap:binding style=&quot;document&quot; transport=&quot;http:\/\/schemas.xmlsoap.org\/soap\/http&quot;\/&gt;     &lt;operation name=&quot;PROC_SIMPLE&quot;&gt;       &lt;soap:operation  soapAction=&quot;PROC_SIMPLE&quot;\/&gt;       &lt;input&gt;         &lt;soap:body parts=&quot;parameters&quot; use=&quot;literal&quot;\/&gt;       &lt;\/input&gt;       &lt;output&gt;         &lt;soap:body parts=&quot;parameters&quot; use=&quot;literal&quot;\/&gt;       &lt;\/output&gt;     &lt;\/operation&gt;   &lt;\/binding&gt;     &lt;service name=&quot;PK_NATIVE_WS_TESTService&quot;&gt;     &lt;documentation&gt;Oracle Web Service&lt;\/documentation&gt;     &lt;port name=&quot;PK_NATIVE_WS_TESTPort&quot; binding=&quot;tns:PK_NATIVE_WS_TESTBinding&quot;&gt;        &lt;soap:address               location=&quot;http:\/\/******:8080\/orawsv\/WS_SOAP_TEST\/PK_NATIVE_WS_TEST&quot;\/&gt;      &lt;\/port&gt;   &lt;\/service&gt;   &lt;\/definitions&gt;<\/code><\/pre>\n<\/div><\/div>\n<p>  \u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 SOAP-\u043f\u0440\u043e\u0435\u043a\u0442 \u0432 SOAP UI. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 URL \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0430\u0434\u0440\u0435\u0441 \u0438\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u044b\u0448\u0435. <\/p>\n<p>  \u041f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 <code>Request 1<\/code> \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0448\u0430\u0431\u043b\u043e\u043d \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0443\u0436\u0435 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 WSDL.<\/p>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c Basic-\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u2014 \u043b\u043e\u0433\u0438\u043d \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u0442\u0430\u043a\u0438\u0435 \u0436\u0435, \u043a\u0430\u043a \u043f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0432 \u0411\u0414.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/qi\/e_\/re\/qie_rezy1hizdhgrcy-y--2ghae.png\"><\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u043e\u0442\u0432\u0435\u0442\u0430. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 <code>&lt;pk:O_RESULT-VARCHAR2-OUT\/&gt;<\/code>. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 Oracle 12c \u0435\u0441\u0442\u044c \u0431\u0430\u0433: OUT-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 WSDL \u0434\u043b\u044f Native Oracle WS).<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/j6\/ch\/em\/j6chemtum0xqyl4tz6kmandwjdc.png\"><\/p>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0437\u043e\u0432\u0430 \u0432\u0438\u0434\u0438\u043c \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043b\u043e\u0433\u0430.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/be\/5t\/sy\/be5tsyoz24pbltgramyceh86xf8.png\"><\/p>\n<p>  <a name=\"NativeOracleSummary\"><\/a><\/p>\n<h3>\u0412\u044b\u0432\u043e\u0434\u044b<\/h3>\n<p>  \u0422\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e Native Oracle XML DB Web Services \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e \u043d\u0430 \u044d\u0442\u043e\u0442 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441 \u043d\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 (\u043e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434). \u042d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u0443 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0435\u0439 \u043d\u0435\u0442 \u0436\u0435\u0441\u0442\u043a\u0438\u0445 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u043a \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0443 (\u0435\u0433\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u0445, \u043b\u043e\u0433\u0438\u043a\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438) \u0438 \u043d\u0435\u0442 \u0441\u0442\u0440\u043e\u0433\u043e\u0433\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430. \u0415\u0441\u043b\u0438 \u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 WSDL (\u043a\u0430\u043a \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u043d\u043e\u0432\u044b\u043c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c), \u0442\u043e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f Native Oracle WS \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043d\u0435\u043f\u0440\u0438\u0433\u043e\u0434\u043d\u0430.<\/p>\n<p>  <a name=\"OracleREST\"><\/a><\/p>\n<h2>Oracle REST Data Service<\/h2>\n<p>  \u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 11.1 \u0432 Oracle \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 RESTful \u0432 \u0432\u0438\u0434\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e Oracle REST Data Service (ORDS).<\/p>\n<p>  ORDS \u2014 \u044d\u0442\u043e Java-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c RESTful API \u0434\u043b\u044f \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 Oracle, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f SQL \u0438 PL\/SQL. \u042f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043e\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e Oracle HTTP Server \u0438 mod_plsql. \u041f\u043e \u0441\u0443\u0442\u0438 ORDS \u2014 \u044d\u0442\u043e HTTP-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043c\u0435\u0436\u0434\u0443 \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u043c\u0438\u0440\u043e\u043c \u0438 \u0411\u0414 Oracle. \u042d\u0442\u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u043c\u043a\u043d\u0443\u0442\u044c \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u043e\u0431\u044a\u0435\u043a\u0442 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0438\u043b\u0438 PL\/SQL-\u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443.<\/p>\n<p>  \u0412\u0441\u0435, \u0447\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u2014 \u044d\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c ORDS \u0434\u043b\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0439 \u0411\u0414. \u0414\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f REST-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u043a\u043e\u0434\u0430 \u043d\u0430 PL\/SQL (\u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u043a\u043b\u0438\u043a\u0430\u043d\u044c\u044e \u043c\u044b\u0448\u043a\u043e\u0439 \u0432 IDE, \u0435\u0441\u043b\u0438 \u043a\u043e\u0434 \u043f\u0438\u0441\u0430\u0442\u044c \u043b\u0435\u043d\u044c).<\/p>\n<p>  \u0414\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 ORDS \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0439.<\/p>\n<p>  \u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<ul>\n<li>Java JDK 8 \u0438\u043b\u0438 \u0432\u044b\u0448\u0435;<\/li>\n<li>Oracle 11.1 \u0438\u043b\u0438 \u0432\u044b\u0448\u0435 (\u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f Oracle 11 XE Release 2).<\/li>\n<\/ul>\n<p>  \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f ORDS:<\/p>\n<ul>\n<li>\u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u044b\u0439 (standalone) \u0440\u0435\u0436\u0438\u043c;<\/li>\n<li>\u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 (Oracle WebLogic Server, Apache Tomcat).<\/li>\n<\/ul>\n<p>  <a name=\"OracleRESTFeatures\"><\/a><\/p>\n<h3>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438<\/h3>\n<p>  ORDS \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442: <\/p>\n<ul>\n<li>\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c \u0432 \u0441\u0442\u0438\u043b\u0435 RESTful.<\/li>\n<li>\u041f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0432 \u0441\u0442\u0438\u043b\u0435 \u00ab\u0412\u044b\u0437\u043e\u0432 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b\u00bb (RPC-style interaction).<\/li>\n<\/ul>\n<p>  \u041f\u0440\u043e\u0449\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e ORDS \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0447\u0435\u0440\u0435\u0437 HTTP \u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c \u0411\u0414 \u2014 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c, \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430\u043c, \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c, \u043f\u0430\u043a\u0435\u0442\u0430\u043c. <\/p>\n<p>  <b>\u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435<\/b> \u0438\u043c\u0435\u0435\u043c \u0434\u0435\u043b\u043e \u0441 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 \u0432 \u0442\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435, \u043a\u0430\u043a \u043e\u043d\u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u0432 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u043c \u0441\u0442\u0438\u043b\u0435 RESTful. \u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0435\u0441\u0443\u0440\u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c URI, \u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 (CRUD \u2014 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u0447\u0442\u0435\u043d\u0438\u0435, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435) \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c\u0438 \u0438\u0437 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u0430: PUT, POST, GET, DELETE. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0440\u0435\u0441\u0443\u0440\u0441 \u2014 \u044d\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432, \u0442\u043e \u044d\u0442\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u043e URI \u0432\u0438\u0434\u0430:<\/p>\n<pre><code class=\"sql\">GET https:\/\/server:port\/ords\/workspace\/hr\/employees\/7369<\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0432 URI \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u043c\u044f \u0441\u0445\u0435\u043c\u044b \u0411\u0414, \u0438\u043c\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438 ID \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u044d\u0442\u043e\u0442 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u0432\u044b\u0431\u043e\u0440\u0430 (SELECT) \u0438\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u0421 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c\u0438 (\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435) \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u043e\u0439 \u0436\u0435: \u0432 URI \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u0442\u044c \u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0443, \u0430 \u0432 \u0442\u0435\u043b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u2014 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443.<\/p>\n<p>  <b>\u0412\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435<\/b> \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0443 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u044b\u0437\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0435 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0447\u0442\u043e \u0438 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 (CRUD), \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u0434\u0440\u0443\u0433\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0443\u044e \u043d\u0443\u0436\u043d\u044b\u0439 \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u043e\u0446\u0435\u0441\u0441. \u0412\u044b\u0437\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0438\u0437 \u043f\u0430\u043a\u0435\u0442\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0434\u0435\u043b\u0430\u043d \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0442\u0430\u043a\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430:<\/p>\n<pre><code class=\"sql\">http:\/\/localhost:8080\/ords\/my_schema\/my_pkg\/MY_PROC<\/code><\/pre>\n<p>   \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u0442\u0435\u043b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432 \u0432\u0438\u0434\u0435 JSON-\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 <code>{&quot;param&quot; : &quot;value&quot;}<\/code>. \u0422\u0430\u043a\u043e\u0439 \u0436\u0435 \u043f\u043e\u0434\u0445\u043e\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438 \u043f\u0440\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0438 Native Oracle WS, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435, \u043d\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 REST-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043d\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439, \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c SOAP.<\/p>\n<p>  <b>\u041f\u043b\u044e\u0441\u044b<\/b><\/p>\n<ul>\n<li>\u0413\u0438\u0431\u043a\u0438\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043b\u044e\u0431\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438.<\/li>\n<li>\u041f\u0440\u043e\u0441\u0442\u043e\u0442\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438: \u0434\u043b\u044f \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f PL\/SQL-\u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0432 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u0441\u0435\u0433\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0438\u043f\u043e\u0432\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434. \u0410 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c SQL Developer \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 REST API \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043a\u043b\u0438\u043a\u0430\u043d\u044c\u0435 \u043c\u044b\u0448\u043a\u043e\u0439 \u0441 \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u043e\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430.<\/li>\n<li>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0431\u0435\u0437 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.<\/li>\n<\/ul>\n<p>  <b>\u041c\u0438\u043d\u0443\u0441<\/b><\/p>\n<ul>\n<li>ORDS \u043d\u0435 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0443 Oracle \u2014 \u0435\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 (\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0439, \u043a\u0430\u043a \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u043e\u0441\u044c, \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f). \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0442\u044b\u0441\u044f\u0447\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0411\u0414.<\/li>\n<\/ul>\n<p>  <a name=\"OracleRESTSetup\"><\/a><\/p>\n<h3>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430<\/h3>\n<p>  ORDS \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432 \u0434\u0432\u0443\u0445 \u0440\u0435\u0436\u0438\u043c\u0430\u0445: \u0447\u0435\u0440\u0435\u0437 \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438\u043b\u0438 \u0432 \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e\u043c (standalone) \u0440\u0435\u0436\u0438\u043c\u0435.<\/p>\n<p>  \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432 standalone-\u0440\u0435\u0436\u0438\u043c\u0435. <\/p>\n<p>  \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b ORDS \u043d\u0443\u0436\u043d\u043e:<\/p>\n<ol>\n<li>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0435\u0440\u0435\u0434 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439.<\/li>\n<li>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 ODRS.<\/li>\n<li>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c ORDS.<\/li>\n<li>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c ACL (\u0434\u043b\u044f \u043d\u0443\u0436\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u044b \u0411\u0414).<\/li>\n<\/ol>\n<p>  <a name=\"OracleRESTSetup-Step1\"><\/a><\/p>\n<h4>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432<\/h4>\n<p>  \u0412 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0435 ORDS \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"sql\">db.hostname= db.port= db.servicename= db.sid= db.username=APEX_PUBLIC_USER migrate.apex.rest=false rest.services.apex.add= rest.services.ords.add=true schema.tablespace.default=SYSAUX schema.tablespace.temp=TEMP standalone.http.port=8080 standalone.static.images= user.tablespace.default=USERS user.tablespace.temp=TEMP <\/code><\/pre>\n<p>  \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 <a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-rest-data-services\/19.1\/aelig\/installing-REST-data-services.html#GUID-F869424D-9A92-432F-B2AA-99F879FAB4D6\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a><\/p>\n<p>  \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f standalone-\u0440\u0435\u0436\u0438\u043c\u0430:   <\/p>\n<div class=\"scrollable-table\">\n<table>\n<tr>\n<td><b>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440<\/b><\/td>\n<td><b>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435<\/b><\/td>\n<\/tr>\n<tr>\n<td><code>db.hostname<\/code><\/td>\n<td>\u0418\u043c\u044f \u0438\u043b\u0438 IP-\u0430\u0434\u0440\u0435\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0411\u0414 Oracle <\/td>\n<\/tr>\n<tr>\n<td><code>db.port<\/code><\/td>\n<td>\u041f\u043e\u0440\u0442 \u0411\u0414 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 1521)<\/td>\n<\/tr>\n<tr>\n<td><code>db.servicename<\/code><\/td>\n<td>Servicename \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445<\/td>\n<\/tr>\n<tr>\n<td><code>db.username<\/code><\/td>\n<td>\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f PL\/SQL-\u0448\u043b\u044e\u0437\u0430. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e = APEX_PUBLIC_USER, \u043d\u043e \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043d\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c APEX, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440<\/td>\n<\/tr>\n<tr>\n<td><code>db.password<\/code><\/td>\n<td>\u041f\u0430\u0440\u043e\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (\u0442\u043e\u0436\u0435 \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c) <\/td>\n<\/tr>\n<tr>\n<td><code>migrate.apex.rest<\/code><\/td>\n<td>\u041f\u0435\u0440\u0435\u0445\u043e\u0434 RESTful \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 APEX \u043d\u0430 ORDS. \u0421\u0442\u0430\u0432\u0438\u043c false, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f APEX<\/td>\n<\/tr>\n<tr>\n<td><code>rest.services.apex.add<\/code><\/td>\n<td>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c ORDS \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 APEX<\/td>\n<\/tr>\n<tr>\n<td><code>rest.services.ords.add<\/code><\/td>\n<td>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0445\u0435\u043c\u0443 \u0411\u0414 \u0434\u043b\u044f ORDS (ORDS_PUBLIC_USER \u0438 ORDS_METADATA). \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c true<\/td>\n<\/tr>\n<tr>\n<td><code>schema.tablespace.default<\/code><\/td>\n<td>\u0422\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0441\u0445\u0435\u043c\u044b ORDS_METADATA<\/td>\n<\/tr>\n<tr>\n<td><code>schema.tablespace.temp<\/code><\/td>\n<td>\u0412\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u0441\u0445\u0435\u043c\u044b ORDS_METADATA<\/td>\n<\/tr>\n<tr>\n<td><code>standalone.http.port<\/code><\/td>\n<td>\u041f\u043e\u0440\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c ORDS. \u042d\u0442\u043e\u0442 \u043f\u043e\u0440\u0442 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 URI \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a WS<\/td>\n<\/tr>\n<tr>\n<td><code>user.tablespace.default<\/code><\/td>\n<td>\u0422\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0441\u0445\u0435\u043c\u044b ORDS_PUBLIC_USER<\/td>\n<\/tr>\n<tr>\n<td><code>user.tablespace.temp<\/code><\/td>\n<td>\u0412\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u0441\u0445\u0435\u043c\u044b ORDS_PUBLIC_USER<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u0438\u043c:<\/p>\n<pre><code class=\"sql\">db.hostname=your_server_host_name db.port=1521 db.servicename=your_db_servicename migrate.apex.rest=false rest.services.apex.add=false rest.services.ords.add=true schema.tablespace.default=SYSAUX schema.tablespace.temp=TEMP standalone.http.port=8888 standalone.static.images= user.tablespace.default=USERS user.tablespace.temp=TEMP<\/code><\/pre>\n<p>  \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435.<\/p>\n<p>  <a name=\"OracleRESTSetup-Step2\"><\/a><\/p>\n<h4>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/h4>\n<p>  \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0432 \u041e\u0421 \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<pre><code class=\"sql\">java -jar ords.war<\/code><\/pre>\n<p>  \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0431\u0435\u0440\u0435\u0442\u0441\u044f \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 <code>params<\/code>, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u044f\u0434\u043e\u043c \u0441 <code>ords.war<\/code>. \u041c\u043e\u0436\u043d\u043e \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u043a \u044d\u0442\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>--parameterFile<\/code>:<\/p>\n<pre><code class=\"xml\">java -jar ords.war --parameterFile \/path\/to\/params\/myown_params.properties<\/code><\/pre>\n<p>  \u0412 \u0434\u0438\u0430\u043b\u043e\u0433\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435: <\/p>\n<ol>\n<li>\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u0443\u0442\u044c \u043a \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 (\u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0443\u043a\u0430\u0437\u0430\u043d <code>conf <\/code>\u2014 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432 \u0442\u043e\u043c \u0436\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435, \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0444\u0430\u0439\u043b <code>ords.war<\/code>, \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u043a\u0430\u0442\u0430\u043b\u043e\u0433 <code>conf<\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0444\u0430\u0439\u043b\u044b \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 ORDS).<\/li>\n<li>\u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f Enter the database password for ORDS_PUBLIC_USER \u0432\u043e\u0434\u0438\u043c \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f \u0441\u0445\u0435\u043c\u044b <code>ORDS_PUBLIC_USER<\/code>. \u041f\u043e\u0434 \u044d\u0442\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c ORDS \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a \u0411\u0414.<\/li>\n<li>\u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f Enter 1 if you want to use PL\/SQL Gateway or 2 to skip this step \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u043c \u00ab2\u00bb, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c APEX \u0438 \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044e \u0441 <code>mod_plsql<\/code>.<\/li>\n<li>\u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f Enter 1 if you wish to start in standalone mode or 2 to exit [1] \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u043c \u00ab1\u00bb.<\/li>\n<li>\u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f Enter 1 if using HTTP or 2 if using HTTPS [1] \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u043c 1.<\/li>\n<\/ol>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0414\u0438\u0430\u043b\u043e\u0433 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438<\/b>                         <\/p>\n<div class=\"spoiler_text\"><code>D:\\ords-19.2.0.199.1647&gt;java -jar ords.war install<br \/>  This Oracle REST Data Services instance has not yet been configured.<br \/>  Please complete the following prompts<\/p>\n<p>  Enter the location to store configuration data: conf<br \/>  Enter the database password for ORDS_PUBLIC_USER:<br \/>  Confirm password:<br \/>  \u0451\u0445\u044d 03, 2019 2:47:49 PM oracle.dbtools.rt.config.setup.SchemaSetup getInstallOrUpgrade<br \/>  WARNING: Failed to connect to user ORDS_PUBLIC_USER jdbc:oracle:thin:@\/\/***YOUR_HOST_NAME.DOMAIN***:1521\/***YOUR_SERVICE_NAME.DOMAIN***<\/p>\n<p>  Enter 1 if you want to use PL\/SQL Gateway or 2 to skip this step.<br \/>  If using Oracle Application Express or migrating from mod_plsql then you must enter 1 [1]:2<br \/>  \u0451\u0445\u044d 03, 2019 2:48:32 PM<br \/>  INFO: reloaded pools: []<br \/>  Enter 1 if you wish to start in standalone mode or 2 to exit [1]:<br \/>  Enter 1 if using HTTP or 2 if using HTTPS [1]:<br \/>  2019-09-03 14:48:49.754:INFO::main: Logging initialized @4276887ms to org.eclipse.jetty.util.log.StdErrLog<br \/>  \u0451\u0445\u044d 03, 2019 2:48:49 PM<br \/>  INFO: HTTP and HTTP\/2 cleartext listening on port: 8082<br \/>  \u0451\u0445\u044d 03, 2019 2:48:50 PM<br \/>  INFO: Disabling document root because the specified folder does not exist: D:\\ords-19.2.0.199.1647\\conf\\ords\\standalone\\doc_root<br \/>  Exception in thread &quot;main&quot; java.lang.reflect.InvocationTargetException<br \/>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br \/>   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)<br \/>   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)<br \/>   at java.lang.reflect.Method.invoke(Unknown Source)<br \/>   at oracle.dbtools.jarcl.Entrypoint.invoke(Entrypoint.java:66)<br \/>   at oracle.dbtools.jarcl.Entrypoint.main(Entrypoint.java:89)<br \/>  Caused by: java.lang.OutOfMemoryError: Java heap space<br \/>   at java.util.Arrays.copyOf(Unknown Source)<br \/>   at java.lang.AbstractStringBuilder.ensureCapacityInternal(Unknown Source)<br \/>   at java.lang.AbstractStringBuilder.append(Unknown Source)<br \/>   at java.lang.StringBuilder.append(Unknown Source)<br \/>   at java.lang.StringBuilder.append(Unknown Source)<br \/>   at java.util.AbstractMap.toString(Unknown Source)<br \/>   at java.lang.String.valueOf(Unknown Source)<br \/>   at java.lang.StringBuilder.append(Unknown Source)<br \/>   at oracle.dbtools.jarcl.zip.ZipIndex.toString(ZipIndex.java:166)<br \/>   at java.lang.String.valueOf(Unknown Source)<br \/>   at java.lang.StringBuilder.append(Unknown Source)<br \/>   at oracle.dbtools.jarcl.JarClassLoader.toString(JarClassLoader.java:51)<br \/>   at org.eclipse.jetty.server.ClassLoaderDump.dump(ClassLoaderDump.java:67)<br \/>   at org.eclipse.jetty.util.component.Dumpable.dumpObjects(Dumpable.java:225)<br \/>   at org.eclipse.jetty.util.component.ContainerLifeCycle.dumpObjects(ContainerLifeCycle.java:746)<br \/>   at org.eclipse.jetty.server.handler.ContextHandler.dump(ContextHandler.java:259)<br \/>   at org.eclipse.jetty.util.component.Dumpable.dumpObjects(Dumpable.java:162)<br \/>   at org.eclipse.jetty.util.component.ContainerLifeCycle.dumpObjects(ContainerLifeCycle.java:746)<br \/>   at org.eclipse.jetty.util.component.ContainerLifeCycle.dump(ContainerLifeCycle.java:701)<br \/>   at org.eclipse.jetty.util.component.Dumpable.dump(Dumpable.java:62)<br \/>   at org.eclipse.jetty.util.component.ContainerLifeCycle.dump(ContainerLifeCycle.java:684)<br \/>   at oracle.dbtools.standalone.StandaloneConfiguration.start(StandaloneConfiguration.java:241)<br \/>   at oracle.dbtools.standalone.Standalone.execute(Standalone.java:508)<br \/>   at oracle.dbtools.cmdline.DefaultCommand.execute(DefaultCommand.java:137)<br \/>   at oracle.dbtools.cmdline.Commands.execute(Commands.java:207)<br \/>   at oracle.dbtools.cmdline.Commands.main(Commands.java:163)<br \/>   at oracle.dbtools.cmdline.Commands.main(Commands.java:368)<br \/>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br \/>   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)<br \/>   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)<br \/>   at java.lang.reflect.Method.invoke(Unknown Source)<br \/>   at oracle.dbtools.jarcl.Entrypoint.invoke(Entrypoint.java:66)<\/code><\/div>\n<\/p><\/div>\n<p>  \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 ORDS, \u0430 \u0432 \u0411\u0414 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0441\u0445\u0435\u043c\u044b \u0434\u043b\u044f ORDS. <\/p>\n<p>  C\u043c. \u0442\u0430\u043a\u0436\u0435: <a href=\"https:\/\/blog.cdivilly.com\/2015\/03\/11\/install-ords-3.0.0\/\">Install Oracle REST Data Services 3.0.X in under 5 minutes<\/a>.<\/p>\n<p>  <a name=\"OracleRESTSetup-Step3\"><\/a><\/p>\n<h4>\u0417\u0430\u043f\u0443\u0441\u043a<\/h4>\n<p>  \u0417\u0430\u043f\u0443\u0441\u043a \u0432 \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<pre><code class=\"sql\">java -jar ords.war standalone<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0414\u0438\u0430\u043b\u043e\u0433 \u0437\u0430\u043f\u0443\u0441\u043a\u0430<\/b>                         <\/p>\n<div class=\"spoiler_text\"><code>D:\\ords-19.2.0.199.1647&gt;java -jar ords.war standalone<br \/>  2019-09-03 15:52:45.825:INFO::main: Logging initialized @2079ms to org.eclipse.jetty.util.log.StdErrLog<br \/>  \u0451\u0445\u044d 03, 2019 3:52:45 PM<br \/>  INFO: HTTP and HTTP\/2 cleartext listening on port: 8082<br \/>  \u0451\u0445\u044d 03, 2019 3:52:45 PM<br \/>  INFO: Disabling document root because the specified folder does not exist: D:\\ords-19.2.0.199.1647\\conf\\ords\\standalone\\doc_root<br \/>  2019-09-03 15:52:47.124:INFO:oejs.Server:main: jetty-9.4.z-SNAPSHOT; built: 2019-05-02T09:46:34.874Z; git: 14f32d50076f2b706f41a33066eb364d8492e199; jvm 1.8.0_221-b11<br \/>  2019-09-03 15:52:47.179:INFO:oejs.session:main: DefaultSessionIdManager workerName=node0<br \/>  2019-09-03 15:52:47.179:INFO:oejs.session:main: No SessionScavenger set, using defaults<br \/>  2019-09-03 15:52:47.180:INFO:oejs.session:main: node0 Scavenging every 660000ms<br \/>  \u0451\u0445\u044d 03, 2019 3:52:48 PM<br \/>  INFO: Configuration properties for: |apex|pu|<br \/>  db.hostname=***YOUR_HOST_NAME.DOMAIN***<br \/>  db.password=******<br \/>  db.port=1521<br \/>  db.servicename=***YOUR_SERVICE_NAME.DOMAIN***<br \/>  db.username=ORDS_PUBLIC_USER<br \/>  resource.templates.enabled=true<\/p>\n<p>  \u0451\u0445\u044d 03, 2019 3:52:48 PM<br \/>  WARNING: *** jdbc.MaxLimit in configuration |apex|pu| is using a value of 10, this setting may not be sized adequately for a production environment ***<br \/>  \u0451\u0445\u044d 03, 2019 3:52:48 PM<br \/>  WARNING: *** jdbc.InitialLimit in configuration |apex|pu| is using a value of 3, this setting may not be sized adequately for a production environment ***<br \/>  \u0451\u0445\u044d 03, 2019 3:52:50 PM<br \/>  INFO: Oracle REST Data Services initialized<br \/>  Oracle REST Data Services version : 19.2.0.r1991647<br \/>  Oracle REST Data Services server info: jetty\/9.4.z-SNAPSHOT<\/p>\n<p>  2019-09-03 15:52:50.484:INFO:oejsh.ContextHandler:main: Started o.e.j.s.ServletContextHandler@d56d67{\/ords,null,AVAILABLE}<br \/>  2019-09-03 15:52:50.658:INFO:oejs.AbstractConnector:main: Started ServerConnector@12325ad{HTTP\/1.1,[http\/1.1, h2c]}{0.0.<br \/>  0.0:8082}<br \/>  2019-09-03 15:52:50.659:INFO:oejs.Server:main: Started @6914ms<\/code><\/div>\n<\/p><\/div>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e ORDS \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0410\u0434\u0440\u0435\u0441 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u0435\u043d http:\/\/&lt;\u0438\u043c\u044f_\u0445\u043e\u0441\u0442\u0430&gt;:\/ords\/\u2026, \u0433\u0434\u0435 &lt;\u0438\u043c\u044f_\u0445\u043e\u0441\u0442\u0430&gt; \u2014 \u0438\u043c\u044f \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0437\u0430\u043f\u0443\u0449\u0435\u043d ORDS (\u043e\u043d\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0411\u0414, \u0442\u043e \u0435\u0441\u0442\u044c ORDS \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u0445\u043e\u0441\u0442\u0435), &lt;p\u043ert&gt; \u2014 \u043f\u043e\u0440\u0442, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 ORDS.<\/p>\n<p>  \u041f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043e\u0444\u043e\u0440\u043c\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 ORDS \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u041e\u0421.<\/p>\n<p>  <a name=\"OracleRESTSetup-Step4\"><\/a><\/p>\n<h4>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430<\/h4>\n<p>  \u0418 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0448\u0430\u0433 \u2014 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 ACL. \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b <a href=\"#NativeOracleSetup-Step4\">\u0442\u0435\u043c<\/a>, \u0447\u0442\u043e \u0438 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 Native Oracle WS.<\/p>\n<p>  \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u044d\u0442\u043e\u0442 \u0448\u0430\u0433 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0441\u0445\u0435\u043c\u0430 \u0411\u0414, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u043d\u0438\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443. \u041f\u043e\u043a\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0447\u0442\u043e \u0432\u0441\u0435 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u044b, \u0438 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c.<\/p>\n<p>  <a name=\"OracleRESTExample1\"><\/a><\/p>\n<h3>\u041f\u0440\u0438\u043c\u0435\u0440 1: \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0434\u043b\u044f POST-\u0437\u0430\u043f\u0440\u043e\u0441\u0430<\/h3>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 RPC-style interaction, \u0442\u043e \u0435\u0441\u0442\u044c \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043c\u0435\u0442\u043e\u0434 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0430\u043a\u0435\u0442\u043d\u0430\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430.<\/p>\n<p>  \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 ORDS \u0431\u044b\u043b\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0434\u043b\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0435\u0442\u0438, \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043b \u0441\u0432\u043e\u0438 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f. \u041f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0438 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u2014 \u043e\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0434\u043e API \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432.<\/p>\n<p>  \u041a\u0430\u043a \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u0448\u0435, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 ORDS \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0442\u0430\u043a\u0436\u0435 \u0432 SQL Developer (IDE \u0434\u043b\u044f \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445, \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u0430\u044f Oracle). \u0412 SQL Developer \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u043c\u0435\u043d\u044e \u0438\u043b\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044e.<\/p>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u0434\u0435\u043b\u0430\u043d\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e SQL Developer (\u0432\u0435\u0440\u0441\u0438\u044f 18), \u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f PL\/SQL-\u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0411\u0414 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0432 IDE.<\/p>\n<p>  \u0412\u0435\u0440\u0441\u0438\u044f \u0411\u0414, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0434\u0435\u043b\u0430\u043b\u0438\u0441\u044c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b:<\/p>\n<pre><code class=\"sql\">SQL&gt; SELECT v.BANNER FROM v$version v;   BANNER -------------------------------------------------------------------------------- Oracle DATABASE 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production PL\/SQL Release 12.2.0.1.0 - Production CORE\t12.2.0.1.0\tProduction TNS FOR Linux: Version 12.2.0.1.0 - Production NLSRTL Version 12.2.0.1.0 - Production<\/code><\/pre>\n<p>  <a name=\"OracleRESTExample1-Step1\"><\/a><\/p>\n<h4>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0434\u043b\u044f WS<\/h4>\n<p>  \u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043d\u0430\u043c \u0441\u043d\u043e\u0432\u0430 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043d\u043e\u0432\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u2014 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0435\u0435:<\/p>\n<pre><code class=\"sql\">CREATE USER WS_TEST IDENTIFIED BY ws_test QUOTA 200M ON USERS; GRANT CREATE SESSION, RESOURCE TO ws_test;<\/code><\/pre>\n<p>  <a name=\"OracleRESTExample1-Step2\"><\/a><\/p>\n<h4>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0445\u0435\u043c\u044b \u0411\u0414<\/h4>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0441\u0445\u0435\u043c\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439 \u0447\u0435\u0440\u0435\u0437 ORDS. <\/p>\n<p>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e: <\/p>\n<ol>\n<li>\u0412 SQL Developer \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f <code>WS_TEST<\/code>.<\/li>\n<li>\u0412 \u0441\u043f\u0438\u0441\u043a\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c <b>REST Services \u2192 Enable REST Services&#8230;<\/b>:\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/jq\/qy\/yv\/jqqyyveitff-wlvruwzfefp8bae.png\">   <\/li>\n<li>\u0412 \u0434\u0438\u0430\u043b\u043e\u0433\u0435 \u0441\u0442\u0430\u0432\u0438\u043c \u0433\u0430\u043b\u043a\u0443 \u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432 <b>Enable schema<\/b> (\u0442\u0430\u043a\u0436\u0435 \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u00ab\u041f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c \u0441\u0445\u0435\u043c\u044b\u00bb (<b>Schema alias<\/b>), \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u043c\u0435\u0441\u0442\u043e \u0438\u043c\u0435\u043d\u0438 \u0441\u0445\u0435\u043c\u044b <code>ws_test<\/code> \u0432 URI \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u0441\u044f \u0434\u0440\u0443\u0433\u043e\u0439 \u0442\u0435\u043a\u0441\u0442):\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/jc\/0d\/f-\/jc0df-k8qea-djnenwxg4spe2xw.png\">  <\/li>\n<li>\u041d\u0430\u0436\u0430\u0432 <b>\u00ab\u0414\u0430\u043b\u0435\u0435\u00bb<\/b>, \u0443\u0432\u0438\u0434\u0438\u043c PL\/SQL-\u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u0438\u0442\u043e\u0433\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d \u0432 \u0411\u0414 (\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u0443\u044f\u0441\u044c IDE):\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/wg\/pd\/pb\/wgpdpbaxjzxzqv7ju6vf4yzp2i0.png\">  <\/li>\n<\/ol>\n<p>  \u041b\u0438\u0441\u0442\u0438\u043d\u0433:<\/p>\n<pre><code class=\"sql\">BEGIN     ORDS.ENABLE_SCHEMA( p_enabled             =&gt; TRUE                       , p_schema              =&gt; 'WS_TEST'                       , p_url_mapping_type    =&gt; 'BASE_PATH'                       , p_url_mapping_pattern =&gt; 'ws_test'                       , p_auto_rest_auth      =&gt; FALSE);       COMMIT; END; \/<\/code><\/pre>\n<p>  <a name=\"OracleRESTExample1-Step3\"><\/a><\/p>\n<h4>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u044f \u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0430<\/h4>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c \u0438 \u0448\u0430\u0431\u043b\u043e\u043d \u0434\u043b\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u0430.<\/p>\n<p>  <b>\u041c\u043e\u0434\u0443\u043b\u044c<\/b> \u2014 \u044d\u0442\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u0430\u044f \u0435\u0434\u0438\u043d\u0438\u0446\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432.<\/p>\n<p>  <b>\u0428\u0430\u0431\u043b\u043e\u043d<\/b> \u2014 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441, \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0434\u043b\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u0430.<\/p>\n<p>  \u0412 <a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-rest-data-services\/19.1\/aelig\/developing-REST-applications.html#GUID-50E24524-32BB-470D-8015-6C25C9B47A44\">\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435<\/a>:<\/p>\n<p>  <i><b>Resource module:<\/b> An organizational unit that is used to group related resource templates. <\/p>\n<p>  <b>Resource template:<\/b> An individual RESTful service that is able to service requests for some set of URIs (Universal Resource Identifiers). The set of URIs is defined by the URI Pattern of the Resource Template.<\/i><\/p>\n<p>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u044c \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c <code>shop <\/code>\u2014 \u0432 \u044d\u0442\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u044b \u0432\u0441\u0435 API \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430. \u0428\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0430\u043a\u0430\u0437 (\u0448\u0430\u0431\u043b\u043e\u043d <code>order<\/code>), \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0442\u043e\u0432\u0430\u0440\u043e\u0432 (\u0448\u0430\u0431\u043b\u043e\u043d <code>item<\/code>), \u043e\u043f\u043b\u0430\u0442\u0430 (\u0448\u0430\u0431\u043b\u043e\u043d <code>payment<\/code>) \u0438 \u0442. \u0434. <\/p>\n<p>  \u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f \u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0448\u0430\u0433\u0438:<\/p>\n<ol>\n<li>\u0412 \u0434\u0435\u0440\u0435\u0432\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b REST Data Services, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <b>Modules<\/b>, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c <b>New module&#8230;<\/b>:\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ar\/uv\/ry\/aruvrywejhtzq-3oigkirmjy0qy.png\">  <\/li>\n<li>\u0412 \u0434\u0438\u0430\u043b\u043e\u0433\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0438\u043c\u044f \u043c\u043e\u0434\u0443\u043b\u044f (<code>shop<\/code>), URI prefix (\u0442\u043e\u0436\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c <code>shop <\/code>\u2014 \u043d\u0438\u0436\u0435 \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0432\u0438\u0434\u0438\u043c, \u043a\u0430\u043a\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d \u0430\u0434\u0440\u0435\u0441\u0430 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0430), \u0441\u0442\u0430\u0432\u0438\u043c \u0433\u0430\u043b\u043a\u0443 \u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432 <b>Publish<\/b>, \u0436\u043c\u0435\u043c <b>\u00ab\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 &gt;\u00bb<\/b>:\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/db\/ak\/mf\/dbakmfibj3ir0cxttme-zjuz4qu.png\">  <\/li>\n<li>\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0434\u0438\u0430\u043b\u043e\u0433\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0438\u043c\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <code>order<\/code>, \u0438 \u0441\u043d\u043e\u0432\u0430 \u0436\u043c\u0435\u043c <b>\u00ab\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 &gt;\u00bb<\/b>.\n<p>  \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0434\u0438\u0430\u043b\u043e\u0433\u0435 \u0432\u0438\u0434\u0438\u043c \u0432\u0441\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u043e\u0434\u0443\u043b\u044f \u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0430. \u041d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <b>SQL <\/b>\u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c PL\/SQL-\u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d \u0432 \u0411\u0414 \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 <b>\u00ab\u0413\u043e\u0442\u043e\u0432\u043e\u00bb<\/b>:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yj\/al\/g0\/yjalg0-ud3fp5x37qtx5nyemwxq.png\">  <\/li>\n<\/ol>\n<p>  \u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f <code>shop <\/code>\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u2014 \u0442\u0430\u043a\u0436\u0435 \u0438\u0437 \u0434\u0435\u0440\u0435\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0432\u044b\u0437\u0432\u0430\u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0438 \u0432\u044b\u0431\u0440\u0430\u0432 \u043f\u0443\u043d\u043a\u0442 <b>Add Template&#8230;<\/b>.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041b\u0438\u0441\u0442\u0438\u043d\u0433 \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f \u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0430<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">BEGIN     ORDS.DEFINE_MODULE( p_module_name    =&gt; 'shop'                       , p_base_path      =&gt; 'shop'                       , p_items_per_page =&gt;  25                       , p_status         =&gt; 'PUBLISHED'                       , p_comments       =&gt; NULL);       ORDS.DEFINE_TEMPLATE( p_module_name    =&gt; 'shop'                         , p_pattern        =&gt; 'order'                         , p_priority       =&gt; 0                         , p_etag_type      =&gt; 'HASH'                         , p_etag_query     =&gt; NULL                         , p_comments       =&gt; NULL);       COMMIT; END; \/<\/code><\/pre>\n<\/div><\/div>\n<p>  <a name=\"OracleRESTExample1-Step4\"><\/a><\/p>\n<h4>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u0430<\/h4>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430.<\/p>\n<p>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0411\u0414, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430.<\/p>\n<p>  \u041d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0434\u043b\u044f \u043b\u043e\u0433\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043f\u0430\u043a\u0435\u0442, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u0434 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043a\u0440\u0438\u043f\u0442\u0430:<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">CREATE TABLE T_WS_LOG (   id_log          NUMBER GENERATED ALWAYS AS IDENTITY,   message         VARCHAR2(2000),   request_header  VARCHAR2(2000),   request_body    CLOB,   response_header VARCHAR2(2000),   response_body   CLOB,   dtz_log         TIMESTAMP(6) WITH TIME ZONE DEFAULT SYSTIMESTAMP ); COMMENT ON TABLE T_WS_LOG IS '\u041b\u043e\u0433 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 (ORDS)'; COMMENT ON COLUMN T_WS_LOG.id_log IS '\u041f\u041a'; COMMENT ON COLUMN T_WS_LOG.message IS '\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043b\u043e\u0433\u0430'; COMMENT ON COLUMN T_WS_LOG.request_header IS '\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0437\u0430\u043f\u0440\u043e\u0441\u0430'; COMMENT ON COLUMN T_WS_LOG.request_body IS '\u0422\u0435\u043b\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430'; COMMENT ON COLUMN T_WS_LOG.response_header IS '\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043e\u0442\u0432\u0435\u0442\u0430'; COMMENT ON COLUMN T_WS_LOG.response_body IS '\u0422\u0435\u043b\u043e \u043e\u0442\u0432\u0435\u0442\u0430'; COMMENT ON COLUMN T_WS_LOG.dtz_log IS '\u0414\u0430\u0442\u0430\/\u0432\u0440\u0435\u043c\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u043b\u043e\u0433\u0430'; ALTER TABLE T_WS_LOG ADD CONSTRAINT PK_T_WS_LOG PRIMARY KEY (ID_LOG) USING INDEX;<\/code><\/pre>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0430\u043a\u0435\u0442:<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">CREATE OR REPLACE PACKAGE PK_ORDS_API IS     FUNCTION blob2clob     ( a_blob            BLOB     , a_from_charset    VARCHAR2  := 'AMERICAN_AMERICA.AL32UTF8'     , a_to_charset      VARCHAR2  := 'AMERICAN_AMERICA.AL32UTF8'     ) RETURN            CLOB;     PROCEDURE process_request     ( a_request     CLOB     );     END PK_ORDS_API; \/   CREATE OR REPLACE PACKAGE BODY PK_ORDS_API IS     FUNCTION blob2clob     ( a_blob            BLOB     , a_from_charset    VARCHAR2  := 'AMERICAN_AMERICA.AL32UTF8'     , a_to_charset      VARCHAR2  := 'AMERICAN_AMERICA.AL32UTF8'     ) RETURN            CLOB AS     l_clob      CLOB;     l_amount    NUMBER := 2000;     l_offset    NUMBER := 1;     l_buffer    VARCHAR2(32767);     l_length    PLS_INTEGER := dbms_lob.getlength(a_blob); BEGIN     dbms_lob.createtemporary(l_clob, TRUE);     dbms_lob.OPEN(l_clob, dbms_lob.lob_readwrite);     WHILE l_offset &lt;= l_length LOOP         l_buffer := UTL_RAW.cast_to_varchar2(UTL_RAW.convert( r            =&gt; dbms_lob.substr(a_blob, l_amount, l_offset)                                                             , from_charset =&gt; a_from_charset                                                             , to_charset   =&gt; a_to_charset));         IF LENGTH(l_buffer) &gt; 0 THEN             dbms_lob.writeappend(l_clob, LENGTH(l_buffer), l_buffer);         END IF;         l_offset := l_offset + l_amount;         EXIT WHEN l_offset &gt; l_length;     END LOOP;     RETURN l_clob; END blob2clob;     PROCEDURE process_request     ( a_request     CLOB     ) AS     TYPE TStringHash IS TABLE OF VARCHAR2(256) INDEX BY VARCHAR2(256);     lh_hdr              TStringHash;     l_hdr               VARCHAR2(256);     l_resp              CLOB;     l_response_status   INTEGER := 200;     l_ccontent_type     VARCHAR2(64) := 'application\/json';     l_in_headers        VARCHAR2(32767); BEGIN     -- \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430     lh_hdr('SERVER_SOFTWARE')       := OWA_UTIL.get_cgi_env('SERVER_SOFTWARE');     lh_hdr('SERVER_NAME')           := OWA_UTIL.get_cgi_env('SERVER_NAME');     lh_hdr('GATEWAY_INTERFACE')     := OWA_UTIL.get_cgi_env('GATEWAY_INTERFACE');     lh_hdr('SERVER_PROTOCOL')       := OWA_UTIL.get_cgi_env('SERVER_PROTOCOL');     lh_hdr('SERVER_PORT')           := OWA_UTIL.get_cgi_env('SERVER_PORT');     lh_hdr('REQUEST_METHOD')        := OWA_UTIL.get_cgi_env('REQUEST_METHOD');     lh_hdr('PATH_INFO')             := OWA_UTIL.get_cgi_env('PATH_INFO');     lh_hdr('PATH_TRANSLATED')       := OWA_UTIL.get_cgi_env('PATH_TRANSLATED');     lh_hdr('SCRIPT_NAME')           := OWA_UTIL.get_cgi_env('SCRIPT_NAME');     lh_hdr('QUERY_STRING')          := OWA_UTIL.get_cgi_env('QUERY_STRING');     lh_hdr('REMOTE_HOST')           := OWA_UTIL.get_cgi_env('REMOTE_HOST');     lh_hdr('REMOTE_ADDR')           := OWA_UTIL.get_cgi_env('REMOTE_ADDR');     lh_hdr('AUTH_TYPE')             := OWA_UTIL.get_cgi_env('AUTH_TYPE');     lh_hdr('REMOTE_USER')           := OWA_UTIL.get_cgi_env('REMOTE_USER');     lh_hdr('REMOTE_IDENT')          := OWA_UTIL.get_cgi_env('REMOTE_IDENT');     lh_hdr('CONTENT-TYPE')          := OWA_UTIL.get_cgi_env('CONTENT-TYPE');     lh_hdr('CONTENT-LENGTH')        := OWA_UTIL.get_cgi_env('CONTENT-LENGTH');     lh_hdr('HTTP_ACCEPT')           := OWA_UTIL.get_cgi_env('HTTP_ACCEPT');     lh_hdr('HTTP_ACCEPT_LANGUAGE')  := OWA_UTIL.get_cgi_env('HTTP_ACCEPT_LANGUAGE');     lh_hdr('HTTP_USER_AGENT')       := OWA_UTIL.get_cgi_env('HTTP_USER_AGENT');     lh_hdr('HTTP_COOKIE')           := OWA_UTIL.get_cgi_env('HTTP_COOKIE');       l_hdr := lh_hdr.FIRST;     WHILE l_hdr IS NOT NULL LOOP         IF lh_hdr(l_hdr) IS NOT NULL THEN             l_in_headers := l_in_headers||CHR(10)||l_hdr||': '||lh_hdr(l_hdr);         END IF;         l_hdr := lh_hdr.NEXT(l_hdr);     END LOOP;       l_resp := '{ &quot;result&quot; : &quot;success&quot; }';       INSERT INTO t_ws_log         ( message         , request_header         , request_body         , response_header         , response_body)     VALUES         ( NULL         , l_in_headers         , a_request         , 'Content-Type: '||l_ccontent_type         , l_resp         );       OWA_UTIL.STATUS_LINE(nstatus =&gt; l_response_status, bclose_header =&gt; FALSE);     OWA_UTIL.MIME_HEADER(ccontent_type =&gt; l_ccontent_type, bclose_header =&gt; FALSE);     OWA_UTIL.HTTP_HEADER_CLOSE();     htp.p(l_resp); END process_request;   END PK_ORDS_API; \/<\/code><\/pre>\n<\/div><\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0434\u043b\u044f HTTP-\u043c\u0435\u0442\u043e\u0434\u0430 <code>POST<\/code>.<\/p>\n<p>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0448\u0430\u0433\u0438:<\/p>\n<ol>\n<li>\u0412\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0434\u043b\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u0430, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c <b>Add Handler<\/b> \u0438 \u0442\u0443\u0442 \u0436\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c HTTP-\u043c\u0435\u0442\u043e\u0434:\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/gh\/hs\/2l\/ghhs2llhlojihuhzkko_pcfm6bo.png\"><\/li>\n<li>\u041e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u043e\u043a\u043d\u043e \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430. \u041d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <b>SQL Worksheet<\/b> \u043f\u0438\u0448\u0435\u043c PL\/SQL-\u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0441 \u043c\u0435\u0442\u043e\u0434\u043e\u043c <code>POST<\/code>. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442, \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 <code>process_request<\/code> \u0438\u0437 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043d\u0430\u043c\u0438 \u043f\u0430\u043a\u0435\u0442\u0430. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f bind-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <code>:body<\/code> \u2014 \u044d\u0442\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f ORDS, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0442\u0435\u043b\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u043c \u0432\u0438\u0434\u0435 (\u0442\u0430\u043a \u043a\u0430\u043a \u0438\u043c\u0435\u0435\u0442 \u0442\u0438\u043f BLOB). \u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/oracle-base.com\/articles\/misc\/oracle-rest-data-services-ords-http-headers-and-ords-specific-bind-variables#ords-specific-bind-variables\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u0412 \u0441\u043f\u0438\u0441\u043a\u0435 \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u0436\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <code>:body_text<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0440\u0430\u0437\u0443 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0435\u043b\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432 \u0432\u0438\u0434\u0435 CLOB. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438 \u0431\u043e\u0435\u0432\u043e\u0439 \u043e\u0442\u043b\u0430\u0434\u043a\u0435 \u044d\u0442\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0431\u044b\u043b\u043e \u0432\u044b\u044f\u0441\u043d\u0435\u043d\u043e, \u0447\u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u043d\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u0432 ORDS \u043a\u0430\u043a \u0442\u0435\u043a\u0441\u0442. \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <code>:body_text<\/code> \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u0441\u0442\u043e\u0439, \u0430 \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0411\u0414 \u0432 \u0442\u0430\u043a\u043e\u043c \u00ab\u0431\u0435\u0441\u0442\u0435\u043b\u0435\u0441\u043d\u043e\u043c\u00bb \u0432\u0438\u0434\u0435. \u041d\u0430\u0434\u0435\u0436\u043d\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>:body<\/code>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u043a \u0442\u0438\u043f\u0443 CLOB \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u0418\u0442\u0430\u043a, \u043a\u043e\u0434 \u043d\u0430\u0448\u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/z7\/jw\/md\/z7jwmdky6orqwntld4kwoy_lw7i.png\">  <\/li>\n<li>\u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443 Save REST Handler \u2014 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434 \u0433\u043e\u0442\u043e\u0432 \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e.\n<p>  \u041b\u0438\u0441\u0442\u0438\u043d\u0433 \u043a\u043e\u0434\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 POST-\u0437\u0430\u043f\u0440\u043e\u0441\u0430:<\/p>\n<pre><code class=\"sql\">DECLARE     l_blob BLOB := :body; BEGIN     PK_ORDS_API.process_request(a_request =&gt; PK_ORDS_API.blob2clob(l_blob)); EXCEPTION     WHEN OTHERS THEN         OWA_UTIL.STATUS_LINE(nstatus =&gt; 500, bclose_header =&gt; FALSE);         OWA_UTIL.MIME_HEADER(ccontent_type =&gt; 'application\/json');         htp.p('{ &quot;result&quot; : &quot;error&quot;, &quot;message&quot; : &quot;'||SQLERRM||'&quot; }'); END;<\/code><\/pre>\n<p>  \u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c PL\/SQL-\u043a\u043e\u0434 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u043c \u043c\u0435\u043d\u044e ORDS-\u043c\u043e\u0434\u0443\u043b\u044f \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c REST Definition \u0438 \u0434\u0430\u043b\u0435\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0443\u0434\u0430 \u0432\u044b\u0434\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u0431\u0443\u0444\u0435\u0440 \u043e\u0431\u043c\u0435\u043d\u0430:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/6i\/r4\/ww\/6ir4wwzdqbzg2zen2mmshbmmroq.png\"><\/li>\n<\/ol>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">-- Generated by Oracle SQL Developer REST Data Services 18.1.0.095.1630 -- Exported REST Definitions from ORDS Schema Version 18.4.0.r3541002 -- Schema: WS_TEST   Date: Wed Oct 23 20:19:54 MSK 2019 -- BEGIN   ORDS.ENABLE_SCHEMA(       p_enabled             =&gt; TRUE,       p_schema              =&gt; 'WS_TEST',       p_url_mapping_type    =&gt; 'BASE_PATH',       p_url_mapping_pattern =&gt; 'ws_test',       p_auto_rest_auth      =&gt; TRUE);         ORDS.DEFINE_MODULE(       p_module_name    =&gt; 'shop',       p_base_path      =&gt; '\/shop\/',       p_items_per_page =&gt;  25,       p_status         =&gt; 'PUBLISHED',       p_comments       =&gt; NULL);         ORDS.DEFINE_TEMPLATE(       p_module_name    =&gt; 'shop',       p_pattern        =&gt; 'order',       p_priority       =&gt; 0,       p_etag_type      =&gt; 'HASH',       p_etag_query     =&gt; NULL,       p_comments       =&gt; NULL);   ORDS.DEFINE_HANDLER(       p_module_name    =&gt; 'shop',       p_pattern        =&gt; 'order',       p_method         =&gt; 'POST',       p_source_type    =&gt; 'plsql\/block',       p_items_per_page =&gt;  0,       p_mimes_allowed  =&gt; '',       p_comments       =&gt; NULL,       p_source         =&gt;  'DECLARE     l_blob BLOB := :body; BEGIN     PK_ORDS_API.process_request(a_request =&gt; PK_ORDS_API.blob2clob(l_blob)); EXCEPTION     WHEN OTHERS THEN         OWA_UTIL.STATUS_LINE(nstatus =&gt; 500, bclose_header =&gt; FALSE);         OWA_UTIL.MIME_HEADER(ccontent_type =&gt; ''application\/json'');         htp.p(''{ &quot;result&quot; : &quot;error&quot;, &quot;message&quot; : &quot;''||SQLERRM||''&quot; }''); END;'       );       COMMIT;  END;<\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0417\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0435\u0441\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f <code>ORDS.DEFINE_MODULE<\/code> \u0435\u0449\u0435 \u0440\u0430\u0437, \u0442\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u044b \u0432\u0441\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442!<\/p>\n<p>  <a name=\"OracleRESTExample1-Step5\"><\/a><\/p>\n<h4>\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0437\u043e\u0432\u0430<\/h4>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u043d\u0430\u0448 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441 \u0433\u043e\u0442\u043e\u0432. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0443. <\/p>\n<p>  \u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441: <\/p>\n<pre><code class=\"xml\">POST http:\/\/****:8888\/ords\/ws_test\/shop\/order HTTP\/1.1 Accept-Encoding: gzip,deflate Content-Type: application\/json Content-Length: 22 Host: ****:8888 Connection: Keep-Alive User-Agent: Apache-HttpClient\/4.1.1 (java 1.5)   { &quot;message&quot; : &quot;test&quot; }<\/code><\/pre>\n<p>  \u0412 \u043e\u0442\u0432\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c:<\/p>\n<pre><code class=\"sql\">HTTP\/1.1 200 OK Date: Wed, 23 Oct 2019 16:54:53 GMT Content-Type: application\/json Transfer-Encoding: chunked   { &quot;result&quot; : &quot;success&quot; }<\/code><\/pre>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u0430 \u2014 \u0437\u0430\u043f\u0438\u0441\u044c \u0441 \u0442\u0435\u043b\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u043e\u0442\u0432\u0435\u0442\u0430 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043b\u043e\u0433\u043e\u0432:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/cj\/89\/tp\/cj89tpjfzxvmdot-nsdr15nn49c.png\"><\/p>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u043c, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0431\u044b\u043b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u043e\u0439 \u0438\u0437 \u043f\u0430\u043a\u0435\u0442\u0430.<\/p>\n<p>  <a name=\"OracleRESTExample1-Step6\"><\/a><\/p>\n<h4>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437 \u0437\u0430\u043f\u0440\u043e\u0441\u0430<\/h4>\n<p>  \u0412\u044b\u0448\u0435 \u043c\u044b \u0443\u0436\u0435 \u0443\u0432\u0438\u0434\u0435\u043b\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u0433\u043e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0430. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u0441\u043b\u043e\u0436\u043d\u0438\u043c \u0437\u0430\u0434\u0430\u0447\u0443, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432 \u0437\u0430\u043f\u0440\u043e\u0441. <\/p>\n<p>  \u0415\u0441\u0442\u044c \u0434\u0432\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432:<\/p>\n<p>  <b>\u0427\u0435\u0440\u0435\u0437 URL.<\/b> \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u0432 URL \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c \u0432\u0438\u0434\u0435: <\/p>\n<pre><code class=\"sql\">http:\/\/...URI...?p1=val1&amp;p2=val2<\/code><\/pre>\n<p>  <b>\u0427\u0435\u0440\u0435\u0437 HEADER.<\/b> \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432 \u0432\u0438\u0434\u0435 <code>p1: val1<\/code><\/p>\n<p>  \u0412 ORDS \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 bind-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445.<\/p>\n<p>  \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u0432\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430: <code>prm1<\/code> \u2014 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0432 URI, <code>prm2<\/code> \u2014 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430.<\/p>\n<p>  \u0414\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u044d\u0442\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043e\u043f\u0438\u0448\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 <code>PK_ORDS_API.process_request:<\/code> \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b <code>a_prm_uri<\/code> \u0438 <code>a_prm_hdr<\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0430\u0448\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438\u0437 \u0437\u0430\u043f\u0440\u043e\u0441\u0430.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430-\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0441 \u043d\u043e\u0432\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">PROCEDURE process_request     ( a_request     CLOB     , a_prm_uri     VARCHAR2 := NULL     , a_prm_hdr     VARCHAR2 := NULL     ) AS     TYPE TStringHash IS TABLE OF VARCHAR2(256) INDEX BY VARCHAR2(256);     lh_hdr              TStringHash;     l_hdr               VARCHAR2(256);     l_resp              CLOB;     l_response_status   INTEGER := 200;     l_ccontent_type     VARCHAR2(64) := 'application\/json';     l_in_headers        VARCHAR2(32767); BEGIN     -- \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430     lh_hdr('SERVER_SOFTWARE')       := OWA_UTIL.get_cgi_env('SERVER_SOFTWARE');     lh_hdr('SERVER_NAME')           := OWA_UTIL.get_cgi_env('SERVER_NAME');     lh_hdr('GATEWAY_INTERFACE')     := OWA_UTIL.get_cgi_env('GATEWAY_INTERFACE');     lh_hdr('SERVER_PROTOCOL')       := OWA_UTIL.get_cgi_env('SERVER_PROTOCOL');     lh_hdr('SERVER_PORT')           := OWA_UTIL.get_cgi_env('SERVER_PORT');     lh_hdr('REQUEST_METHOD')        := OWA_UTIL.get_cgi_env('REQUEST_METHOD');     lh_hdr('PATH_INFO')             := OWA_UTIL.get_cgi_env('PATH_INFO');     lh_hdr('PATH_TRANSLATED')       := OWA_UTIL.get_cgi_env('PATH_TRANSLATED');     lh_hdr('SCRIPT_NAME')           := OWA_UTIL.get_cgi_env('SCRIPT_NAME');     lh_hdr('QUERY_STRING')          := OWA_UTIL.get_cgi_env('QUERY_STRING');     lh_hdr('REMOTE_HOST')           := OWA_UTIL.get_cgi_env('REMOTE_HOST');     lh_hdr('REMOTE_ADDR')           := OWA_UTIL.get_cgi_env('REMOTE_ADDR');     lh_hdr('AUTH_TYPE')             := OWA_UTIL.get_cgi_env('AUTH_TYPE');     lh_hdr('REMOTE_USER')           := OWA_UTIL.get_cgi_env('REMOTE_USER');     lh_hdr('REMOTE_IDENT')          := OWA_UTIL.get_cgi_env('REMOTE_IDENT');     lh_hdr('CONTENT-TYPE')          := OWA_UTIL.get_cgi_env('CONTENT-TYPE');     lh_hdr('CONTENT-LENGTH')        := OWA_UTIL.get_cgi_env('CONTENT-LENGTH');     lh_hdr('HTTP_ACCEPT')           := OWA_UTIL.get_cgi_env('HTTP_ACCEPT');     lh_hdr('HTTP_ACCEPT_LANGUAGE')  := OWA_UTIL.get_cgi_env('HTTP_ACCEPT_LANGUAGE');     lh_hdr('HTTP_USER_AGENT')       := OWA_UTIL.get_cgi_env('HTTP_USER_AGENT');     lh_hdr('HTTP_COOKIE')           := OWA_UTIL.get_cgi_env('HTTP_COOKIE');     lh_hdr('a_prm_uri')             := a_prm_uri;     lh_hdr('a_prm_hdr')             := a_prm_hdr;       l_hdr := lh_hdr.FIRST;     WHILE l_hdr IS NOT NULL LOOP         IF lh_hdr(l_hdr) IS NOT NULL THEN             l_in_headers := l_in_headers||CHR(10)||l_hdr||': '||lh_hdr(l_hdr);         END IF;         l_hdr := lh_hdr.NEXT(l_hdr);     END LOOP;       l_resp := '{ &quot;result&quot; : &quot;success&quot; }';       INSERT INTO t_ws_log         ( message         , request_header         , request_body         , response_header         , response_body)     VALUES         ( NULL         , l_in_headers         , a_request         , 'Content-Type: '||l_ccontent_type         , l_resp);       OWA_UTIL.STATUS_LINE(nstatus =&gt; l_response_status, bclose_header =&gt; FALSE);     OWA_UTIL.MIME_HEADER(ccontent_type =&gt; l_ccontent_type, bclose_header =&gt; FALSE);     OWA_UTIL.HTTP_HEADER_CLOSE();     htp.p(l_resp); END process_request;<\/code><\/pre>\n<\/div><\/div>\n<p>  \u0412\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u043b\u043e\u0433 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043d\u043e\u0432\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432.<\/p>\n<p>  \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u043e\u0432\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a POST-\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u2014 \u0432 \u0432\u0438\u0434\u0435 bind-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 <code>:prm_uri<\/code> \u0438 <code>:prm_hdr<\/code>.<\/p>\n<p>  \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a POST-\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0441 \u043d\u043e\u0432\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:<\/p>\n<pre><code class=\"sql\">DECLARE     l_blob BLOB := :body; BEGIN     PK_ORDS_API.process_request(a_request =&gt; PK_ORDS_API.blob2clob(l_blob), a_prm_uri =&gt; :prm_uri, a_prm_hdr =&gt; :prm_hdr); EXCEPTION     WHEN OTHERS THEN         OWA_UTIL.STATUS_LINE(nstatus =&gt; 500, bclose_header =&gt; FALSE);         OWA_UTIL.MIME_HEADER(ccontent_type =&gt; 'application\/json');         htp.p('{ &quot;result&quot; : &quot;error&quot;, &quot;message&quot; : &quot;'||SQLERRM||'&quot; }'); END;<\/code><\/pre>\n<p>  \u0412 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <b>Parameters<\/b> \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/mc\/cx\/mh\/mccxmhpqkgnbkll850xmlojvy6e.png\"><br \/>  \u0412 \u044d\u0442\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 (<b>Name<\/b>) \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u043c\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435, \u0432\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u043b\u0435 (<b>Bind Parameter<\/b>) \u2014 \u0438\u043c\u044f bind-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430.<\/p>\n<p>  \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u0441 \u043d\u043e\u0432\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/k1\/rj\/e5\/k1rje5cdkd9prfi8r-canaolczs.png\"><\/p>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u2014 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0441\u044c \u0432 \u043b\u043e\u0433\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/4y\/vy\/c6\/4yvyc6zvhi_xkhod215lxywbdee.png\"><br \/>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437 URI \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u044c \u0438\u0437 CGI-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>QUERY_STRING<\/code>, \u0442\u043e \u0435\u0441\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u0432\u043e\u0434\u0438\u0442\u044c bind-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u2014 \u043c\u043e\u0436\u043d\u043e \u043f\u0430\u0440\u0441\u0438\u0442\u044c \u0438\u0445 \u0432 \u0441\u0430\u043c\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0435-\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430.<\/p>\n<p>  <a name=\"OracleRESTExample1-Step7\"><\/a><\/p>\n<h4>CGI-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435<\/h4>\n<p>  \u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 HTTP \u0432 Oracle \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u043e\u0442\u0440\u0430\u0436\u0430\u044e\u0449\u0438\u0445 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b <code>OWA_UTIL.get_cgi_env<\/code>.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0421\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0432 PL\/SQL CGI-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445<\/b>                         <\/p>\n<div class=\"spoiler_text\"><code>APEX_LISTENER_VERSION<br \/>  GATEWAY_INTERFACE<br \/>  GATEWAY_IVERSION<br \/>  HTTP_ACCEPT_ENCODING<br \/>  HTTP_HOST<br \/>  HTTP_PORT<br \/>  HTTP_USER_AGENT<br \/>  PATH_ALIAS<br \/>  PATH_INFO<br \/>  PLSQL_GATEWAY<br \/>  QUERY_STRING<br \/>  REMOTE_ADDR<br \/>  REMOTE_USER<br \/>  REQUEST_CHARSET<br \/>  REQUEST_IANA_CHARSET<br \/>  REQUEST_METHOD<br \/>  REQUEST_PROTOCOL<br \/>  REQUEST_SCHEME<br \/>  SCRIPT_NAME<br \/>  SERVER_NAME<br \/>  SERVER_PORT<br \/>  SERVER_PROTOCOL<br \/>  SERVER_SOFTWARE<br \/>  WEB_AUTHENT_PREFIX<br \/>  host<br \/>  user-agent<br \/>  CONTENT-LENGTH<br \/>  CONTENT-TYPE<\/code><\/div>\n<\/p><\/div>\n<p>  \u0421\u043c. \u0442\u0430\u043a\u0436\u0435: <a href=\"https:\/\/oracle-base.com\/articles\/misc\/oracle-rest-data-services-ords-http-headers-and-ords-specific-bind-variables\">HTTP Headers (OWA_UTIL) and ORDS-Specific Bind Variables<\/a><\/p>\n<p>  <a name=\"OracleRESTExample2\"><\/a><\/p>\n<h3>\u041f\u0440\u0438\u043c\u0435\u0440 2: \u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0447\u0435\u0440\u0435\u0437 ORDS<\/h3>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043e\u0431\u044a\u0435\u043a\u0442\u0443 \u0411\u0414 (\u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0435) \u0447\u0435\u0440\u0435\u0437 ORDS.<\/p>\n<p>  \u041a\u0430\u043a \u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435, \u0434\u0435\u043b\u0430\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u0431\u0435\u0437 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438. \u041e \u0442\u043e\u043c, \u043a\u0430\u043a \u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 <a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-rest-data-services\/19.1\/aelig\/developing-REST-applications.html#GUID-95B4FE68-391F-4212-93CE-5C8F14FD0D1F\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u0411\u0414 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0447\u0435\u0440\u0435\u0437 ORDS, \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u0438\u043d \u0448\u0430\u0433 \u2014 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>ORDS.ENABLE_OBJECT<\/code>. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043a \u043e\u0431\u044a\u0435\u043a\u0442\u0443 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043f\u043e URI \u0432\u0438\u0434\u0430:<\/p>\n<pre><code class=\"sql\">http:\/\/&lt;HOST&gt;:&lt;PORT&gt;\/ords\/&lt;SchemaAlias&gt;\/&lt;ObjectAlias&gt;<\/code><\/pre>\n<p>.<br \/>  <a name=\"OracleRESTExample2-Step1\"><\/a><\/p>\n<h4>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b<\/h4>\n<p>  \u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u00ab\u0417\u0430\u043a\u0430\u0437\u044b\u00bb.<\/p>\n<p>  \u0421\u043a\u0440\u0438\u043f\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b:<\/p>\n<pre><code class=\"sql\">CREATE TABLE T_ORDER (   id_order   NUMBER NOT NULL,   NUM        VARCHAR2(32),   buyer_name VARCHAR2(256),   dt_order   DATE,   memo       VARCHAR2(2000) );   COMMENT ON TABLE T_ORDER IS '\u0417\u0430\u043a\u0430\u0437'; COMMENT ON COLUMN T_ORDER.id_order IS '\u041f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447'; COMMENT ON COLUMN T_ORDER.num IS '\u041d\u043e\u043c\u0435\u0440 \u0437\u0430\u043a\u0430\u0437\u0430'; COMMENT ON COLUMN T_ORDER.buyer_name IS '\u0424\u0418\u041e \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u044f'; COMMENT ON COLUMN T_ORDER.dt_order IS '\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043a\u0430\u0437\u0430'; COMMENT ON COLUMN T_ORDER.memo IS '\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435'; ALTER TABLE T_ORDER ADD CONSTRAINT PK_T_ORDER PRIMARY KEY (ID_ORDER) USING INDEX;<\/code><\/pre>\n<p>  <a name=\"OracleRESTExample2-Step2\"><\/a><\/p>\n<h4>\u041e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0447\u0435\u0440\u0435\u0437 ORDS<\/h4>\n<p>  <\/p>\n<ol>\n<li>\u0412 SQL Developer \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0434\u043b\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c <b>Enable REST Service&#8230;<\/b>.\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/jm\/pe\/iw\/jmpeiwllpn8ailltyqp-zmyfxji.png\"><\/p>\n<\/li>\n<li>\u0412 \u043e\u043a\u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0441\u0442\u0430\u0432\u0438\u043c \u0433\u0430\u043b\u043a\u0443 \u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432 <b>Enable object<\/b>, \u0441\u043d\u0438\u043c\u0430\u0435\u043c \u0433\u0430\u043b\u043a\u0443 \u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432 <b>Authorization required<\/b>, \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c <b>\u00ab\u0413\u043e\u0442\u043e\u0432\u043e\u00bb<\/b> (\u0438\u043b\u0438 <b>\u00ab\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439\u00bb<\/b>, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 PL\/SQL-\u043a\u043e\u0434):\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/9q\/fj\/9e\/9qfj9eql816su08ignjwhfbjp24.png\"><\/p>\n<\/li>\n<li>\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 <code>T_ORDER<\/code> \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 HTTP, \u0431\u0430\u0437\u043e\u0432\u044b\u0439 URI \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0443:\n<pre><code class=\"sql\">http:\/\/&lt;server&gt;:&lt;port&gt;\/ords\/ws_test\/t_order<\/code><\/pre>\n<p>  \u041b\u0438\u0441\u0442\u0438\u043d\u0433 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b:<\/p>\n<pre><code class=\"sql\">DECLARE   PRAGMA AUTONOMOUS_TRANSACTION; BEGIN       ORDS.ENABLE_OBJECT(p_enabled =&gt; TRUE,                        p_schema =&gt; 'WS_TEST',                        p_object =&gt; 'T_ORDER',                        p_object_type =&gt; 'TABLE',                        p_object_alias =&gt; 't_order',                        p_auto_rest_auth =&gt; FALSE);       commit;   END; \/<\/code><\/pre>\n<p>  <\/li>\n<\/ol>\n<p>  <a name=\"OracleRESTExample2-Step3\"><\/a><\/p>\n<h4>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438<\/h4>\n<p>  \u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043e\u0442\u043a\u0440\u044b\u0442 \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0447\u0435\u0440\u0435\u0437 ORDS.<\/p>\n<p>  \u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441 <code>PUT<\/code>.<\/p>\n<p>  \u0412 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 ORDS \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 <code>PUT<\/code> \u0443\u043a\u0430\u0437\u0430\u043d \u0442\u0430\u043a\u043e\u0439 \u0448\u0430\u0431\u043b\u043e\u043d:<\/p>\n<pre><code class=\"sql\">PUT http:\/\/&lt;HOST&gt;:&lt;PORT&gt;\/ords\/&lt;SchemaAlias&gt;\/&lt;ObjectAlias&gt;\/&lt;KeyValues&gt;<\/code><\/pre>\n<p>  \u0422\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u0435 <code>KeyValues<\/code> (\u043a\u043b\u044e\u0447 \u0437\u0430\u043f\u0438\u0441\u0438) \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0439 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438. \u0412 \u0441\u0430\u043c\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u0432\u0441\u0435 \u043f\u043e\u043b\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b (\u043d\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c).<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0417\u0430\u043f\u0440\u043e\u0441<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">PUT http:\/\/&lt;server&gt;:&lt;port&gt;\/ords\/ws_test\/t_order\/25 HTTP\/1.1 Accept-Encoding: gzip,deflate Content-Type: application\/json;charset=UTF-8 Content-Length: 157 Host: &lt;server&gt;:&lt;port&gt; Connection: Keep-Alive User-Agent: Apache-HttpClient\/4.1.1 (java 1.5)   { \t&quot;num&quot; : &quot;ords-3472634&quot;, \t&quot;buyer_name&quot; : &quot;Buyer Name&quot;, \t&quot;dt_order&quot; : &quot;2019-10-25T12:00:00Z&quot;, \t&quot;memo&quot; : &quot;\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0437\u0430\u043a\u0430\u0437 1&quot; }<\/code><\/pre>\n<\/div><\/div>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0412 \u043e\u0442\u0432\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u0441\u0435 \u043f\u043e\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u0438:<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\"> HTTP\/1.1 200 OK Content-Type: application\/json Content-Location: http:\/\/&lt;server&gt;:&lt;port&gt;\/ords\/ws_test\/t_order\/25 ETag: &quot;...&quot; Transfer-Encoding: chunked   {    &quot;id_order&quot;: 25,    &quot;num&quot;: &quot;ords-3472634&quot;,    &quot;buyer_name&quot;: &quot;Buyer Name&quot;,    &quot;dt_order&quot;: &quot;2019-10-25T12:00:00Z&quot;,    &quot;memo&quot;: &quot;\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0437\u0430\u043a\u0430\u0437 1&quot;,    &quot;links&quot;:    [             {          &quot;rel&quot;: &quot;self&quot;,          &quot;href&quot;: &quot;http:\/\/&lt;server&gt;:&lt;port&gt;\/ords\/ws_test\/t_order\/25&quot;       },             {          &quot;rel&quot;: &quot;edit&quot;,          &quot;href&quot;: &quot;http:\/\/&lt;server&gt;:&lt;port&gt;\/ords\/ws_test\/t_order\/25&quot;       },             {          &quot;rel&quot;: &quot;describedby&quot;,          &quot;href&quot;: &quot;http:\/\/&lt;server&gt;:&lt;port&gt;\/ords\/ws_test\/metadata-catalog\/t_order\/item&quot;       },             {          &quot;rel&quot;: &quot;collection&quot;,          &quot;href&quot;: &quot;http:\/\/&lt;server&gt;:&lt;port&gt;\/ords\/ws_test\/t_order\/&quot;       }    ] }<\/code><\/pre>\n<\/div><\/div>\n<p>  \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u2014 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043d\u0430\u0448\u0430 \u043d\u043e\u0432\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/oy\/sb\/ud\/oysbudug0wwzgn8u7rz5jacs4ng.png\"><\/p>\n<p>  \u0414\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u0442\u043e\u0442 \u0436\u0435 \u043c\u0435\u0442\u043e\u0434 PUT. \u0418\u0437\u043c\u0435\u043d\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u0437\u0430\u043a\u0430\u0437\u0435:<\/p>\n<pre><code class=\"sql\">PUT http:\/\/&lt;server&gt;:&lt;port&gt;\/ords\/ws_test\/t_order\/25 HTTP\/1.1 Accept-Encoding: gzip,deflate Content-Type: application\/json;charset=UTF-8 Content-Length: 178 Host: &lt;server&gt;:&lt;port&gt; Connection: Keep-Alive User-Agent: Apache-HttpClient\/4.1.1 (java 1.5)   { \t&quot;num&quot; : &quot;ords-3472634&quot;, \t&quot;buyer_name&quot; : &quot;Buyer Name&quot;, \t&quot;dt_order&quot; : &quot;2019-10-25T12:00:00Z&quot;, \t&quot;memo&quot; : &quot;\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0437\u0430\u043a\u0430\u0437 1. \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435&quot; }<\/code><\/pre>\n<p>  \u0412 \u043e\u0442\u0432\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0442\u043e\u0442 \u0436\u0435 JSON \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438. \u0412 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u043e\u0441\u044c:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/gb\/ba\/ax\/gbbaax7cmuudt8bd9osl3ugr6to.png\"><\/p>\n<p>  <a name=\"OracleRESTExample2-Step4\"><\/a><\/p>\n<h4>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b<\/h4>\n<p>  \u0415\u0441\u0442\u044c \u0442\u0440\u0438 \u0440\u0435\u0436\u0438\u043c\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b:<\/p>\n<ol>\n<li>\u041f\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441:\n<pre><code class=\"sql\">GET http:\/\/&lt;HOST&gt;:&lt;PORT&gt;\/ords\/&lt;SchemaAlias&gt;\/&lt;ObjectAlias&gt;\/?offset=&lt;Offset&gt;&amp;limit=&lt;Limit&gt;<\/code><\/pre>\n<\/li>\n<li>\u0417\u0430\u043f\u0440\u043e\u0441 \u043f\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c:\n<pre><code class=\"sql\"> GET http:\/\/&lt;HOST&gt;:&lt;PORT&gt;\/ords\/&lt;SchemaAlias&gt;\/&lt;ObjectAlias&gt;\/?q=&lt;FilterClause&gt;<\/code><\/pre>\n<\/li>\n<li>\u0417\u0430\u043f\u0440\u043e\u0441 \u043f\u043e \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u043c\u0443 \u043a\u043b\u044e\u0447\u0443:\n<pre><code class=\"sql\">GET http:\/\/&lt;HOST&gt;:&lt;PORT&gt;\/ords\/&lt;SchemaAlias&gt;\/&lt;ObjectAlias&gt;\/&lt;KeyValues&gt;<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>  \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u0431\u0435\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432:<\/p>\n<pre><code class=\"sql\">GET http:\/\/&lt;server&gt;:&lt;port&gt;\/ords\/ws_test\/t_order\/<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041e\u0442\u0432\u0435\u0442<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">HTTP\/1.1 200 OK Date: Fri, 25 Oct 2019 15:39:58 GMT Content-Type: application\/json ETag: &quot;...&quot; Transfer-Encoding: chunked   {    &quot;items&quot;: [   {       &quot;id_order&quot;: 25,       &quot;num&quot;: &quot;ords-3472634&quot;,       &quot;buyer_name&quot;: &quot;Buyer Name&quot;,       &quot;dt_order&quot;: &quot;2019-10-25T12:00:00Z&quot;,       &quot;memo&quot;: &quot;\u0420\u045e\u0420\u00b5\u0421\u0403\u0421\u201a\u0420\u0455\u0420\u0406\u0421\u2039\u0420\u2116 \u0420\u00b7\u0420\u00b0\u0420\u0454\u0420\u00b0\u0420\u00b7 1. \u0420\ufffd\u0420\u00b7\u0420\u0458\u0420\u00b5\u0420\u0405\u0420\u0451\u0421\u201a\u0421\u040a \u0420\u0457\u0421\u0402\u0420\u0451\u0420\u0458\u0420\u00b5\u0421\u2021\u0420\u00b0\u0420\u0405\u0420\u0451\u0420\u00b5&quot;,       &quot;links&quot;: [      {          &quot;rel&quot;: &quot;self&quot;,          &quot;href&quot;: &quot;http:\/\/&lt;server&gt;:&lt;port&gt;\/ords\/ws_test\/t_order\/25&quot;       }]    }],    &quot;hasMore&quot;: false,    &quot;limit&quot;: 25,    &quot;offset&quot;: 0,    &quot;count&quot;: 1,    &quot;links&quot;:    [             {          &quot;rel&quot;: &quot;self&quot;,          &quot;href&quot;: &quot;http:\/\/&lt;server&gt;:&lt;port&gt;\/ords\/ws_test\/t_order\/&quot;       },             {          &quot;rel&quot;: &quot;edit&quot;,          &quot;href&quot;: &quot;http:\/\/&lt;server&gt;:&lt;port&gt;\/ords\/ws_test\/t_order\/&quot;       },             {          &quot;rel&quot;: &quot;describedby&quot;,          &quot;href&quot;: &quot;http:\/\/&lt;server&gt;:&lt;port&gt;\/ords\/ws_test\/metadata-catalog\/t_order\/&quot;       },             {          &quot;rel&quot;: &quot;first&quot;,          &quot;href&quot;: &quot;http:\/\/&lt;server&gt;:&lt;port&gt;\/ords\/ws_test\/t_order\/&quot;       }    ] }<\/code><\/pre>\n<\/div><\/div>\n<p>  <i>\u041a\u0430\u043a \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c Oracle \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0443 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a Content-Type \u2014 \u0432\u043e\u043f\u0440\u043e\u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439.<\/i><\/p>\n<pre><code class=\"sql\">GET http:\/\/&lt;server&gt;:&lt;port&gt;\/ords\/ws_test\/t_order\/25<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041e\u0442\u0432\u0435\u0442<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"sql\">HTTP\/1.1 200 OK Date: Fri, 25 Oct 2019 15:44:35 GMT Content-Type: application\/json ETag: &quot;...&quot; Transfer-Encoding: chunked   {    &quot;id_order&quot;: 25,    &quot;num&quot;: &quot;ords-3472634&quot;,    &quot;buyer_name&quot;: &quot;Buyer Name&quot;,    &quot;dt_order&quot;: &quot;2019-10-25T12:00:00Z&quot;,    &quot;memo&quot;: &quot;\u0420\u045e\u0420\u00b5\u0421\u0403\u0421\u201a\u0420\u0455\u0420\u0406\u0421\u2039\u0420\u2116 \u0420\u00b7\u0420\u00b0\u0420\u0454\u0420\u00b0\u0420\u00b7 1. \u0420\ufffd\u0420\u00b7\u0420\u0458\u0420\u00b5\u0420\u0405\u0420\u0451\u0421\u201a\u0421\u040a \u0420\u0457\u0421\u0402\u0420\u0451\u0420\u0458\u0420\u00b5\u0421\u2021\u0420\u00b0\u0420\u0405\u0420\u0451\u0420\u00b5&quot;,    &quot;links&quot;:    [             {          &quot;rel&quot;: &quot;self&quot;,          &quot;href&quot;: &quot;http:\/\/&lt;server&gt;:&lt;port&gt;\/ords\/ws_test\/t_order\/25&quot;       },             {          &quot;rel&quot;: &quot;edit&quot;,          &quot;href&quot;: &quot;http:\/\/&lt;server&gt;:&lt;port&gt;\/ords\/ws_test\/t_order\/25&quot;       },             {          &quot;rel&quot;: &quot;describedby&quot;,          &quot;href&quot;: &quot;http:\/\/&lt;server&gt;:&lt;port&gt;\/ords\/ws_test\/metadata-catalog\/t_order\/item&quot;       },             {          &quot;rel&quot;: &quot;collection&quot;,          &quot;href&quot;: &quot;http:\/\/&lt;server&gt;:&lt;port&gt;\/ords\/ws_test\/t_order\/&quot;       }    ] }<\/code><\/pre>\n<\/div><\/div>\n<p>  <a name=\"OracleRESTExample2-Step5\"><\/a><\/p>\n<h4>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438<\/h4>\n<p>  \u0414\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c HTTP-\u043c\u0435\u0442\u043e\u0434 <code>DELETE<\/code>.<\/p>\n<p>  \u0417\u0430\u043f\u0440\u043e\u0441:<\/p>\n<pre><code class=\"sql\">DELETE http:\/\/&lt;server&gt;:&lt;port&gt;\/ords\/ws_test\/t_order\/?q={&quot;id_order&quot;:25}<\/code><\/pre>\n<p>  \u0417\u0430\u043f\u0440\u043e\u0441 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u0432\u0438\u0434\u0435:<\/p>\n<pre><code class=\"sql\">DELETE http:\/\/&lt;server&gt;:&lt;port&gt;\/ords\/ws_test\/t_order\/?q=%7B%22id_order%22%3A25%7D<\/code><\/pre>\n<p>  \u041e\u0442\u0432\u0435\u0442:<\/p>\n<pre><code class=\"sql\">HTTP\/1.1 200 OK Date=Fri, 25 Oct 2019 16:23:39 GMT Content-Type=application\/json Transfer-Encoding=chunked   {&quot;rowsDeleted&quot;:1}<\/code><\/pre>\n<p>  <a name=\"OracleRESTSummary\"><\/a><\/p>\n<h3>\u0412\u044b\u0432\u043e\u0434\u044b<\/h3>\n<p>  ORDS \u2014 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0433\u0438\u0431\u043a\u0438\u0439 \u0438 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 REST. \u0412 \u043f\u043b\u0430\u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0432\u043e\u0441\u0445\u043e\u0434\u0438\u0442 Native Oracle WS \u0441 \u0435\u0433\u043e \u0442\u044f\u0436\u0435\u043b\u044b\u043c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u043e\u043c XML. \u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u043d\u0435 \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442: \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0443\u0436\u0435\u043d \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0435\u043a \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u044b\u0445 \u0411\u0414 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c \u0441 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 (\u0434\u043e 10\u201320 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443) ORDS \u2014 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a\u0430\u043a \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0442\u0430\u043a \u0438 \u0432 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438. ORDS \u0443\u0441\u0442\u0443\u043f\u0430\u0435\u0442 Native Oracle WS \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u043b\u0430\u043d\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0430: \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0432\u044b\u0434\u0430\u0435\u0442 \u0443\u0436\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0433\u043e\u0442\u043e\u0432\u0443\u044e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e (WSDL), \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u00ab\u043a\u0430\u043a \u0435\u0441\u0442\u044c\u00bb \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u0430. \u0412 ORDS \u0442\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c <a href=\"https:\/\/oracle-base.com\/articles\/misc\/oracle-rest-data-services-ords-open-api-swagger-support\">\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c<\/a> \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f, \u043d\u043e \u0434\u043b\u044f \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0441 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c (\u043a\u043e\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u043e\u0431\u0449\u0430\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432) \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0439. Oracle \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f, \u0430 \u0434\u0435\u0442\u0430\u043b\u0438 (\u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445) \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e.<\/p>\n<p>  <a name=\"Alternatives\"><\/a><\/p>\n<h2>\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b<\/h2>\n<p>  <a name=\"JavaServlet\"><\/a><\/p>\n<h3>Java Servlet<\/h3>\n<p>  \u042d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043f\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0443 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 Native Oracle WS: \u0442\u043e\u0436\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e HTTP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 Oracle, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 ACL (\u043a\u0430\u043a, \u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u0438 \u0432\u0441\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b). \u041d\u043e, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 Native Oracle WS, \u044d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0447\u0438\u0441\u0442\u044b\u043c HTTP. \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0438\u0448\u0443\u0442\u0441\u044f \u043d\u0430 Java \u0438 \u0441\u043c\u043e\u0442\u0440\u044f\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0442\u0438\u043f HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u0430 (<code>PUT<\/code>, <code>GET<\/code>, <code>POST<\/code> \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435, \u0445\u043e\u0442\u044f \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438 \u043e\u0434\u0438\u043d \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0430 \u0432\u0441\u0435 \u0442\u0438\u043f\u044b), \u0430 \u043b\u043e\u0433\u0438\u043a\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430. \u041c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0442\u0435\u043b\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u00ab\u043a\u0430\u043a \u0435\u0441\u0442\u044c\u00bb \u0432 \u043b\u043e\u0433\u0438\u043a\u0443 \u0411\u0414, \u0438 \u0442\u0430\u043c \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u0435\u0433\u043e \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c, \u043c\u043e\u0436\u043d\u043e \u0447\u0430\u0441\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 Java-\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430, \u0430 \u0438\u0437 \u0411\u0414 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0443\u0436\u0435 \u043d\u0443\u0436\u043d\u0443\u044e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0438\u0445 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>  \u0414\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0432\u043f\u043e\u043b\u043d\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0438 \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432. \u0423 \u043d\u0430\u0441 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437-\u0437\u0430 \u0436\u0435\u0441\u0442\u043a\u0438\u0445 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u043a \u0441\u0435\u0440\u0432\u0438\u0441\u0443: \u043d\u0443\u0436\u0435\u043d \u0431\u044b\u043b \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441, \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0439 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438. \u041f\u0440\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430, \u0438 \u044d\u0442\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043e\u0431\u043e\u0439\u0442\u0438. <\/p>\n<p>  \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043f\u0440\u043e \u044d\u0442\u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431 \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u0432 <a href=\"https:\/\/docs.oracle.com\/cd\/B28359_01\/appdev.111\/b28369\/xdb23jv1.htm#i1043680\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 Oracle<\/a>.<\/p>\n<p>  <a name=\"DatabaseAccessDescriptor\"><\/a><\/p>\n<h3>Database Access Descriptor (PL\/SQL Servlet)<\/h3>\n<p>  \u042d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443, \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u043c\u0430\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 PL\/SQL.<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440 URL \u2014 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u043c\u044f \u043f\u0430\u043a\u0435\u0442\u0430, \u0438\u043c\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b (GET-\u0437\u0430\u043f\u0440\u043e\u0441): <\/p>\n<pre><code class=\"sql\">GET http:\/\/&lt;server&gt;:&lt;port&gt;\/servlet_plsql\/pi_test.test_serv?p_path=ppp <\/code><\/pre>\n<p>  \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 POST-\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438\u043c\u0435\u043d\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u0432 \u0442\u0435\u043b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0447\u0435\u0440\u0435\u0437 \u0437\u043d\u0430\u043a \u00ab=\u00bb, \u0447\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0438\u043f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 (ContentType) \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c. \u041f\u0435\u0440\u0435\u0434\u0430\u0442\u044c xml- \u0438\u043b\u0438 json-\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u0432\u0438\u0434\u0435: <\/p>\n<pre><code class=\"sql\">p_proc_param_name=&lt;xml_data&gt;\u2026&lt;\/xml_data&gt;<\/code><\/pre>\n<p>  \u0422\u0430\u043a\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043a\u043e\u0433\u0434\u0430 \u0438\u043c\u0435\u0435\u043c \u0434\u0435\u043b\u043e \u0441 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u2014 \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0441 \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0442\u0438\u043f\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u043b\u0438\u0431\u043e \u0441\u043b\u043e\u0436\u043d\u0443\u044e \u043c\u043d\u043e\u0433\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432 \u044d\u0442\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f.<\/p>\n<p>  \u042d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e <a href=\"https:\/\/oracle-base.com\/articles\/10g\/dbms_epg_10gR2\">\u043e\u043f\u0438\u0441\u0430\u043d <\/a>\u043d\u0430 \u0441\u0430\u0439\u0442\u0435 ORACLE-BASE. <\/p>\n<p>  <a name=\"Conclusion\"><\/a><\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0432 Oracle \u2014 \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f, \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0430\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u0441\u0432\u0435\u0440\u0445\u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 Oracle \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u0432 \u0441\u0432\u043e\u0439 \u0430\u0440\u0441\u0435\u043d\u0430\u043b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043e\u0449\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u043e\u0440\u043e\u0434\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438\u043b\u0438 \u0447\u0430\u0441\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c \u0447\u0435\u0440\u0435\u0437 HTTP. <\/p>\n<p>  \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0447\u0435\u0442\u044b\u0440\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. <\/p>\n<p>  <b>Native Oracle WS<\/b> \u2014 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0430\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0438 \u043f\u043b\u044e\u0441\u044b: \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0439 WSDL, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0430\u0440\u0441\u0438\u043d\u0433 XML, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u041f\u041e. \u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a \u2014 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>  <b>ORDS<\/b> \u2014 \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0433\u0438\u0431\u043a\u0438\u0439 \u0438 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439. \u0418\u0437 \u043d\u0435\u0443\u0434\u043e\u0431\u0441\u0442\u0432 \u044d\u0442\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0443 Oracle \u043e\u043d \u043d\u0435 \u0432\u0445\u043e\u0434\u0438\u0442, \u0442\u043e \u0435\u0441\u0442\u044c \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438.<\/p>\n<p>  <b>Java Servlet<\/b> \u2014 \u0432\u043f\u043e\u043b\u043d\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431, \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u041f\u041e. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u0441\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0430\u0432\u0442\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432.<\/p>\n<p>  <b>PL\/SQL Servlet<\/b> \u2014 \u043d\u0430\u0438\u043c\u0435\u043d\u0435\u0435 \u0443\u0434\u0430\u0447\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434. \u0418\u0437 \u043f\u043b\u044e\u0441\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0437\u043e\u0432\u0430 \u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440 \u0447\u0435\u0440\u0435\u0437 HTTP \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u041f\u041e, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u0435\u0437 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445: \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 PL\/SQL.<\/p>\n<p>  \u0412\u0441\u0435\u043c \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435! \u041d\u0430\u0434\u0435\u044e\u0441\u044c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c \u0442\u0435\u043c, \u043a\u0442\u043e \u0442\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u0441\u0432\u044f\u0437\u0430\u043d \u0441 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430\u043c\u0438 Oracle \u0438 \u043e\u0437\u0430\u0434\u0430\u0447\u0435\u043d \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438 \u0432\u043d\u0443\u0442\u0440\u0438\u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0438 \u043c\u0435\u0436\u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0439.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b<\/b>                         <\/p>\n<div class=\"spoiler_text\"><b>Native Oracle XML DB Web Services <\/b><\/p>\n<p>  <a href=\"https:\/\/docs.oracle.com\/cd\/B28359_01\/appdev.111\/b28369\/xdb_web_services.htm#CHDDBCHB\">Using Native Oracle XML DB Web Services<\/a><\/p>\n<p>  <a href=\"https:\/\/oracle-base.com\/articles\/11g\/native-oracle-xml-db-web-services-11gr1\">Native Oracle XML DB Web Services in Oracle 11g Release 1<\/a><\/p>\n<p>  <b>ORDS<\/b><\/p>\n<p>  \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435: <a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-rest-data-services\/19.1\/aelig\/installing-REST-data-services.html#GUID-A16BCCA2-8081-4062-A635-9F7C36FC394F\">Installation, Configuration, and Development Guide<\/a><\/p>\n<p>  <a href=\"https:\/\/blog.cdivilly.com\/2015\/03\/11\/install-ords-3.0.0\/\">Install Oracle REST Data Services 3.0.X in under 5 minutes<\/a><\/p>\n<p>  CGI-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435: <a href=\"https:\/\/oracle-base.com\/articles\/misc\/oracle-rest-data-services-ords-http-headers-and-ords-specific-bind-variables\">HTTP Headers (OWA_UTIL) and ORDS-Specific Bind Variables<\/a><\/p>\n<p>  \u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0432 ORDS: <a href=\"https:\/\/oracle-base.com\/articles\/misc\/oracle-rest-data-services-ords-authentication\">Oracle REST Data Services (ORDS)&nbsp;: Authentication<\/a><\/p>\n<p>  ORDS \u0438 Open API (Swagger): <a href=\"https:\/\/oracle-base.com\/articles\/misc\/oracle-rest-data-services-ords-open-api-swagger-support\">Oracle REST Data Services (ORDS)&nbsp;: Open API 2.0 (Swagger) Support<\/a><\/p>\n<p>  ORDS, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0439 BLOB: <a href=\"http:\/\/www.grassroots-oracle.com\/2017\/12\/ords-web-services-returning-blobs.html\">ORDS web services returning BLOBs<\/a> <\/p>\n<p>  <b>Java Servlet <\/b><\/p>\n<p>  <a href=\"https:\/\/docs.oracle.com\/cd\/B28359_01\/appdev.111\/b28369\/xdb23jv1.htm#i1043680\">Writing Oracle XML DB HTTP Servlets in Java<\/a><\/p>\n<p>  <b>Database Access Descriptor (PL\/SQL Servlet)<\/b><\/p>\n<p>  <a href=\"https:\/\/oracle-base.com\/articles\/10g\/dbms_epg_10gR2\">DBMS_EPG \u2014 The Embedded PL\/SQL Gateway in Oracle 10g Database Release 2<\/a>   <\/div>\n<\/p><\/div>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/custis\/blog\/502030\/\"> https:\/\/habr.com\/ru\/company\/custis\/blog\/502030\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/custis\/blog\/502030\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/bn\/fa\/9y\/bnfa9ydnf9mlh7nubs0t86xfdm4.png\"><\/p>\n<p>  <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%92%D0%B5%D0%B1-%D1%81%D0%BB%D1%83%D0%B6%D0%B1%D0%B0\">\u0412\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u044b<\/a> \u0448\u0438\u0440\u043e\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438 \u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438\u043b\u0438 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438. \u041f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043a\u0430\u043a \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043e\u0431\u0443\u0441\u043b\u043e\u0432\u043b\u0435\u043d\u0430 \u0438\u0445&nbsp;\u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e, \u0430&nbsp;\u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438&nbsp;\u043e\u0442\u043b\u0430\u0434\u043a\u0438. \u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441&nbsp;\u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441&nbsp;\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0438&nbsp;\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 HTTP. \u0412\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0434\u0430\u044e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u043c\u0438 \u043d\u0430&nbsp;\u0440\u0430\u0437\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445. \u041f\u0440\u043e\u0441\u0442\u043e\u0442\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0437\u0430&nbsp;\u0441\u0447\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0432\u043e&nbsp;\u043c\u043d\u043e\u0433\u0438\u0435 IDE \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0438&nbsp;\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0445 \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u0441\u0430\u043c \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441 (provider side), \u0442\u0430\u043a \u0438&nbsp;\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043d\u0430&nbsp;\u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 (client side). \u041e\u0442\u043b\u0430\u0434\u043a\u0443 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0445 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u043e\u0431\u043c\u0435\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u043c\u0438&nbsp;\u2014 XML \u0438 JSON. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0443\u0442\u0438\u043b\u0438\u0442 \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438&nbsp;\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u0432&nbsp;\u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0433\u043e.<\/p>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438\u0437 \u0421\u0423\u0411\u0414 Oracle, \u0442\u043e&nbsp;\u0435\u0441\u0442\u044c \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-304017","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/304017","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=304017"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/304017\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=304017"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=304017"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=304017"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}