Oracle數據庫中Java的存儲過程可以利用JMSL來調用AQ的實際操作。我們可以利用以下經常使用的4個步驟,來實現這一模式,創建並啟動JMS Queue(為此,可以將以下一些操作嵌入SQL腳本內):
- execute dbms_aqadm.create_queue_table(queue_table =>
''queue1'', queue_payload_type => ''SYS.AQ$_JMS_TEXT_MESSAGE'',
comment => ''a test queue'', multiple_consumers => false,
compatible => ''8.1.0'');
execute dbms_aqadm.create_queue
( queue_name => ''queue1'', queue_table => ''queue1'' );
execute dbms_aqadm.start_queue(queue_name => ''queue1'');
創建Java存儲過程(代碼摘錄如下):
- public static void runTest(String msgBody)
{ try { // get database connection ora_drv = new OracleDriver();
db_conn = ora_drv.defaultConnection();
// setup sender (cf online code sample) ..
// create message s_msg = s_session.createTextMessage(msgBody);
// send message sender.send(s_msg); s_session.commit();
// receive message r_msg = (TextMessage) receiver.receive();
r_session.commit();
// output message text String body = r_msg.getText();
System.out.println("message was ''"+body+"''"); ..} }
創建Call Spec:
- create or replace procedure jmsproc
(t1 IN VARCHAR) as language Java name
''jmsSample.main (Java.lang.String[])''; /
調用存儲過程:
- call jmsproc(''hello'');
Oracle數據庫輔助的Web發布(緩沖失效)
各應用程序結構必須面對的一個共同問題是如果可靠地將數據庫信息進行緩存,以提高整個系統的性能。JCACHE是一種即將公布的標准規范(JSR 107),它可以解決這一問題。它說明了一種對Java對象臨時在內存中進行緩存的方法,包括對象的創建、共享訪問、假脫機(spooling)、失效、各JVM的一致性等。
它可被用於緩存JSP內最經常讀取的數據,如產品目錄和價格列表。利用JCACHE,多數查詢的反應時間會因為有緩存的數據而加快(內部測試表明反應時間大約快15倍)。
為了跟蹤原始數據的所有變化,並刷新已緩存的數據,Java存儲過程會作為一個觸發器被附加在一個表上。這個表的任何變化都會自動調用該存儲過程,後者再調出一個已定義的JSP使JCACHE對象失效,該對象將其狀態映射到該Oracle數據庫表。
在失效時,緊跟其後的查詢將強制緩存器根據數據庫的數據進行更新。 下面的步驟 閱讀關於Java存儲過程的更多信息本文摘自白皮書"釋放Java存儲過程的能量(Unleash the Power of Java Stored Procedures)",可以在以下位置找到該白皮書:
- otn.Oracle.com/tech/java/Java_db/pdf/
- OW_30820_Java_STORED_PROC_paper.PDF
Oracle9i數據庫第2版中的新PL/SQL特性
- otn.Oracle.com/tech/pl_sql/pdf/
- Paper_30720_Doc.pdf
- Resolver Spec
- otn.oracle.com/docs/products/Oracle9i/
- doc_library/release2/Java.920/a96659.pdf
- OracleJVM and Java 2 Security
- otn.oracle.com/docs/products/Oracle9i/
- doc_library/release2/Java.920/a96656.pdf