Sto considerando l'utilizzo di una procedura memorizzata Java come uno shim molto piccolo per consentire la comunicazione UDP da un pacchetto PL / SQL. Oracle non fornisce un UTL_UDP in modo che corrisponda al suo UTL_TCP. C'è un XUTL_UDP di terze parti che usa Java, ma è closed source (cioè non riesco a vedere come è implementato, non che non voglio usare closed source).
Una distinzione importante tra PL / SQL e le stored procedure Java per quanto riguarda il networking: i socket PL / SQL sono chiusi quando viene chiamato dbms_session.reset_package, ma i socket Java non lo sono. Quindi, se si desidera mantenere aperto un socket per evitare i costi di rimozione / ricollegamento, non è possibile farlo nelle sessioni che utilizzano il reset_package (come le richieste HTTP mod_plsql o mod_owa).
Non ho mai usato le stored procedure Java in una capacità di produzione in Oracle. Questo è un database molto grande e molto usato, e questo particolare shim sarebbe anche molto usato (funge da ponte UDP tra un client syslog RFC 5424 PL / SQL e il demone rsyslog locale).
Mi sto aprendo per guai e orrore, o le procedure memorizzate Java sono stabili e robuste quanto basta per l'uso in 10g? Mi sto interrogando su problemi con JVM, jit, garbage collection o altre cose che potrebbero avere un impatto su un database pesantemente utilizzato.