Oracle数据库中Java的存储过程可以利用JMSL来调用AQ的实际操作。我们可以利用以下经常使用的4个步骤,来实现这一模式,创建并启动JMS Queue(为此,可以将以下一些操作嵌入SQL脚本内):
executedbms_aqadm.create_queue_table(queue_table=> ''queue1'',queue_payload_type=>''SYS.AQ$_JMS_TEXT_MESSAGE'', comment=>''atestqueue'',multiple_consumers=>false, compatible=>''8.1.0''); executedbms_aqadm.create_queue (queue_name=>''queue1'',queue_table=>''queue1''); executedbms_aqadm.start_queue(queue_name=>''queue1'');
创建Java存储过程(代码摘录如下):
publicstaticvoidrunTest(StringmsgBody) {try{//getdatabaseconnectionora_drv=newOracleDriver(); db_conn=ora_drv.defaultConnection(); //setupsender(cfonlinecodesample).. //createmessages_msg=s_session.createTextMessage(msgBody); //sendmessagesender.send(s_msg);s_session.commit(); //receivemessager_msg=(TextMessage)receiver.receive(); r_session.commit(); //outputmessagetextStringbody=r_msg.getText(); System.out.println("messagewas''"+body+"''");..}}
创建Call Spec:
createorreplaceprocedurejmsproc (t1INVARCHAR)aslanguagejavaname ''jmsSample.main(java.lang.String[])'';/
调用存储过程:
calljmsproc(''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 ResolverSpec otn.oracle.com/docs/products/oracle9i/ doc_library/release2/java.920/a96659.pdf OracleJVMandJava2Security otn.oracle.com/docs/products/oracle9i/ doc_library/release2/java.920/a96656.pdf