Oracle рдореЗрдВ рд╡реЗрдм рд╕реЗрд╡рд╛рдПрдБ



рд╡реЗрдм рд╕реЗрд╡рд╛рдПрдВрдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рдпрд╛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдЙрдирдХреА рдмрд╣реБрдореБрдЦреА рдкреНрд░рддрд┐рднрд╛ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рдбреАрдмрдЧрд┐рдВрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рдХрд╛рд░рдг рд╣реИред рдмрд╣реБрдореБрдЦреА рдкреНрд░рддрд┐рднрд╛ рдЗрдВрдЯрд░рдиреЗрдЯ рдФрд░ HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рд╕реЗ рдЬреБрдбрд╝реА рд╣реИред рд╡рд┐рднрд┐рдиреНрди рд╕реЗрд╡рд╛рдУрдВ рдФрд░ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХреАрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдм рд╕реЗрд╡рд╛рдПрдВ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЖрд╕рд╛рди рдмрдирд╛рддреА рд╣реИрдВред рдХрдИ рдЖрдИрдбреАрдИ рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЯреВрд▓ рдФрд░ рдШрдЯрдХреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиреА рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЧреНрд░рд╛рд╣рдХ рд╕реЗрд╡рд╛ рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдм рд╕реЗрд╡рд╛ (рдкреНрд░рджрд╛рддрд╛ рдкрдХреНрд╖) рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб рджреЛрдиреЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдбрд┐рдмрдЧрд┐рдВрдЧ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдорд╛рдирд╡-рдкрдардиреАрдп рдбреЗрдЯрд╛ рд╡рд┐рдирд┐рдордп рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рджреНрд╡рд╛рд░рд╛ рд╕рд░рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - XML тАЛтАЛрдФрд░ JSONред рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд,рдбрд┐рдмрдЧрд┐рдВрдЧ рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд▓реЛрдб рд╕рд╣рд┐рдд рдХрдИ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рд╣реИрдВред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдУрд░реЗрдХрд▓ рдбреАрдмреАрдПрдордПрд╕ рд╕реЗ рд╕реАрдзреЗ рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдЕрд░реНрдерд╛рддреН рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ред

рд╕рд╛рдордЧреНрд░реА

Native Oracle XML DB Web Services
    
    
         Oracle XML DB HTTP server
         HTTP
         -
         Access List (ACL)
     -
    
Oracle REST Data Service
    
    
        
        
        
        
     1: POST-
         WS
        
        
         HTTP-
        
        
        CGI-
     2: ORDS
        
         ORDS
        
        
        
    

    Java Servlet
    Database Access Descriptor (PL/SQL Servlet)

рдкреГрд╖реНрдарднреВрдорд┐


рджрд┐рдпрд╛ рдЧрдпрд╛: рдПрдХ рдмрдбрд╝реЗ рд╡рд┐рддрд░рдг рдиреЗрдЯрд╡рд░реНрдХ рдХреА рд╕реВрдЪрдирд╛ рд╡реНрдпрд╛рдкрд╛рд░ рдкреНрд░рдгрд╛рд▓реА (рд▓рдЧрднрдЧ рдПрдХ рд╣рдЬрд╛рд░ рдЦреБрджрд░рд╛ рд╕реНрдЯреЛрд░), рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдШрдЯрдХ рдФрд░ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдЯреЛрд░ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдореБрдЦреНрдп рд╕рд░реНрд╡рд░ рд╣реЛрддрд╛ рд╣реИ - рдореБрдЦреНрдп рд╡реНрдпрд╡рд╕рд╛рдп рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдУрд░реЗрдХрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ред рдХреИрд╢ рдиреЛрдбреНрд╕ рдХреЛ рдЙрдирдХреЗ рд╕реНрдерд╛рдиреАрдп рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЕрд▓рдЧ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕рдордп-рд╕рдордп рдкрд░ рдореБрдЦреНрдп рд╕рд░реНрд╡рд░ (рдбрдмреНрд▓реВрдПрд╕ рдПрд╕рдУрдПрдкреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрд┐рдХреНрд░реА рдХреЗ рдкрд░рд┐рдгрд╛рдо (рдлрд╛рдЗрд▓ рдПрдХреНрд╕рдЪреЗрдВрдЬ) рдХреЛ рд╡рд╛рдкрд╕ рджреЗрддрд╛ рд╣реИред

рдкреНрд░рдЧрддрд┐ рд╕реНрдерд┐рд░ рдирд╣реАрдВ рд░рд╣реА, рдФрд░ рдирдП рдЙрдкрдХрд░рдг рджреБрдХрд╛рдиреЛрдВ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдПред рдЗрд╕ рдЙрдкрдХрд░рдг рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рдордп-рд╕рдордп рдкрд░ рд╕реНрдЯреЛрд░ рдХреЗ рдореБрдЦреНрдп рд╕рд░реНрд╡рд░ (рдЕрд╡рдзрд┐ - рд╣рд░ рдХреБрдЫ рдорд┐рдирдЯ) рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдПрдХреАрдХрд░рдг рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рдВрджреЗрд╢ рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рд╛рд░реВрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдордиреЗ рдбреЗрдЯрд╛ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯреНрд╕ рдХреЛ рджреЗрдЦрд╛ рдФрд░ рдпрд╣ рдкрд╛рдпрд╛ рдХрд┐ рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХреА рдкреНрд░рдпреБрдХреНрдд рддрдХрдиреАрдХ рдРрд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧреАред рдФрд░ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рд╢реБрд░реВ рд╣реБрдИ ...

рдирддреАрдЬрддрди, рд╡рд╛рдВрдЫрд┐рдд рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдПрдХ рдЕрд▓рдЧ рдШрдЯрдХ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ HTTP рджреБрдирд┐рдпрд╛ рдХреЗ рд▓рд┐рдП Oracle рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓реЗрдЧрд╛: рдПрдХ рддрд░рдл, рдпрд╣ рдПрдХ рд╡реЗрдм рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛, рджреВрд╕рд░реА рддрд░рдл, рдпрд╣ JDBC рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░реЗрдЧрд╛ред рдХрдард┐рдирд╛рдИ рдпрд╣ рд╣реИ рдХрд┐ рдирдпрд╛ рдШрдЯрдХ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рд╣рдЬрд╛рд░ рд╕реНрдЯреЛрд░ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛, рдФрд░, рджреВрд╕рд░рд╛, рдПрдХ рдФрд░ рд▓рд┐рдВрдХ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ рдЬреЛ рдХрд┐ рд╕рд╛рде рд╣реЛрдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдЕрднреА рднреА рдУрд░реЗрдХрд▓ рдирд┐рд░реНрдорд┐рдд рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдерд╛ред

рдЦреЛрдЬреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЪрд╛рд░ рддрд░реАрдХреЗ рдорд┐рд▓реЗрдВрдЧреЗ:

  1. рдиреЗрдЯрд┐рд╡ рдУрд░реЗрдХрд▓ рдПрдХреНрд╕рдПрдордПрд▓ рдбреАрдмреА рд╡реЗрдм рд╕рд░реНрд╡рд┐рд╕реЗрдЬ
  2. Oracle REST рдбреЗрдЯрд╛ рд╕реЗрд╡рд╛
  3. рдЬрд╛рд╡рд╛ рд╕рд░реНрд╡рд▓реЗрдЯ
  4. рдбреЗрдЯрд╛рдмреЗрд╕ рдПрдХреНрд╕реЗрд╕ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ (PL / SQL рд╕рд░реНрд╡рд▓реЗрдЯ)

рдкрд╣рд▓реЗ рджреЛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореВрд▓ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдиреЗрдЯрд┐рд╡ рдУрд░реЗрдХрд▓ рдПрдХреНрд╕рдПрдордПрд▓ рдбреАрдмреА рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЕрд░реНрдерд╛рддреН, рдпрд╣ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдПред ORDS рдЗрд╕ рдкреБрд░рд╛рдиреА рддрдХрдиреАрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдмрди рдЧрдпрд╛ (рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдореБрдЭреЗ рдЕрднреА рднреА рдХрдбрд╝реА рдореЗрд╣рдирдд рдХрд░рдиреА рдереА рдФрд░ рдПрдХ рд╣рдЬрд╛рд░ рджреБрдХрд╛рдиреЛрдВ рдореЗрдВ ORDS рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдерд╛)ред

рджреЛ рдЕрдиреНрдп рд╡рд┐рдзрд┐рдпрд╛рдВ - рдЬрд╛рд╡рд╛ рд╕рд░реНрд╡рд▓реЗрдЯ рдФрд░ рдкреАрдПрд▓ / рдПрд╕рдХреНрдпреВрдПрд▓ рд╕рд░реНрд╡рд▓реЗрдЯ - рд╣рдордиреЗ рдореВрд▓ Oracle WS рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╕рдордп ORDS рдХреЗ рд╕рд╛рде рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЗрди рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЦреБрдж рдХреЛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рдВрджрд░реНрдн рддрдХ рд╕реАрдорд┐рдд рд░рдЦреЗрдВрдЧреЗред

рд▓реЗрдЦ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдХреБрдЫ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдЧрд╛ рдЬреЛ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕реЗрд╡рд╛ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗред

рдиреЗрдЯрд┐рд╡ рдУрд░реЗрдХрд▓ рдПрдХреНрд╕рдПрдордПрд▓ рдбреАрдмреА рд╡реЗрдм рд╕рд░реНрд╡рд┐рд╕реЗрдЬ


рдХреНрд╖рдорддрд╛рдУрдВ


рдЖрдкрдХреЛ WS SOAP (рд╕рдВрд╕реНрдХрд░рдг 1.1) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ HTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Oracle рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдБрдЪ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

  • SQL- XQuery- SOAP.
  • ( ).



  • - : , HTTP-.
  • - (WSDL), , -.
  • -. , тАФ , тАФ .
  • XML-. , , XML, - тАФ Oracle . , WS- Oracle тАФ , - .



  • WSDL , , - . тАФ WSDL, WSDL , .
  • ( 50 ). , тАФ , . , - тАФ , , .

рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреЗ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЖрд╡рд╢реНрдпрдХ рд╣реИ ( рдкреНрд░рд▓реЗрдЦрди рд╕реЗ : рдореВрд▓ рдкреНрд░рдорд╛рдгреАрдХрд░рдг: рдУрд░реЗрдХрд▓ рдПрдХреНрд╕рдПрдордмреА рдбреАрдмреА рдореВрд▓ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╢реАрд░реНрд╖рдХ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдкрд╛рда рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рднреЗрдЬрддрд╛ рд╣реИ)ред рдУрд░реЗрдХрд▓ рдореЗрдВ, рдЖрдк HTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрд╡рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдЕрдирд╛рдо рдкрд╣реБрдВрдЪ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдУрд░реЗрдХрд▓ рдПрдХреНрд╕рдПрдордмреА рдбреАрдмреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ , рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдХреЗрд╡рд▓ GET рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ POST рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЪреВрдВрдХрд┐ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА Oracle WS рдХреЗрд╡рд▓ POST рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рддрдХрдиреАрдХ рдХреЗ рд▓рд┐рдП рдЕрдирд╛рдо рдкрд╣реБрдВрдЪ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

рдЕрдиреБрдХреВрд▓рди


Native Oracle WS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдирд┐рдореНрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

  1. Oracle рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд HTTP рд╕рд░реНрд╡рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред
  2. Oracle рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЕрдВрджрд░ рдкрд╣реБрдВрдЪ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ (HTTP рдкреЛрд░реНрдЯ рдЦреЛрд▓реЗрдВ)ред
  3. рдПрдХ рд╕рд░реНрд╡рд▓реЗрдЯ рдмрдирд╛рдПрдВред
  4. ACL (рдкрд╣реБрдБрдЪ рд╕реВрдЪреА) рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред

Oracle XML DB HTTP рд╕рд░реНрд╡рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ


HTTP рд╕рд░реНрд╡рд░ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд╢реНрд░реЛрддрд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ - DESCRIPTION_LIST рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмреНрд▓реЙрдХ рдХреЛ рдЬреЛрдбрд╝рдирд╛:

(DESCRIPTION=
  (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=8080))(Presentation=HTTP)(Session=RAW)
)

рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рд╢реНрд░реЛрддрд╛ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

HTTP рдПрдХреНрд╕реЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ


  1. HTTP рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдкреЛрд░реНрдЯ рдХреА рдЬрд╛рдБрдЪред

    SELECT dbms_xdb.gethttpport() AS http_port FROM dual;

    "0" рдХреЗ рдорд╛рди рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ HTTP рдПрдХреНрд╕реЗрд╕ рдЕрдХреНрд╖рдо рд╣реИред
  2. рдкреЛрд░реНрдЯ рд╕реЗрдЯрдЕрдкред

    BEGIN
        --    web-services
        dbms_xdb.setHttpPort(8080);
        COMMIT;
    END;
    /

рдПрдХ рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░реНрд╡рд▓реЗрдЯ рдмрдирд╛рдирд╛


рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╕рд░реНрд╡рд▓реЗрдЯ рдкрдВрдЬреАрдХрд░рдг рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдПрдХ рд╕рд░реНрд╡рд▓реЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ
--   SYS
DECLARE
    l_servlet_name      VARCHAR2(32)  := 'orawsv';
BEGIN
    --   orawsv   Native Web Services
    DBMS_XDB.deleteServletMapping(l_servlet_name);
    DBMS_XDB.deleteServlet(l_servlet_name);
 
    DBMS_XDB.addServlet( NAME     => l_servlet_name
                       , LANGUAGE => 'C'
                       , DISPNAME => 'Oracle Query Web Service'
                       , DESCRIPT => 'Servlet for issuing queries as a Web Service'
                       , SCHEMA   => 'XDB');
 
    DBMS_XDB.addServletSecRole( SERVNAME => l_servlet_name
                              , ROLENAME => 'XDB_WEBSERVICES'
                              , ROLELINK => 'XDB_WEBSERVICES');
 
    DBMS_XDB.addServletMapping( PATTERN => '/orawsv/*'
                              , NAME    => l_servlet_name);
    COMMIT;
END;
/

рдПрдХреНрд╕реЗрд╕ рд╕реВрдЪреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ


HTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Oracle рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ DBMS рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдирд┐рдпрдо рдЬреЛрдбрд╝рдиреЗ рд╣реЛрдВрдЧреЗред рдпрд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд DBMS рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

ACL рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

  • рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд┐рдиреНрдпрд╛рд╕ (рдиреАрдЪреЗ) рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ;
  • рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣реА рд╣реИ, рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП ACL рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдЗрд╕ рдЦрдВрдб рдХреЗ рд╕рдВрджрд░реНрдн рд╣реЛрдВрдЧреЗ, рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдирдП рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдЙрдирдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрд╕реАрдПрд▓ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

SYS рдпреЛрдЬрдирд╛ рдореЗрдВ, рд╣рдо ACL рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
--   SYS
DECLARE
    l_ws_user       VARCHAR2(32)  := 'WS_SOAP_TEST'; --    ,        WS
    l_acl           VARCHAR2(250) := 'acl_allow_all.xml';
    l_tmp           VARCHAR2(250);
BEGIN
    EXECUTE IMMEDIATE 'GRANT XDB_WEBSERVICES TO "'||l_ws_user||'"';
    EXECUTE IMMEDIATE 'GRANT XDB_WEBSERVICES_OVER_HTTP TO "'||l_ws_user||'"';
    EXECUTE IMMEDIATE 'GRANT XDB_WEBSERVICES_WITH_PUBLIC TO "'||l_ws_user||'"';
 
    --       PL/SQL 
    BEGIN
        dbms_network_acl_admin.drop_acl(acl => '/sys/acls/'||l_acl);
    EXCEPTION
        WHEN dbms_network_acl_admin.acl_not_found THEN
            NULL;
    END;
 
    --  ACL
    dbms_network_acl_admin.create_acl( acl         => l_acl
                                     , description => 'Allow all connections'
                                     , is_grant    => TRUE
                                     , start_date  => SYSTIMESTAMP
                                     , end_date    => NULL
                                     , principal   => 'SYS'
                                     , privilege   => 'connect');
 
    dbms_network_acl_admin.assign_acl( acl        => l_acl
                                     , host       => '*'
                                     , lower_port => NULL
                                     , upper_port => NULL);
 
    --    (resolve) 
    dbms_network_acl_admin.add_privilege( acl        => l_acl
                                        , principal  => l_ws_user
                                        , is_grant   => TRUE
                                        , privilege  => 'resolve'
                                        , POSITION   => NULL
                                        , start_date => SYSTIMESTAMP
                                        , end_date   => NULL);
 
    COMMIT;
END;
/

рдпрд╣ рддреБрд░рдВрдд рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ ACL рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗрд╡рд▓ Native Oracle WS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╣реА рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕ рдЖрд▓реЗрдЦ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рдЕрдиреНрдп рд╕рднреА рддрд░реАрдХреЛрдВ рдХреА рднреА рд╣реИред

рд╡реЗрдм рд╕реЗрд╡рд╛ рдЙрджрд╛рд╣рд░рдг рдПрдХ рдмреИрдЪ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

  • рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рдЬрд┐рд╕рдореЗрдВ рд╡реЗрдм рд╕реЗрд╡рд╛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдерд┐рдд рд╣реЛрдВрдЧреЗред
  • рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛ред
  • рдкреНрд░рдХреНрд░рд┐рдпрд╛ / рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЬред
  • рдХреЛрдИ рднреА рдЙрдкрдХрд░рдг рдЬреЛ рдЖрдкрдХреЛ рд╡реЗрдм рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, SOAP UI рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ , рд▓реЗрдХрд┐рди рдЖрдк рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрдХ рдХрд┐рд╕реА рдЕрдиреНрдп рдЯреВрд▓ рдХреЛ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:

  • рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдпрд╛ рддреЛ рд╕рд░рд▓ рдпрд╛ рд╡рд╕реНрддреБ рдкреНрд░рдХрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдпрдерд╛, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╡реЗрдм рд╕реЗрд╡рд╛ рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╕реЗрд╡рд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  • рдЗрдирдкреБрдЯ рдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рдбреЗрдЯрд╛ рдХреА рдЬрдЯрд┐рд▓ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд░ (рдмреИрдЪ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ:

  1. рдпреЛрдЬрдирд╛ WS_TEST:

    CREATE USER WS_SOAP_TEST IDENTIFIED BY ws_soap_test QUOTA 200M ON USERS;
    GRANT CREATE SESSION, RESOURCE TO ws_soap_test;

    рддреБрд░рдВрдд рдПрд╕реАрдПрд▓ рдореЗрдВ рдПрдХ рдирдИ рдпреЛрдЬрдирд╛ рдЬреЛрдбрд╝реЗрдВред рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯред
  2. рдирдИ рдпреЛрдЬрдирд╛ рдореЗрдВ, рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдВ T_WS_REQ_LOG:

    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 ' HTTP-';
    COMMENT ON COLUMN T_WS_REQ_LOG.id_log IS '';
    COMMENT ON COLUMN T_WS_REQ_LOG.message IS '';
    COMMENT ON COLUMN T_WS_REQ_LOG.proc IS '';
    COMMENT ON COLUMN T_WS_REQ_LOG.dtm_request IS '/ ';
  3. рдПрдХ рд╕рд░рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЬ:

    
    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;
    /

рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡реЗрдм рд╕реЗрд╡рд╛ рдмрдирд╛рдИ рдФрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред

рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╛рд░реВрдк рдореЗрдВ URL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

http://[server]:[port]/[servlet_name]/[DB_SCHEMA]/[WS_OBJ]?wsdl

рдХрд╣рд╛рдБ:

[рд╕рд░реНрд╡рд░] - рдУрд░реЗрдХрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдХрд╛ рдбреЛрдореЗрди рдирд╛рдо рдпрд╛ рдЖрдИрдкреА рдкрддрд╛
[рдкреЛрд░реНрдЯ] - HTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреЛрд░реНрдЯ "HTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛" рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ
[HTTPlet_name] - рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рд░реНрд╡рд▓реЗрдЯ рдХрд╛ рдирд╛рдо "рд╡реЗрдм рдкрд░ рдПрдХ рд╕рд░реНрд╡рд▓реЗрдЯ рдмрдирд╛рдирд╛ред рд╕реЗрд╡рд╛ "
[DB_SCHEMA] - рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рдХрд╛ рдирд╛рдо (рдКрдкрд░реА рдорд╛рдорд▓реЗ рдореЗрдВ)
[WS_OBJ] - рд╕реЗрд╡рд╛ рдХрд╛ рдирд╛рдо (рдКрдкрд░реА рдорд╛рдорд▓реЗ рдореЗрдВ), рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдирд╛рдо рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ - рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ URL рдорд╛рдорд▓рд╛ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реИ!

рд▓рд┐рдВрдХ рдЙрджрд╛рд╣рд░рдг:

http://my.server:8080/orawsv/WS_SOAP_TEST/PK_NATIVE_WS_TEST?wsdl

рдпрджрд┐ рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЕрдкрдиреЗ WSDL рдкреИрдХреЗрдЬ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рд░реНрдорд┐рдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ:

WSDL
<definitions name="PK_NATIVE_WS_TEST"
    targetNamespace="http://xmlns.oracle.com/orawsv/WS_SOAP_TEST/PK_NATIVE_WS_TEST"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:tns="http://xmlns.oracle.com/orawsv/WS_SOAP_TEST/PK_NATIVE_WS_TEST"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
  <types>
    <xsd:schema targetNamespace="http://xmlns.oracle.com/orawsv/WS_SOAP_TEST/PK_NATIVE_WS_TEST"
     elementFormDefault="qualified">
      <xsd:element name="PROC_SIMPLEInput">
        <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="A_DATA-VARCHAR2-IN" type="xsd:string"/>
              <xsd:element name="A_ID-NUMBER-IN" type="xsd:integer"/>
            </xsd:sequence>
          </xsd:complexType>
      </xsd:element>
 
      <xsd:element name="PROC_SIMPLEOutput">
        <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="O_RESULT" type="xsd:string"/>
            </xsd:sequence>
          </xsd:complexType>
      </xsd:element>
   </xsd:schema>
  </types>
 
  <message name="PROC_SIMPLEInputMessage">
    <part name="parameters" element="tns:PROC_SIMPLEInput"/>
  </message>
 
  <message name="PROC_SIMPLEOutputMessage">
    <part name="parameters" element="tns:PROC_SIMPLEOutput"/>
  </message>
 
  <portType name="PK_NATIVE_WS_TESTPortType">
  <operation name="PROC_SIMPLE">
      <input message="tns:PROC_SIMPLEInputMessage"/>
      <output message="tns:PROC_SIMPLEOutputMessage"/>
    </operation>
  </portType>
 
  <binding name="PK_NATIVE_WS_TESTBinding"
           type="tns:PK_NATIVE_WS_TESTPortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="PROC_SIMPLE">
      <soap:operation
 soapAction="PROC_SIMPLE"/>
      <input>
        <soap:body parts="parameters" use="literal"/>
      </input>
      <output>
        <soap:body parts="parameters" use="literal"/>
      </output>
    </operation>
  </binding>
 
  <service name="PK_NATIVE_WS_TESTService">
    <documentation>Oracle Web Service</documentation>
    <port name="PK_NATIVE_WS_TESTPort" binding="tns:PK_NATIVE_WS_TESTBinding">
       <soap:address 
             location="http://******:8080/orawsv/WS_SOAP_TEST/PK_NATIVE_WS_TEST"/>
     </port>
  </service>
 
</definitions>

рд╕реЗрд╡рд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, SOAP UI рдореЗрдВ рдПрдХ рдирдпрд╛ SOAP рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред URL рдХреЗ рд░реВрдк рдореЗрдВ, рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдкрддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред

рдЦреЛрд▓рдиреЗ рдкрд░, Request 1рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдиреБрд░реЛрдз рдЯреЗрдореНрдкрд▓реЗрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдбрдмреНрд▓реНрдпреВрдПрд╕рдбреАрдПрд▓ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред

рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд рдореВрд▓ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдЬреЛрдбрд╝реЗрдВ - рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╕рдордп рд▓реЙрдЧрд┐рди рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рд╕рдорд╛рди рд╣реЛрддреЗ рд╣реИрдВред



рдЙрджрд╛рд╣рд░рдг рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдЕрдиреБрд░реЛрдз рдореЗрдВ рдПрдХ рд░реЗрдЦрд╛ рдЬреЛрдбрд╝реА рдЧрдИ рд╣реИ <pk:O_RESULT-VARCHAR2-OUT/>ред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ Oracle 12c рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИ: OUT рдЪрд░ рдХреЛ WSDL рдореЗрдВ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА Oracle WS рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред



рдХреЙрд▓ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд▓реЙрдЧ рдЯреЗрдмрд▓ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред



рдЬрд╛рдБрдЪ - рдкрд░рд┐рдгрд╛рдо


рдиреЗрдЯрд┐рд╡ рдСрд░реЗрдХрд▓ рдПрдХреНрд╕рдПрдордмреА рдбреАрдмреА рд╡реЗрдм рд╕рд░реНрд╡рд┐рд╕реЗрдЬ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдФрджреНрдпреЛрдЧрд┐рдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд╢рд░реНрддреЗ рдХрд┐ рдЗрд╕ рд╡реЗрдм рд╕реЗрд╡рд╛ (рдХреБрдЫ рд╕реЗрдХрдВрдб рдореЗрдВ рдПрдХ рдЕрдиреБрд░реЛрдз) рдкрд░ рдХреЛрдИ рднрд╛рд░реА рднрд╛рд░ рди рд╣реЛред рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдЙрдкрдпреБрдХреНрдд рд╣реИ рдЬрдм рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЗ рдкрд╛рд╕ рд╡реЗрдм рд╕реЗрд╡рд╛ (рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ, рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛, рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рддрд░реНрдХ) рдХреЗ рд▓рд┐рдП рд╕рдЦреНрдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдХреЛрдИ рд╕рдЦреНрдд рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЕрдиреБрдмрдВрдз рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд WSDL (рдирдП рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ) рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рд╡реЗрдм рд╕реЗрд╡рд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдореВрд▓ Oracle WS рддрдХрдиреАрдХ рдЕрдиреБрдкрдпреБрдХреНрдд рд╣реЛрдЧреАред

Oracle REST рдбреЗрдЯрд╛ рд╕реЗрд╡рд╛


рд╕рдВрд╕реНрдХрд░рдг 11.1 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, Oracle рдиреЗ Oracle REST рдбреЗрдЯрд╛ рд╕рд░реНрд╡рд┐рд╕ (ORDS) рдирд╛рдордХ рдПрдХ рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкреВрд░рд╛ RESTful рд╕рдорд░реНрдерди рдкреЗрд╢ рдХрд┐рдпрд╛ред

ORDS рдПрдХ рдЬрд╛рд╡рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ SQL рдФрд░ PL / SQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Oracle рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ RESTful API рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ Oracle HTTP рд╕рд░реНрд╡рд░ рдФрд░ mod_plsql рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, ORDS рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рдФрд░ рдПрдХ Oracle рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдмреАрдЪ рдПрдХ HTTP рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред рдпрд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЖрдиреЗ рд╡рд╛рд▓реА HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ - рдПрдХ рдЯреЗрдмрд▓ рдпрд╛ рдкреАрдПрд▓ / рдПрд╕рдХреНрдпреВрдПрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ред

рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдУрдЖрд░рдбреАрдПрд╕ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреА рдЬрд░реВрд░рдд рд╣реИред REST рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЖрдЧреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреАрдПрд▓ / рдПрд╕рдХреНрдпреВрдПрд▓ рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддреА рд╣реИ (рдпрд╛ рдЖрдИрдбреАрдИ рдореЗрдВ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рднреА рдЕрдЧрд░ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рд╣реИ)ред

ORDS рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ:

  • рдЬрд╛рд╡рд╛ JDK 8 рдпрд╛ рдЙрдЪреНрдЪрддрд░;
  • Oracle 11.1 рдпрд╛ рдмрд╛рдж рдХрд╛ (Oracle 11 XE рд░рд┐рд▓реАрдЬрд╝ 2 рднреА рд╕рдорд░реНрдерд┐рдд рд╣реИ)ред

рдХрдИ ORDS рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╡рд┐рдХрд▓реНрдк рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ:

  • рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдореЛрдб;
  • рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ (Oracle WebLogic рд╕рд░реНрд╡рд░, Apache Tomcat) рдкрд░ред

рдХреНрд╖рдорддрд╛рдУрдВ


ORDS рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

  • рдПрдХ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рд╢реИрд▓реА рдореЗрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВред
  • "рджреВрд░рд╕реНрде рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЙрд▓" (RPC- рд╢реИрд▓реА рдЗрдВрдЯрд░реИрдХреНрд╢рди) рдХреА рд╢реИрд▓реА рдореЗрдВ рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдмрдирд╛рдПрдБред

рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ рддреЛ ORDS рдХреА рдорджрдж рд╕реЗ рдЖрдк рдХреБрдЫ рдЦрд╛рд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ - рдЯреЗрдмрд▓, рдкреНрд░реЛрд╕реАрдЬрд░, рдлрдВрдХреНрд╢рди, рдкреИрдХреЗрдЬ рдХреЗ рдЬрд░рд┐рдП HTTP рддрдХ рдкрд╣реБрдВрдЪ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ Restful рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╢реИрд▓реА рдореЗрдВ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕рд╛рдзрди рдХреЛ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдпреВрдЖрд░рдЖрдИ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди (рд╕реАрдЖрд░рдпреВрдбреА - рдмрдирд╛рдПрдВ, рдкрдврд╝реЗрдВ, рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ, рд╣рдЯрд╛рдПрдВ) HTTP рдЕрдиреБрд░реЛрдз рд╕реЗ рд╕рдВрдЪрд╛рд▓рди рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ: рдкреАрдпреВрдЯреА, рдкреЛрд╕реНрдЯ, рдЬреАрдИрдЯреА, DELETEред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╕рдВрд╕рд╛рдзрди рдХрд░реНрдордЪрд╛рд░реА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╣реИ, рддреЛ рдпрд╣ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдлреЙрд░реНрдо рдХреЗ рдПрдХ рдпреВрдЖрд░рдЖрдИ рджреНрд╡рд╛рд░рд╛ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреА:

GET https://server:port/ords/workspace/hr/employees/7369

рдпрд╣рд╛рдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рдирд╛рдо, рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдирд╛рдо, рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдЖрдИрдбреА рдХреЛ рдпреВрдЖрд░рдЖрдИ рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрд╣ HTTP рдЕрдиреБрд░реЛрдз рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдПрдХ рд╕реЗрд▓реЗрдХреНрдЯ рдСрдкрд░реЗрд╢рди рдХрд░рддрд╛ рд╣реИред рдЕрдиреНрдп рд╕рдВрдЪрд╛рд▓рди (рдЬреЛрдбрд╝рдиреЗ, рдмрджрд▓рдиреЗ, рд╣рдЯрд╛рдиреЗ) рдХреЗ рд╕рд╛рде, рд╕рдВрдЪрд╛рд░ рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рд╕рдорд╛рди рд╣реИ: рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдорд╛рд░реНрдЧ URI рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдб рдорд╛рдиред

рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдВрд╕рд╛рдзрди рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЙрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ (CRUD) рдХреЗ рд╕рдорд╛рди рд╣реА рд╕рдм рдХреБрдЫ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реНрдХ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдкреИрдХреЗрдЬ рд╕реЗ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЙрд▓ рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдХреЗ рдПрдХ HTTP рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

http://localhost:8080/ords/my_schema/my_pkg/MY_PROC

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ JSON рдкреНрд░рд╛рд░реВрдк рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ {"param" : "value"}ред рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА Oracle WS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди REST рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ SOAP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рджреНрд╡рд╛рд░рд╛ рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдкреЗрд╢реЗрд╡рд░реЛрдВ

  • рдПрдХ рд▓рдЪреАрд▓рд╛ рддрдВрддреНрд░ рдЬреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдЬрдЯрд┐рд▓рддрд╛ рдХреА рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
  • рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рд╕рд╛рджрдЧреА: рдПрдХ рдкреАрдПрд▓ / рдПрд╕рдХреНрдпреВрдПрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╡реЗрдм рд╕реЗрд╡рд╛ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ SQL рдбреЗрд╡рд▓рдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдПрдХ REST API рдмрдирд╛рдХрд░ рдПрдХ рдорд╛рдЙрд╕ рдХреНрд▓рд┐рдХ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдХреЛрдб рд▓реЗрдЦрди рдХреЗ рд╕рд╛рде рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред
  • рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рдмрд┐рдирд╛ рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред

рдЛрдг

  • ORDS рдорд╛рдирдХ рдУрд░реЗрдХрд▓ рдкреИрдХреЗрдЬ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ - рдЗрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрд╕реЗрдВрд╕, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИрдВ)ред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣рдЬрд╛рд░реЛрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рд╣реИрдВ рддреЛ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдЕрдиреБрдХреВрд▓рди


ORDS рдХреЛ рджреЛ рдореЛрдб рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдореЛрдб рдореЗрдВред

рдпрд╣ рдЖрд▓реЗрдЦ рдХреЗрд╡рд▓ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдореЛрдб рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддрд╛ рд╣реИред

ORDS рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ:

  1. рд╕реНрдерд╛рдкрдирд╛ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред
  2. ODRS рд╕реНрдерд╛рдкрдирд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВред
  3. ORDS рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред
  4. ACL рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ (рдЗрдЪреНрдЫрд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рдХреЗ рд▓рд┐рдП)ред

рд╕рдорд╛рдпреЛрдЬрди


ORDS рд╡рд┐рддрд░рдг рдореЗрдВ рдПрдХ рдРрд╕реА рдлрд╝рд╛рдЗрд▓ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрддрд╛ рд╣реИ:

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

рдорд╛рдирдХреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ

рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди-рдореЛрдб рдХреЗ рд▓рд┐рдП рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рдкреИрд░рд╛рдореАрдЯрд░рд╡рд┐рд╡рд░рдг
db.hostnameOracle рдбрд╛рдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдХрд╛ рдирд╛рдо рдпрд╛ рдЖрдИрдкреА рдкрддрд╛
db.portDB рдкреЛрд░реНрдЯ (рдЬреИрд╕реЗ 1521)
db.servicenameрд╕рд░реНрд╡рд░рдирд╛рдо рдбреЗрдЯрд╛рдмреЗрд╕
db.usernamePL / SQL рдЧреЗрдЯрд╡реЗ рдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдоред рдбрд┐рдлрд╝реЙрд▓реНрдЯ = APEX_PUBLIC_USER, рд▓реЗрдХрд┐рди рдЙрджрд╛рд╣рд░рдг рдореЗрдВ APEX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЦрд╛рд▓реА рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ
db.passwordрдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╛рд╕рд╡рд░реНрдб (рднреА рдирд╣реАрдВ рднрд░реЗрдВ)
migrate.apex.restORDS рдХреЛ рд░реЗрд╕реНрдЯрдлреБрд▓ рдЕрдкреЗрдХреНрд╕ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рд╕рдВрдХреНрд░рдордгред рдпрджрд┐ APEX рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЭреВрдареЗ рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред
rest.services.apex.addAPEX рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП ORDS рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
rest.services.ords.addORDS (ORDS_PUBLIC_USER рдФрд░ ORDS_METADATA) рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рд╕реЗрдЯ рдХрд░реЗрдВред рдорд╛рди рд╕рддреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
schema.tablespace.defaultORDS_METADATA рд╕реНрдХреАрдорд╛ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рддрд╛рд▓рд┐рдХрд╛ рд╕реНрдерд╛рди
schema.tablespace.tempORDS_METADATA рд╕реНрдХреАрдорд╛ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдерд╛рдпреА рдЯреЗрдмрд▓рд╕реНрдкреЗрд╕
standalone.http.portрдЬрд┐рд╕ рдкреЛрд░реНрдЯ рдкрд░ ORDS рдЪрд▓реЗрдЧрд╛ред рдЗрд╕ рдкреЛрд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ WS рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП URI рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
user.tablespace.defaultORDS_PUBLIC_USER рд╕реНрдХреАрдорд╛ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рддрд╛рд▓рд┐рдХрд╛ рд╕реНрдерд╛рди
user.tablespace.tempORDS_PUBLIC_USER рд╕реНрдХреАрдорд╛ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдерд╛рдпреА рддрд╛рд▓рд┐рдХрд╛ рд╕реНрдерд╛рди
рдирддреАрдЬрддрди, рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдиреА рдЪрд╛рд╣рд┐рдП:

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

рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреВрд░реА рд╣реЛ рдЧрдИ рд╣реИрдВ, рдЖрдк рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рд╕реНрдерд╛рдкрдирд╛


рд╣рдо OS рдореЗрдВ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

java -jar ords.war

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ paramsрдмрдЧрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рд▓реА рдЧрдИ рд╣реИ ords.warред рдЖрдк рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ --parameterFile:

java -jar ords.war --parameterFile /path/to/params/myown_params.properties

рд╕реНрдерд╛рдкрдирд╛ рд╕рдВрд╡рд╛рдж рдореЗрдВ, рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░реЗрдВ:

  1. рд╣рдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдкрде рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ conf - рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЙрд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЬрд╣рд╛рдВ рдлрд╝рд╛рдЗрд▓ рд╕реНрдерд┐рдд рд╣реИ ords.war, рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреА confрдЬрд┐рд╕рдореЗрдВ ORDS рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдИ рдЬрд╛рдПрдВрдЧреА)ред
  2. рдЖрджреЗрд╢ рдХреЗ рдмрд╛рдж ORDS_PUBLIC_USER рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░реЗрдВ, рд╣рдо рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ ORDS_PUBLIC_USERред рдЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рддрд╣рдд, ORDS рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдЧрд╛ред
  3. рдкреНрд░реЙрдореНрдкреНрдЯ рдПрдВрдЯрд░ 1 рдХреЗ рдмрд╛рдж рдпрджрд┐ рдЖрдк рдЗрд╕ рдЪрд░рдг рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП PL / SQL рдЧреЗрдЯрд╡реЗ рдпрд╛ 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо "2" рдХрд╛ рдЙрддреНрддрд░ рджреЗрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо APEX рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рдЗрд╕рд╕реЗ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ mod_plsqlред
  4. рдирд┐рд░реНрджреЗрд╢ 1 рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдпрджрд┐ рдЖрдк [1] рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдореЛрдб рдпрд╛ 2 рдореЗрдВ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо "1" рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддреЗ рд╣реИрдВред
  5. рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдмрд╛рдж 1 рджрд░реНрдЬ рдХрд░реЗрдВ рдпрджрд┐ рдПрдЪрдЯреАрдЯреАрдкреАрдПрд╕ [1] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП HTTP рдпрд╛ 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо 1 рдЙрддреНрддрд░ рджреЗрддреЗ рд╣реИрдВред

рд╕реНрдерд╛рдкрдирд╛ рд╕рдВрд╡рд╛рдж
D:\ords-19.2.0.199.1647>java -jar ords.war install
This Oracle REST Data Services instance has not yet been configured.
Please complete the following prompts


Enter the location to store configuration data: conf
Enter the database password for ORDS_PUBLIC_USER:
Confirm password:
03, 2019 2:47:49 PM oracle.dbtools.rt.config.setup.SchemaSetup getInstallOrUpgrade
WARNING: Failed to connect to user ORDS_PUBLIC_USER jdbc:oracle:thin:@//***YOUR_HOST_NAME.DOMAIN***:1521/***YOUR_SERVICE_NAME.DOMAIN***

Enter 1 if you want to use PL/SQL Gateway or 2 to skip this step.
If using Oracle Application Express or migrating from mod_plsql then you must enter 1 [1]:2
03, 2019 2:48:32 PM
INFO: reloaded pools: []
Enter 1 if you wish to start in standalone mode or 2 to exit [1]:
Enter 1 if using HTTP or 2 if using HTTPS [1]:
2019-09-03 14:48:49.754:INFO::main: Logging initialized @4276887ms to org.eclipse.jetty.util.log.StdErrLog
03, 2019 2:48:49 PM
INFO: HTTP and HTTP/2 cleartext listening on port: 8082
03, 2019 2:48:50 PM
INFO: Disabling document root because the specified folder does not exist: D:\ords-19.2.0.199.1647\conf\ords\standalone\doc_root
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at oracle.dbtools.jarcl.Entrypoint.invoke(Entrypoint.java:66)
at oracle.dbtools.jarcl.Entrypoint.main(Entrypoint.java:89)
Caused by: java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Unknown Source)
at java.lang.AbstractStringBuilder.ensureCapacityInternal(Unknown Source)
at java.lang.AbstractStringBuilder.append(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source)
at java.util.AbstractMap.toString(Unknown Source)
at java.lang.String.valueOf(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source)
at oracle.dbtools.jarcl.zip.ZipIndex.toString(ZipIndex.java:166)
at java.lang.String.valueOf(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source)
at oracle.dbtools.jarcl.JarClassLoader.toString(JarClassLoader.java:51)
at org.eclipse.jetty.server.ClassLoaderDump.dump(ClassLoaderDump.java:67)
at org.eclipse.jetty.util.component.Dumpable.dumpObjects(Dumpable.java:225)
at org.eclipse.jetty.util.component.ContainerLifeCycle.dumpObjects(ContainerLifeCycle.java:746)
at org.eclipse.jetty.server.handler.ContextHandler.dump(ContextHandler.java:259)
at org.eclipse.jetty.util.component.Dumpable.dumpObjects(Dumpable.java:162)
at org.eclipse.jetty.util.component.ContainerLifeCycle.dumpObjects(ContainerLifeCycle.java:746)
at org.eclipse.jetty.util.component.ContainerLifeCycle.dump(ContainerLifeCycle.java:701)
at org.eclipse.jetty.util.component.Dumpable.dump(Dumpable.java:62)
at org.eclipse.jetty.util.component.ContainerLifeCycle.dump(ContainerLifeCycle.java:684)
at oracle.dbtools.standalone.StandaloneConfiguration.start(StandaloneConfiguration.java:241)
at oracle.dbtools.standalone.Standalone.execute(Standalone.java:508)
at oracle.dbtools.cmdline.DefaultCommand.execute(DefaultCommand.java:137)
at oracle.dbtools.cmdline.Commands.execute(Commands.java:207)
at oracle.dbtools.cmdline.Commands.main(Commands.java:163)
at oracle.dbtools.cmdline.Commands.main(Commands.java:368)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at oracle.dbtools.jarcl.Entrypoint.invoke(Entrypoint.java:66)

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, ORDS рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд╛рд▓реА рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреА, рдФрд░ ORDS рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдпреЛрдЬрдирд╛рдПрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреАред

рджреЗрдЦ рдпрд╣ рднреА: 5 рдорд┐рдирдЯ рдХреЗ рдЕрдВрджрд░ Oracle REST рдбреЗрдЯрд╛ рд╕реЗрд╡рд╛рдПрдБ 3.0.X рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ ред

рдкреНрд░рдХреНрд╖реЗрдкрдг


рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдореЛрдб рдореЗрдВ рд╢реБрд░реВ рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

java -jar ords.war standalone

рд╕рдВрд╡рд╛рдж рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ
D:\ords-19.2.0.199.1647>java -jar ords.war standalone
2019-09-03 15:52:45.825:INFO::main: Logging initialized @2079ms to org.eclipse.jetty.util.log.StdErrLog
03, 2019 3:52:45 PM
INFO: HTTP and HTTP/2 cleartext listening on port: 8082
03, 2019 3:52:45 PM
INFO: Disabling document root because the specified folder does not exist: D:\ords-19.2.0.199.1647\conf\ords\standalone\doc_root
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
2019-09-03 15:52:47.179:INFO:oejs.session:main: DefaultSessionIdManager workerName=node0
2019-09-03 15:52:47.179:INFO:oejs.session:main: No SessionScavenger set, using defaults
2019-09-03 15:52:47.180:INFO:oejs.session:main: node0 Scavenging every 660000ms
03, 2019 3:52:48 PM
INFO: Configuration properties for: |apex|pu|
db.hostname=***YOUR_HOST_NAME.DOMAIN***
db.password=******
db.port=1521
db.servicename=***YOUR_SERVICE_NAME.DOMAIN***
db.username=ORDS_PUBLIC_USER
resource.templates.enabled=true

03, 2019 3:52:48 PM
WARNING: *** jdbc.MaxLimit in configuration |apex|pu| is using a value of 10, this setting may not be sized adequately for a production environment ***
03, 2019 3:52:48 PM
WARNING: *** jdbc.InitialLimit in configuration |apex|pu| is using a value of 3, this setting may not be sized adequately for a production environment ***
03, 2019 3:52:50 PM
INFO: Oracle REST Data Services initialized
Oracle REST Data Services version : 19.2.0.r1991647
Oracle REST Data Services server info: jetty/9.4.z-SNAPSHOT

2019-09-03 15:52:50.484:INFO:oejsh.ContextHandler:main: Started o.e.j.s.ServletContextHandler@d56d67{/ords,null,AVAILABLE}
2019-09-03 15:52:50.658:INFO:oejs.AbstractConnector:main: Started ServerConnector@12325ad{HTTP/1.1,[http/1.1, h2c]}{0.0.
0.0:8082}
2019-09-03 15:52:50.659:INFO:oejs.Server:main: Started @6914ms

рдЙрд╕рдХреЗ рдмрд╛рдж, ORDS рдЙрда рд░рд╣рд╛ рд╣реИ рдФрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рд╡реЗрдм рд╕реЗрд╡рд╛ рдХрд╛ рдкрддрд╛ http: // <hostname>: / ords / ... рд╣реЛрдЧрд╛, рдЬрд╣рд╛рдВ <hostname> ORDS рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдХрд╛ рдирд╛рдо рд╣реИ (рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдирд╛рдо рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд ORDS рдХрд┐рд╕реА рдЕрдиреНрдп рд╣реЛрд╕реНрдЯ рдкрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ), <рдкреЛрд░реНрдЯ> - ORDS рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреЛрд░реНрдЯред

рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЖрдк рдУрдПрд╕ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдУрдЖрд░рдбреАрдПрд╕ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХреНрд╕реЗрд╕ рд╕реЗрдЯрд┐рдВрдЧ


рдФрд░ рдЕрдВрддрд┐рдо рдЪрд░рдг ACL рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реИред рдЪрд░рдг рдореВрд▓ рдирд┐рд╡рд╛рд╕реА Oracle WS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ ред

рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рдмрдирд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдЗрд╕ рдЪрд░рдг рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВрдЧреЗ рдЬрдм рдЖрдкрдХреЛ рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЕрдм рддрдХ, рд╣рдо рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдкреВрд░реЗ рд╣реЛ рдЪреБрдХреЗ рд╣реИрдВ, рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝реЗрдВред

рдЙрджрд╛рд╣рд░рдг 1: POST рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░


рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрд░рдкреАрд╕реА-рд╕реНрдЯрд╛рдЗрд▓ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рдХрд▓реНрдк рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЕрд░реНрдерд╛рддреН, рд╣рдо рдПрдХ рд╡реЗрдм рд╕реЗрд╡рд╛ рд╡рд┐рдзрд┐ рдмрдирд╛рдПрдВрдЧреЗ, рдЬрд┐рд╕рдХреЗ рд╣реИрдВрдбрд▓рд░ рдПрдХ рдмреИрдЪ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛрдЧреАред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдерд╛ рдХрд┐ рд╡рд┐рддрд░рдг рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдУрдЖрд░рдбреАрдПрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдЗрд╕рдХреА рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рдерд╛ред рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдирдП рддрд░реАрдХреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд╡рд░рд┐рдд рдФрд░ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рддрд░реАрдХрд╛ рдирд┐рдХрд▓рд╛ - рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рд╕реЗ рдПрдкреАрдЖрдИ рддрдХ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗред

рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, ORDS рд╕рдорд░реНрдерди SQL рдбреЗрд╡рд▓рдкрд░ (Oracle рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ IDE) рдореЗрдВ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред SQL рдбреЗрд╡рд▓рдкрд░ рдореЗрдВ, рд╡реЗрдм рд╕реЗрд╡рд╛рдПрдБ рдмрдирд╛рдирд╛ рд╕реАрдзреЗ рдореЗрдиреВ рдЖрдЗрдЯрдо рдпрд╛ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИред

рдЗрд╕ рдЖрд▓реЗрдЦ рдореЗрдВ, SQL рдбреЗрд╡рд▓рдкрд░ (рд╕рдВрд╕реНрдХрд░рдг 18) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди IDE рдореЗрдВ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд PL / SQL рдХреЛрдб рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред

рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬрд┐рд╕ рдкрд░ рдкреНрд░рдпреЛрдЧ рдХрд┐рдП рдЧрдП рдереЗ:

SQL> 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	12.2.0.1.0	Production
TNS FOR Linux: Version 12.2.0.1.0 - Production
NLSRTL Version 12.2.0.1.0 - Production

WS рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдирд╛


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдПрдХ рдирдИ рдпреЛрдЬрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдЗрд╕реЗ рдмрдирд╛рдПрдВ:

CREATE USER WS_TEST IDENTIFIED BY ws_test QUOTA 200M ON USERS;
GRANT CREATE SESSION, RESOURCE TO ws_test;

рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рдХреА рд╕реНрдерд╛рдкрдирд╛


рдЖрд░реЗрдЦ рдмрдирдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ ORDS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд▓рдн рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдЗрд╕рдХреЗ рд▓рд┐рдП:

  1. SQL рдбреЗрд╡рд▓рдкрд░ рдореЗрдВ, рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдПрдБ WS_TESTред
  2. рдХрдиреЗрдХреНрд╢рди рдХреА рд╕реВрдЪреА рдореЗрдВ, рдирдП рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдкрд░ рдХреЙрд▓ рдХрд░реЗрдВред рдмрд╛рдХреА рд╕реЗрд╡рд╛рдПрдБ рдЪреБрдиреЗрдВ тЖТ REST рд╕реЗрд╡рд╛рдПрдБ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ ... :


  3. рд╕рдВрд╡рд╛рдж рдореЗрдВ, рд╕реНрдХреАрдорд╛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ рдХреЗ рдЖрдЧреЗ рд╕реНрдерд┐рдд рдмреЙрдХреНрд╕ рдХреЛ рдЪреЗрдХ рдХрд░реЗрдВ ( рдпрджрд┐ рдЖрдк рдпреЛрдЬрдирд╛ рдХреЗ рдирд╛рдо рдХреЗ рдмрдЬрд╛рдп URI рдореЗрдВ рдЕрдиреНрдп рдкрд╛рда рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдк " рд╕реНрдХреАрдорд╛ рдЙрд░реНрдл " рдкреИрд░рд╛рдореАрдЯрд░ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ ws_test):


  4. "рдЕрдЧрд▓рд╛" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ , рд╣рдо рдкреАрдПрд▓ / рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЛрдб рджреЗрдЦреЗрдВрдЧреЗ рдЬреЛ рдЕрдВрддрддрдГ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдФрд░ рдЬрд┐рд╕реЗ рдЖрдк рдЖрдИрдбреАрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдЦреБрдж рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ):



рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ:

BEGIN
    ORDS.ENABLE_SCHEMA( p_enabled             => TRUE
                      , p_schema              => 'WS_TEST'
                      , p_url_mapping_type    => 'BASE_PATH'
                      , p_url_mapping_pattern => 'ws_test'
                      , p_auto_rest_auth      => FALSE);
 
    COMMIT;
END;
/

рдПрдХ рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдирд╛


рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рд╕рдВрд╕рд╛рдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдПрдХ рдореЙрдбреНрдпреВрд▓ рдПрдХ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдЗрдХрд╛рдИ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХрдИ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рд╕рдореВрд╣рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдПрдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реЗрдм рд╕реЗрд╡рд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рд╕рдВрд╕рд╛рдзрди рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред

рдкрд░ рд╕реНрд░реЛрдд :

рд╕рдВрд╕рд╛рдзрди рдореЙрдбреНрдпреВрд▓: рдПрдХ рд╕рдВрдЧрдардирд╛рддреНрдордХ рдЗрдХрд╛рдИ рд╕рдореВрд╣ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рдВрд╕рд╛рдзрди рдЯреЗрдореНрдкреНрд▓реЗрдЯ: рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд░рддрд┐рд╖реНрдард╛ рд╡рд╛рд▓реА рд╕реЗрд╡рд╛ рдЬреЛ URI (рдпреВрдирд┐рд╡рд░реНрд╕рд▓ рд░рд┐рд╕реЛрд░реНрд╕ рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╝рд╛рдпрд░) рдХреЗ рдХреБрдЫ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рдпреВрдЖрд░рдЖрдИ рдХрд╛ рд╕реЗрдЯ рд╕рдВрд╕рд╛рдзрди рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдпреВрдЖрд░рдЖрдИ рдкреИрдЯрд░реНрди рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдСрдирд▓рд╛рдЗрди рд╕реНрдЯреЛрд░ рдХреЗ рд▓рд┐рдП, рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИshop - рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕реНрдЯреЛрд░ рдХреЗ рд╕рднреА рдПрдкреАрдЖрдИ рд╕рдВрдпреБрдХреНрдд рд╣реЛрдВрдЧреЗред рдЯреЗрдореНрдкрд▓реЗрдЯ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕рд╛рдзрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдСрд░реНрдбрд░ (рдЯреЗрдореНрдкрд▓реЗрдЯ order), рдЙрддреНрдкрд╛рдж рд╕реВрдЪреА (рдЯреЗрдореНрдкрд▓реЗрдЯ item), рднреБрдЧрддрд╛рди (рдЯреЗрдореНрдкрд▓реЗрдЯ payment), рдЖрджрд┐ред

рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрди рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  1. рдСрдмреНрдЬреЗрдХреНрдЯ рдЯреНрд░реА рдореЗрдВ, REST рдбреЗрдЯрд╛ рд╕реЗрд╡рд╛ рдЕрдиреБрднрд╛рдЧ рдЦреЛрд▓реЗрдВ, рдореЙрдбреНрдпреВрд▓ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдкрд░ рдХреЙрд▓ рдХрд░реЗрдВ , рдирдпрд╛ рдореЙрдбреНрдпреВрд▓ рдЪреБрдиреЗрдВ ... :


  2. рдореЙрдбреНрдпреВрд▓ рдирд┐рд░реНрдорд╛рдг рд╕рдВрд╡рд╛рдж рдореЗрдВ, рдореЙрдбреНрдпреВрд▓ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ ( shop), рдЙрдкрд╕рд░реНрдЧ URI (рдпрд╣ рднреА рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ shop - рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣рдо рддреБрд░рдВрдд рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗрдм рд╕реЗрд╡рд╛ рдкрддрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреНрдпрд╛ рд╣реЛрдЧрд╛), рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЗ рд╕рд╛рдордиреЗ рдПрдХ рдкрдВрдЬрд╛ рдбрд╛рд▓реЗрдВ , "рдЕрдЧрд▓рд╛>" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ :


  3. рдЕрдЧрд▓реЗ рд╕рдВрд╡рд╛рдж рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП order, рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ , рдФрд░ рдлрд┐рд░ "рдЕрдЧрд▓рд╛>" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред

    рдЕрдВрддрд┐рдо рд╕рдВрд╡рд╛рдж рдореЗрдВ, рд╣рдо рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рднреА рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред SQL рдЯреИрдм рдкрд░, рдЖрдк PL / SQL рдХреЛрдб рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдЖрдк рд╕рдорд╛рдкреНрдд рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВрдЧреЗ :



рдПрдХ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП shop , рдЖрдк рдЕрдзрд┐рдХ рдкреИрдЯрд░реНрди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ - рдСрдмреНрдЬреЗрдХреНрдЯ рдЯреНрд░реА рдореЗрдВ рднреА, рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЬреЛрдбрд╝реЗрдВ ... рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реБрдП ред

рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╕реВрдЪреАрдХрд░рдг
BEGIN
    ORDS.DEFINE_MODULE( p_module_name    => 'shop'
                      , p_base_path      => 'shop'
                      , p_items_per_page =>  25
                      , p_status         => 'PUBLISHED'
                      , p_comments       => NULL);
 
    ORDS.DEFINE_TEMPLATE( p_module_name    => 'shop'
                        , p_pattern        => 'order'
                        , p_priority       => 0
                        , p_etag_type      => 'HASH'
                        , p_etag_query     => NULL
                        , p_comments       => NULL);
 
    COMMIT;
END;
/

HTTP рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдирд╛


рдЕрдм рд╣рдореЗрдВ рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ HTTP рдЕрдиреБрд░реЛрдз рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рддрд░реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗред

рд╣рдореЗрдВ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдмрд▓ рдЪрд╛рд╣рд┐рдП рдФрд░ рдПрдХ рдкреИрдХреЗрдЬ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдХреЛрдб рд╣реЛрдЧрд╛ред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдВ:
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 '  HTTP- (ORDS)';
COMMENT ON COLUMN T_WS_LOG.id_log IS '';
COMMENT ON COLUMN T_WS_LOG.message IS ' ';
COMMENT ON COLUMN T_WS_LOG.request_header IS ' ';
COMMENT ON COLUMN T_WS_LOG.request_body IS ' ';
COMMENT ON COLUMN T_WS_LOG.response_header IS ' ';
COMMENT ON COLUMN T_WS_LOG.response_body IS ' ';
COMMENT ON COLUMN T_WS_LOG.dtz_log IS '/  ';
ALTER TABLE T_WS_LOG ADD CONSTRAINT PK_T_WS_LOG PRIMARY KEY (ID_LOG) USING INDEX;

рдПрдХ рдкреИрдХреЗрдЬ рдмрдирд╛рдПрдБ:
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 <= l_length LOOP
        l_buffer := UTL_RAW.cast_to_varchar2(UTL_RAW.convert( r            => dbms_lob.substr(a_blob, l_amount, l_offset)
                                                            , from_charset => a_from_charset
                                                            , to_charset   => a_to_charset));
        IF LENGTH(l_buffer) > 0 THEN
            dbms_lob.writeappend(l_clob, LENGTH(l_buffer), l_buffer);
        END IF;
        l_offset := l_offset + l_amount;
        EXIT WHEN l_offset > 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
    --      
    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 := '{ "result" : "success" }';
 
    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 => l_response_status, bclose_header => FALSE);
    OWA_UTIL.MIME_HEADER(ccontent_type => l_ccontent_type, bclose_header => FALSE);
    OWA_UTIL.HTTP_HEADER_CLOSE();
    htp.p(l_resp);
END process_request;
 
END PK_ORDS_API;
/

рдЕрдм рдмрдирд╛рдП рдЧрдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред HTTP рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝реЗрдВ POSTред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ:

  1. рд╣рдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝реЗрдВ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ HTTP рд╡рд┐рдзрд┐ рдЪреБрдиреЗрдВ:

  2. . SQL Worksheet PL/SQL-, HTTP- POST. , process_request . , bind- :body тАФ ORDS, ( BLOB). . :body_text, CLOB. , , , ORDS . :body_text , ┬л┬╗ . :body, CLOB . , :


  3. Save REST Handler тАФ .

    POST-:

    DECLARE
        l_blob BLOB := :body;
    BEGIN
        PK_ORDS_API.process_request(a_request => PK_ORDS_API.blob2clob(l_blob));
    EXCEPTION
        WHEN OTHERS THEN
            OWA_UTIL.STATUS_LINE(nstatus => 500, bclose_header => FALSE);
            OWA_UTIL.MIME_HEADER(ccontent_type => 'application/json');
            htp.p('{ "result" : "error", "message" : "'||SQLERRM||'" }');
    END;

    рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП PL / SQL рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, ORDS рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдореЗрдВ, REST рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдирд┐рд░реНрдорд╛рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд╣рд╛рдВ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░:


рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб
-- 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             => TRUE,
      p_schema              => 'WS_TEST',
      p_url_mapping_type    => 'BASE_PATH',
      p_url_mapping_pattern => 'ws_test',
      p_auto_rest_auth      => TRUE);    
 
  ORDS.DEFINE_MODULE(
      p_module_name    => 'shop',
      p_base_path      => '/shop/',
      p_items_per_page =>  25,
      p_status         => 'PUBLISHED',
      p_comments       => NULL);      
  ORDS.DEFINE_TEMPLATE(
      p_module_name    => 'shop',
      p_pattern        => 'order',
      p_priority       => 0,
      p_etag_type      => 'HASH',
      p_etag_query     => NULL,
      p_comments       => NULL);
  ORDS.DEFINE_HANDLER(
      p_module_name    => 'shop',
      p_pattern        => 'order',
      p_method         => 'POST',
      p_source_type    => 'plsql/block',
      p_items_per_page =>  0,
      p_mimes_allowed  => '',
      p_comments       => NULL,
      p_source         => 
'DECLARE
    l_blob BLOB := :body;
BEGIN
    PK_ORDS_API.process_request(a_request => PK_ORDS_API.blob2clob(l_blob));
EXCEPTION
    WHEN OTHERS THEN
        OWA_UTIL.STATUS_LINE(nstatus => 500, bclose_header => FALSE);
        OWA_UTIL.MIME_HEADER(ccontent_type => ''application/json'');
        htp.p(''{ "result" : "error", "message" : "''||SQLERRM||''" }'');
END;'
      );
 
 
  COMMIT; 
END;


рдзреНрдпрд╛рди рджреЗрдВ: рдпрджрд┐ рдЖрдк рдореЙрдбреНрдпреВрд▓ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ ORDS.DEFINE_MODULEрдлрд┐рд░ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рднреА рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рд╣реЛрдЧреА!

рдХреЙрд▓ рдЙрджрд╛рд╣рд░рдг


рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рд╣рдорд╛рд░реА рд╡реЗрдм рд╕реЗрд╡рд╛ рддреИрдпрд╛рд░ рд╣реИред рдпрд╣ рдЕрдкрдиреЗ рдХрд╛рдо рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред

рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдиреБрд░реЛрдз рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

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)
 
{ "message" : "test" }

рдЬрд╡рд╛рдм рдореЗрдВ, рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:

HTTP/1.1 200 OK
Date: Wed, 23 Oct 2019 16:54:53 GMT
Content-Type: application/json
Transfer-Encoding: chunked
 
{ "result" : "success" }

рд╡рд┐рдзрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд▓реЙрдЧ рдЯреЗрдмрд▓ рдореЗрдВ рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдирд┐рдХрд╛рдп рдХреЗ рд╕рд╛рде рдПрдХ рд░рд┐рдХреЙрд░реНрдб рд╣реИ:



рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рднреЗрдЬрд╛ рдЧрдпрд╛ HTTP рдЕрдиреБрд░реЛрдз рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреИрдХреЗрдЯ рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЕрдиреБрд░реЛрдз рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░


рдКрдкрд░, рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡реЗрдм рд╕реЗрд╡рд╛ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрд╛ рд╣реИред рдЕрдм рд╣рдо рдЕрдиреБрд░реЛрдз рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рдХрд░ рдХрд╛рд░реНрдп рдХреЛ рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред

рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ:

Via URLред рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рдирдХ рд░реВрдк рдореЗрдВ URL рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ:

http://...URI...?p1=val1&p2=val2

рд╡рд╛рдпрд╛ рд╣реЗрдбрд░ред рдкреИрд░рд╛рдореАрдЯрд░ рдЕрдиреБрд░реЛрдз рд╢реАрд░реНрд╖рд▓реЗрдЦ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ рдЬреИрд╕рд╛ p1: val1

рдХрд┐ рдЕрдиреБрд░реЛрдз рд╣реИрдВрдбрд▓рд░ рдореЗрдВ ORDS рдореЗрдВ, рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрд╛рдЗрдВрдб рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╣рдо рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ: prm1- URI prm2рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ , - рдЕрдиреБрд░реЛрдз рд╣реИрдбрд░ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ред

рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, PK_ORDS_API.process_request:рд╣рдо рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ a_prm_uriрдФрд░ a_prm_hdr, рдЬрд┐рд╕рдХреЗ рдЕрдиреБрд░реЛрдз рд╕реЗ рд╣рдорд╛рд░реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдореВрд▓реНрдп рдЖрдПрдВрдЧреЗред

рдирдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рд╣реИрдВрдбрд▓рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ
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
    --      
    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 := '{ "result" : "success" }';
 
    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 => l_response_status, bclose_header => FALSE);
    OWA_UTIL.MIME_HEADER(ccontent_type => l_ccontent_type, bclose_header => FALSE);
    OWA_UTIL.HTTP_HEADER_CLOSE();
    htp.p(l_resp);
END process_request;

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрдВрджрд░, рд╣рдо рдмрд╕ рд▓реЙрдЧ рдореЗрдВ рдирдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддреЗ рд╣реИрдВред

POST рдЕрдиреБрд░реЛрдз рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдирдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВ - рдмрд╛рдЗрдВрдб рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ :prm_uriрдФрд░ :prm_hdrред

рдирдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде POST рдЕрдиреБрд░реЛрдз рдЕрдиреБрд░реЛрдз рдХреЗ рд╣реИрдВрдбрд▓рд░:

DECLARE
    l_blob BLOB := :body;
BEGIN
    PK_ORDS_API.process_request(a_request => PK_ORDS_API.blob2clob(l_blob), a_prm_uri => :prm_uri, a_prm_hdr => :prm_hdr);
EXCEPTION
    WHEN OTHERS THEN
        OWA_UTIL.STATUS_LINE(nstatus => 500, bclose_header => FALSE);
        OWA_UTIL.MIME_HEADER(ccontent_type => 'application/json');
        htp.p('{ "result" : "error", "message" : "'||SQLERRM||'" }');
END;

рд╣реИрдВрдбрд▓рд░ рдореЗрдВ, рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдЯреИрдм рдкрд░, рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ:


рдЗрд╕ рдлреЙрд░реНрдо рдореЗрдВ, рдкрд╣рд▓реЗ рдлрд╝реАрд▓реНрдб ( рдирд╛рдо ) рдореЗрдВ рдЙрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдирд╛рдо рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рдлреАрд▓реНрдб ( рдмрд┐рдВрдж рдкреИрд░рд╛рдореАрдЯрд░ ) - рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдмрд╛рдЗрдВрдб рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдирд╛рдоред

рдЖрдЗрдП рдЕрдиреБрд░реЛрдз рдХреЛ рдирдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:



рдкрд░рд┐рдгрд╛рдо - рдЕрдиреБрд░реЛрдз рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЙрдЧ рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдЧрдП рдереЗ:


рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпреВрдЖрд░рдЖрдИ рд╕реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реАрдЬреАрдЖрдИ рдЪрд░ рд╕реЗ рднреА рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ QUERY_STRING, рдЕрд░реНрдерд╛рдд, рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдВрдб рдЪрд░ рд╢реБрд░реВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ - рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╣реИрдВрдбрд▓рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рд╡реЗрджрдиред

CGI рдЪрд░


рдУрд░реЗрдХрд▓ рдореЗрдВ HTTP рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреЛ HTTP рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЖрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрд░ рдХреЗ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ OWA_UTIL.get_cgi_envред

рдкреАрдЬреА / рдПрд╕рдХреНрдпреВрдПрд▓ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╕реАрдЬреАрдЖрдИ рдЪрд░ рдХреА рд╕реВрдЪреА
APEX_LISTENER_VERSION
GATEWAY_INTERFACE
GATEWAY_IVERSION
HTTP_ACCEPT_ENCODING
HTTP_HOST
HTTP_PORT
HTTP_USER_AGENT
PATH_ALIAS
PATH_INFO
PLSQL_GATEWAY
QUERY_STRING
REMOTE_ADDR
REMOTE_USER
REQUEST_CHARSET
REQUEST_IANA_CHARSET
REQUEST_METHOD
REQUEST_PROTOCOL
REQUEST_SCHEME
SCRIPT_NAME
SERVER_NAME
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE
WEB_AUTHENT_PREFIX
host
user-agent
CONTENT-LENGTH
CONTENT-TYPE

рдЗрдиреНрд╣реЗрдВ рднреА рджреЗрдЦреЗрдВ: HTTP рд╣реЗрдбрд░реНрд╕ (OWA_UTIL) рдФрд░ ORDS- рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрд╛рдЗрдВрдб рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕

рдЙрджрд╛рд╣рд░рдг 2: ORDS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рддрдХ рдкрд╣реБрдБрдЪрдирд╛


рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо ORDS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ (рдПрдХ рдЯреЗрдмрд▓ рдкрд░) рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд╕рдВрдЧрдарди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред

рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рдмрд┐рдирд╛ рдкрд╣реБрдБрдЪ рдмрдирд╛рддреЗ рд╣реИрдВред рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдкрд╣реБрдВрдЪ рдмрдирд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рджреЗрдЦреЗрдВ ред

рдУрдЖрд░рдбреАрдПрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реБрд▓рдн рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдЪрд░рдг - рдХрдорд╛рдВрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ORDS.ENABLE_OBJECTред рдЙрд╕рдХреЗ рдмрд╛рдж, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреНрд░рдкрддреНрд░ рдХреЗ URI рджреНрд╡рд╛рд░рд╛ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

http://<HOST>:<PORT>/ords/<SchemaAlias>/<ObjectAlias>
ред

рдПрдХ рдкрд░реАрдХреНрд╖рд╛ рдкреИрдЯрд░реНрди рдмрдирд╛рдПрдВ


рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣рдо "рдЖрджреЗрд╢" рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдВрдЧреЗред

рддрд╛рд▓рд┐рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ:

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 '';
COMMENT ON COLUMN T_ORDER.id_order IS ' ';
COMMENT ON COLUMN T_ORDER.num IS ' ';
COMMENT ON COLUMN T_ORDER.buyer_name IS ' ';
COMMENT ON COLUMN T_ORDER.dt_order IS '  ';
COMMENT ON COLUMN T_ORDER.memo IS '';
ALTER TABLE T_ORDER ADD CONSTRAINT PK_T_ORDER PRIMARY KEY (ID_ORDER) USING INDEX;

ORDS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдУрдкрдирд┐рдВрдЧ рдЯреЗрдмрд▓ рдПрдХреНрд╕реЗрд╕


  1. рдЖрд╡рд╢реНрдпрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдЖрд╣реНрд╡рд╛рди SQL рдбреЗрд╡рд▓рдкрд░ рдореЗрдВ, рдЪреБрдиреЗрдВ ... рд╕реЗрд╡рд╛ рдмрд╛рдХреА рд╕рдХреНрд╖рдо рдХрд░реЗрдВ ред



  2. рдПрдХреНрд╕реЗрд╕ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╡рд┐рдВрдбреЛ рдореЗрдВ, рдСрдмреНрдЬреЗрдХреНрдЯ рдЪреЗрдХрдмреЙрдХреНрд╕ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ , рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдЖрд╡рд╢реНрдпрдХ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЛ рдЕрдирдЪреЗрдХ рдХрд░реЗрдВ, рдкреНрд░рд╛рдкреНрдд рдкреАрдПрд▓ / рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЛрдб рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП "рд╕рдорд╛рдкреНрдд" (рдпрд╛ "рдЕрдЧрд▓рд╛" ) рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ:



  3. рдЗрди рдЪрд░рдгреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рддрд╛рд▓рд┐рдХрд╛ T_ORDERHTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рддреА рд╣реИ, рд╕рдВрд╕рд╛рдзрди рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ URI:

    http://<server>:<port>/ords/ws_test/t_order

    рддрд╛рд▓рд┐рдХрд╛ рд╕рдорд╛рд╡реЗрд╢рди рд╕реВрдЪреА:

    DECLARE
      PRAGMA AUTONOMOUS_TRANSACTION;
    BEGIN
     
        ORDS.ENABLE_OBJECT(p_enabled => TRUE,
                           p_schema => 'WS_TEST',
                           p_object => 'T_ORDER',
                           p_object_type => 'TABLE',
                           p_object_alias => 't_order',
                           p_auto_rest_auth => FALSE);
     
        commit;
     
    END;
    /


рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рдПрдВ рдпрд╛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ


рддрд╛рд▓рд┐рдХрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдЦреБрд▓реА рд╣реИ - рд╣рдо рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк ORDS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХреИрд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдиреБрд░реЛрдз рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ PUTред

ORDS рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ, рд╡рд┐рдзрд┐ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╡рд░рдг PUTрдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ :

PUT http://<HOST>:<PORT>/ords/<SchemaAlias>/<ObjectAlias>/<KeyValues>

рдЕрд░реНрдерд╛рддреН, KeyValuesрдПрдХ рдирдпрд╛ рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдлрд╝реАрд▓реНрдб (рд░рд┐рдХреЙрд░реНрдб рдХреБрдВрдЬреА) рдХреЛ рднрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрд╡реЗрд░реА рдХреЛ рд╕реНрд╡рдпрдВ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рд▓реЗрдХрд┐рди рдХреБрдВрдЬреА рдлрд╝реАрд▓реНрдб рдХреЛ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред

рдЬрд╛рдВрдЪ
PUT http://<server>:<port>/ords/ws_test/t_order/25 HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: application/json;charset=UTF-8
Content-Length: 157
Host: <server>:<port>
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
 
{
	"num" : "ords-3472634",
	"buyer_name" : "Buyer Name",
	"dt_order" : "2019-10-25T12:00:00Z",
	"memo" : "  1"
}

рдЬрд╡рд╛рдм рдореЗрдВ, рд╣рдореЗрдВ рдмрд╕ рдмрдирд╛рдП рдЧрдП рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рднреА рдХреНрд╖реЗрддреНрд░ рдорд┐рд▓рддреЗ рд╣реИрдВ:

HTTP/1.1 200 OK
Content-Type: application/json
Content-Location: http://<server>:<port>/ords/ws_test/t_order/25
ETag: "..."
Transfer-Encoding: chunked
 
{
   "id_order": 25,
   "num": "ords-3472634",
   "buyer_name": "Buyer Name",
   "dt_order": "2019-10-25T12:00:00Z",
   "memo": "  1",
   "links":    [
            {
         "rel": "self",
         "href": "http://<server>:<port>/ords/ws_test/t_order/25"
      },
            {
         "rel": "edit",
         "href": "http://<server>:<port>/ords/ws_test/t_order/25"
      },
            {
         "rel": "describedby",
         "href": "http://<server>:<port>/ords/ws_test/metadata-catalog/t_order/item"
      },
            {
         "rel": "collection",
         "href": "http://<server>:<port>/ords/ws_test/t_order/"
      }
   ]
}

рд╣рдо рддрд╛рд▓рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ - рд╣рдорд╛рд░рд╛ рдирдпрд╛ рд░рд┐рдХреЙрд░реНрдб рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛: рд░рд┐рдХреЙрд░реНрдб



рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрд╕реА PUT рдкрджреНрдзрддрд┐ рдХреЛ рдХрд╣рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдХреНрд░рдо рдореЗрдВ рдиреЛрдЯ рдмрджрд▓реЗрдВ:

PUT http://<server>:<port>/ords/ws_test/t_order/25 HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: application/json;charset=UTF-8
Content-Length: 178
Host: <server>:<port>
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
 
{
	"num" : "ords-3472634",
	"buyer_name" : "Buyer Name",
	"dt_order" : "2019-10-25T12:00:00Z",
	"memo" : "  1.  "
}

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣рдо рд╕рдВрд╢реЛрдзрд┐рдд рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рди JSON рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдиреЛрдЯ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:



рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛


рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдбреЗрдЯрд╛ рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдХреЗ рддреАрди рддрд░реАрдХреЗ рд╣реИрдВ:

  1. рдкреГрд╖реНрда рдЕрдиреБрд░реЛрдз:

    GET http://<HOST>:<PORT>/ords/<SchemaAlias>/<ObjectAlias>/?offset=<Offset>&limit=<Limit>
  2. рд╢рд░реНрддреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз:

     GET http://<HOST>:<PORT>/ords/<SchemaAlias>/<ObjectAlias>/?q=<FilterClause>
  3. рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдЕрдиреБрд░реЛрдз:

    GET http://<HOST>:<PORT>/ords/<SchemaAlias>/<ObjectAlias>/<KeyValues>

рд╕рднреА рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрд┐рд╕реА рднреА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдХреНрд╡реЗрд░реА рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:

GET http://<server>:<port>/ords/ws_test/t_order/

рдЙрддреНрддрд░
HTTP/1.1 200 OK
Date: Fri, 25 Oct 2019 15:39:58 GMT
Content-Type: application/json
ETag: "..."
Transfer-Encoding: chunked
 
{
   "items": [   {
      "id_order": 25,
      "num": "ords-3472634",
      "buyer_name": "Buyer Name",
      "dt_order": "2019-10-25T12:00:00Z",
      "memo": "╤Ю┬╡╨ГтАЪ╤Х╨ЖтА╣тДЦ ┬╖┬░╤Ф┬░┬╖ 1.  ┬╖╤Ш┬╡╨ЕтАЪ╨К ╤Ч╨В╤Ш┬╡тАб┬░╨Е┬╡",
      "links": [      {
         "rel": "self",
         "href": "http://<server>:<port>/ords/ws_test/t_order/25"
      }]
   }],
   "hasMore": false,
   "limit": 25,
   "offset": 0,
   "count": 1,
   "links":    [
            {
         "rel": "self",
         "href": "http://<server>:<port>/ords/ws_test/t_order/"
      },
            {
         "rel": "edit",
         "href": "http://<server>:<port>/ords/ws_test/t_order/"
      },
            {
         "rel": "describedby",
         "href": "http://<server>:<port>/ords/ws_test/metadata-catalog/t_order/"
      },
            {
         "rel": "first",
         "href": "http://<server>:<port>/ords/ws_test/t_order/"
      }
   ]
}

рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░ рд╣реЗрдбрд░ рдореЗрдВ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдУрд░реЗрдХрд▓ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдпрд╣ рдПрдХ рдЦреБрд▓рд╛ рдкреНрд░рд╢реНрди рд╣реИред

GET http://<server>:<port>/ords/ws_test/t_order/25

рдЙрддреНрддрд░
HTTP/1.1 200 OK
Date: Fri, 25 Oct 2019 15:44:35 GMT
Content-Type: application/json
ETag: "..."
Transfer-Encoding: chunked
 
{
   "id_order": 25,
   "num": "ords-3472634",
   "buyer_name": "Buyer Name",
   "dt_order": "2019-10-25T12:00:00Z",
   "memo": "╤Ю┬╡╨ГтАЪ╤Х╨ЖтА╣тДЦ ┬╖┬░╤Ф┬░┬╖ 1.  ┬╖╤Ш┬╡╨ЕтАЪ╨К ╤Ч╨В╤Ш┬╡тАб┬░╨Е┬╡",
   "links":    [
            {
         "rel": "self",
         "href": "http://<server>:<port>/ords/ws_test/t_order/25"
      },
            {
         "rel": "edit",
         "href": "http://<server>:<port>/ords/ws_test/t_order/25"
      },
            {
         "rel": "describedby",
         "href": "http://<server>:<port>/ords/ws_test/metadata-catalog/t_order/item"
      },
            {
         "rel": "collection",
         "href": "http://<server>:<port>/ords/ws_test/t_order/"
      }
   ]
}

рд░рд┐рдХреЙрд░реНрдб рд╣рдЯрд╛рдПрдВ


рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, HTTP рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ DELETEред

рдкреВрдЫрддрд╛рдЫ:

DELETE http://<server>:<port>/ords/ws_test/t_order/?q={"id_order":25}

рдореВрд▓ рд░реВрдк рдореЗрдВ рдЕрдиреБрд░реЛрдз:

DELETE http://<server>:<port>/ords/ws_test/t_order/?q=%7B%22id_order%22%3A25%7D

рдЙрддреНрддрд░:

HTTP/1.1 200 OK
Date=Fri, 25 Oct 2019 16:23:39 GMT
Content-Type=application/json
Transfer-Encoding=chunked
 
{"rowsDeleted":1}

рдЬрд╛рдБрдЪ - рдкрд░рд┐рдгрд╛рдо


ORDS рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рдлреА рд▓рдЪреАрд▓рд╛ рдФрд░ рдмрд╣реБрдореБрдЦреА рддрдВрддреНрд░ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдкреВрд░реНрдг рд╡рд┐рдХрд╕рд┐рдд рд░реАрд╕реНрдЯ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЕрдкрдиреЗ рднрд╛рд░реА рдЖрдВрддрд░рд┐рдХ XML рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдиреЗрдЯрд┐рд╡ рдУрд░реЗрдХрд▓ рдбрдмреНрд▓реНрдпреВрдПрд╕ рд╕реЗ рдХрд╣реАрдВ рдмреЗрд╣рддрд░ рд╣реИред рдПрдХ рдЕрддреНрдпрдзрд┐рдХ рднрд░реА рд╣реБрдИ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ: рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЕрд▓рдЧ рддрдХрдиреАрдХ рд╕реНрдЯреИрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдПрдХ рдЕрд▓рдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рд░реНрд╡рд░, рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрдХреБрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рд╣рд╛рд▓рд╛рдВрдХрд┐, HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдо рд╕рдВрдЦреНрдпрд╛ (10-20 рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рддрдХ) рдХреЗ рд╕рд╛рде рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП, ORDS рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд▓рдЪреАрд▓реЗрдкрди рджреЛрдиреЛрдВ рдореЗрдВ рдЗрд╖реНрдЯрддрдо рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред ORDS рдХреЗрд╡рд▓ рд╡реЗрдм рд╕реЗрд╡рд╛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА Oracle WS рд╕реЗ рдиреАрдЪ рд╣реИ: рдмрд╛рдж рд╡рд╛рд▓рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рдкреНрдд рд╡рд┐рдирд┐рд░реНрджреЗрд╢ (WSDL) рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕реЗрд╡рд╛ рдХреЗ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ "рдЬреИрд╕рд╛ рд╣реИ" рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдУрдЖрд░рдбреАрдПрд╕ рдореЗрдВ рднреА рдХреНрд╖рдорддрд╛ рд╣реИрдПрдХ рд╡рд┐рд╡рд░рдг рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕реЗрд╡рд╛ (рдЬрдм рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ) рдХреЗ рд╕рд╛рде рд╡рд┐рдЪрд╛рд░ рдХрд┐рдП рдЧрдП рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреАрдврд╝реА рдЕрд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддреА рд╣реИред рдУрд░реЗрдХрд▓ рдХреЗрд╡рд▓ рдПрдХ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛, рдФрд░ рднрд╛рдЧреЛрдВ (рдбреЗрдЯрд╛ рдореЙрдбрд▓) рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рд╡реИрдХрд▓реНрдкрд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг


рдЬрд╛рд╡рд╛ рд╕рд░реНрд╡рд▓реЗрдЯ


рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдзрд┐ рдореЗрдВ рд╡реЗрдм рд╕реЗрд╡рд╛рдПрдБ рдмрдирд╛рдиреЗ рдХрд╛ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдиреЗрдЯрд┐рд╡ рдУрд░реЗрдХрд▓ WS рдХреЗ рд╕рдорд╛рди рд╣реИ: рдЗрд╕рдореЗрдВ Oracle рдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд HTTP рд╕рд░реНрд╡рд░, рд╕рд╛рде рд╣реА ACL рд╕реЗрдЯрд┐рдВрдЧреНрд╕ (рд╕рд╛рде рд╣реА рдЕрдиреНрдп рд╕рднреА рддрд░реАрдХреЛрдВ) рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди, рдореВрд▓ Oracle WS рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рд╡рд┐рдХрд▓реНрдк рд╢реБрджреНрдз HTTP рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдиреБрд░реЛрдз рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдФрд░ HTTP рдЕрдиреБрд░реЛрдз рдкреНрд░рдХрд╛рд░ рдкрд░ рдХреЗрд╡рд▓ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣реЗ рд╣реИрдВ ( PUT, GET, POST, рдФрд░ рдЗрддрдиреЗ рдкрд░ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдВрдбрд▓рд░), рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рддрд░реНрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд╡рд┐рд╡реЗрдХ рдкрд░ рдмрдиреА рд╣реБрдИ рд╣реИред рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рд▓реЙрдЬрд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрд░реЛрдз рдмреЙрдбреА "рдЬреИрд╕рд╛ рд╣реИ" рдХреЛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╡рд╣рд╛рдВ рдЗрд╕реЗ рдбрд┐рд╕рдПрдореНрдмреНрд▓реЗрдб рдФрд░ рдкреНрд░реЛрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдк рдЬрд╛рд╡рд╛ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдХрд┐рдирд╛рд░реЗ рд▓реЙрдЬрд┐рдХ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛рдлреА рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдШрдЯрдХреЛрдВ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдордиреЗ рдХреЗрд╡рд▓ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рд╕рдЦреНрдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд┐рдпрд╛: рд╣рдореЗрдВ рдПрдХ рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдЬрд┐рд╕реЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереАред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп, рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЗрд╕ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП Oracle рджрд╕реНрддрд╛рд╡реЗрдЬ рджреЗрдЦреЗрдВ ред

рдбреЗрдЯрд╛рдмреЗрд╕ рдПрдХреНрд╕реЗрд╕ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ (PL / SQL рд╕рд░реНрд╡рд▓реЗрдЯ)


рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдХреЗрд╡рд▓ PL / SQL рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд╛рд░реНрдпрд╡рд┐рдзрд┐ рдЕрдиреБрд░реЛрдз рд╣реИрдВрдбрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг URL - рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдирд╛рдо, рдкреИрд░рд╛рдореАрдЯрд░ (GET рдЕрдиреБрд░реЛрдз) рд╕рдВрдХреЗрдд рджрд┐рдП рдЧрдП рд╣реИрдВ:

GET http://<server>:<port>/servlet_plsql/pi_test.test_serv?p_path=ppp 

рдПрдХ рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдз рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреИрд░рд╛рдореАрдЯрд░ рдирд╛рдо рд╕реАрдзреЗ "=" рд╕рдВрдХреЗрдд рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдХрд┐ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдиреБрд░реЛрдз рд╕рд╛рдордЧреНрд░реА (ContentType) рдХрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗрд╡рд▓ рдкрд╛рда рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдХреЗрд╡рд▓ рдЗрд╕ рд░реВрдк рдореЗрдВ рдПрдХ xml рдпрд╛ json рд╕рдВрд░рдЪрдирд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

p_proc_param_name=<xml_data>тАж</xml_data>

рд╡реЗрдм рд╕реЗрд╡рд╛ рдХрд╛ рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг рдХреЗрд╡рд▓ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╣рдо рдмрд╣реБрдд рд╕рд░рд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВ - рд╕рд░рд▓ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЙрд▓ред рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдореЗрдВ рдХрд┐рд╕реА рднреА рдЬрдЯрд┐рд▓ рдмрд╣реБ-рд╕реНрддрд░реАрдп рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ред

рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг ORACLE-BASE рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


Oracle рдореЗрдВ рдПрдХ рд╡реЗрдм рд╕реЗрд╡рд╛ рдмрдирд╛рдирд╛ рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ рдХрд╛рд░реНрдп рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реБрдкрд░ рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рдХреЛрдб рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЙрд╕реА рд╕рдордп, рдУрд░реЗрдХрд▓ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдкрдиреЗ рд╢рд╕реНрддреНрд░рд╛рдЧрд╛рд░ рдореЗрдВ рдПрдХ рдХрд╛рдлреА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рддрдВрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ HTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рд╖рдо рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдпрд╛ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд╛рд░ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреАред

рдиреЗрдЯрд┐рд╡ рдУрд░реЗрдХрд▓ рдбрдмреНрд▓реВрдПрд╕ рдПрдХ рдкреБрд░рд╛рдиреА рддрдХрдиреАрдХ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж рдЗрд╕рдХреЗ рдлрд╛рдпрджреЗ рд╣реИрдВ: рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдбрдмреНрд▓реНрдпреВрдПрд╕рдбреАрдПрд▓, рдПрдХреНрд╕рдПрдордПрд▓ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд╛рд░реНрд╕рд┐рдВрдЧ, рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдореБрдЦреНрдп рджреЛрд╖ рд╕рдорд░реНрдерд┐рдд рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдХрдо рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╕реАрдорд╛ рд╣реИред

ords- рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдкрд╕рдВрджреАрджрд╛ рддрд░реАрдХрд╛ред рд▓рдЪреАрд▓рд╛ рдкрд░реНрдпрд╛рдкреНрдд рдФрд░ рдмрд╣реБрдореБрдЦреАред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреА рдЕрд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ рд╕реЗ, рд╣рдо рдХреЗрд╡рд▓ рдпрд╣ рднреЗрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдорд╛рдирдХ рдУрд░реЗрдХрд▓ рдкреИрдХреЗрдЬ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЕрд░реНрдерд╛рдд рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЬрд╛рд╡рд╛ рд╕рд░реНрд╡рд▓реЗрдЯ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рддрд░реАрдХрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдм рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдСрдЯреЛ-рдЬрдирд░реЗрдЯрд┐рдВрдЧ рд╕реЗрд╡рд╛рдУрдВ рдХреА рдХреЛрдИ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред

PL / SQL рд╕рд░реНрд╡рд▓реЗрдЯ рдХрдо рд╕реЗ рдХрдо рд╕рдлрд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред рдкреНрд▓рд╕рд╕ рдореЗрдВ, рд╣рдо рдпрд╣ рднреЗрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдореЗрдВ рд╣рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ HTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рдпрд╛ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рд▓рд┐рдЦреЗ рдмрд┐рдирд╛: рд╕рднреА рдХреЛрдб рдХреЗрд╡рд▓ PL / SQL рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВред

рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж! рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд▓реЗрдЦ рдХреА рд╕рд╛рдордЧреНрд░реА рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА рдЬреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдУрд░реЗрдХрд▓ рдЙрддреНрдкрд╛рджреЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ рдФрд░ рдЗрдВрдЯреНрд░рд╛-рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдЪреМрд░рд╛рд╣реЗ рдПрдХреАрдХрд░рдг рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рд╣реИрд░рд╛рди рд╣реИрдВред


All Articles