Oracle 8i and MQseries queues
Is there any possibility to access MQSeries queues using 8i AQ packages routines? I have to read some data from MQS and insert it into Oracle on Win2k and wonder if I need any additional MQ interfaces.
Best regards,
Tomek.
Hi Brajesh,
Have you ever set up communication between Oracle 9i and MQSeries?
Now I'm trying to read MQ messages using Oracle AQ and Messaging Gateway.
When I'm starting MGW agent i get error message: 'bad native queue' in log file.
Agent is still running and reachable.
Is it possible that i need local MQ queue manager?
Could you please help me with this?
Regards,
Tomek.
Similar Messages
-
Good Day!
I'm currently working on a project wherein it tries to get data from a JMSqueue Map Message being populated by CEP.
After CEP pushes some data in the JMSqueue. I have BPM configured with a JMS adapter to look up whether there are any messages to be processed upon.
Inside BPM, I want to know how can I correlate the data from the Map Message to my Process Data Object.
For example, If I have a Map Object wherein it has 3 attributes:
FirstName:String
LastName:String
Age:int
What is the expression I need to use inside Oracle BPM Data Association screen in order to map the data from the Map Messages into my process data objects?
Thanks!
Regards,
JeffAny ideas? Thanks!
-
Oracle MGW and IBM MQ integration
Friends, I made a trial of ORACLE<=>MQ. Configuration all seems ok but, the connection to MQ fails, "*Failed to access queue DESTQ@MQLINK; provider queue: TQ*
*oracle.mgw.common.GatewayException: [800|http://forums.oracle.com/forums/] MQSeries queue manager, TESTQM, creation failed"*.
Here's full log and appreciate if anyone has similar experience to share with:
2008-10-14 22:55:42 MGW C-Bootstrap 0 LOG process-id=2888
Bootstrap program starting
2008-10-14 22:55:42 MGW C-Bootstrap 0 LOG process-id=2888JVM created -- heapsize = 64
2008-10-14 22:55:43 MGW Engine 0 200 mainMGW Agent version: 10.2.0.3_20061010:0713
2008-10-14 22:55:43 MGW AdminMgr 0 LOG mainConnecting to database using connect string = jdbc:oracle:oci8:@ORANGE
2008-10-14 22:55:44 MGW Engine 0 200 mainMGW Component version: 10.2.0.3.0
2008-10-14 22:55:44 MGW Engine 0 200 mainMGW job number: 2, MGW job sid: 137, MGW database instance: 1
2008-10-14 22:55:44 MGW Engine 0 1 mainAgent is initializing.
2008-10-14 22:55:44 MGW Engine 0 23 mainThe number of worker threads is set to 1.
2008-10-14 22:55:44 MGW Engine 0 22 mainThe default polling interval is set to 5000ms.
2008-10-14 22:55:45 MGW Engine 0 2 mainAgent is up and running.
2008-10-14 22:56:33 MGW MQD 0 LOG ConfigNotifierCreating MQSeries messaging link:
link : MQLINK
link type : Base Java interface
queue manager : TESTQM
channel : TQCONN
host : 10.90.90.101
port : 1414
user :
connections : 1
inbound logQ : LOG_IN
outbound logQ : LOG_OUT
2008-10-14 22:56:33 MGW Engine 0 4 ConfigNotifierLink MQLINK has been added.
2008-10-14 22:56:48 MGW Notif Handler 0 7 ConfigNotifierQueue DESTQ@MQLINK has been registered; provider queue: TQ.
2008-10-14 22:56:59 MGW AQN 0 LOG ConfigNotifierCreating AQ messaging link:
link : oracleMgwAq
link type : native
database : ORANGE
user : MGWAGENT
connection type : JDBC OCI
connections : 1
inbound logQ : sys.mgw_recv_log
outbound logQ : sys.mgw_send_log
2008-10-14 22:56:59 MGW Notif Handler 0 14 ConfigNotifierMGW subscriber SUB_AQ2MQ (MGWUSER.MGW_BASIC_SRC --> DESTQ@MQLINK) has been added.
2008-10-14 22:56:59 MGW Notif Handler 0 14 ConfigNotifierMGW subscriber SUB_MQ2AQ (DESTQ@MQLINK --> MGWUSER.MGW_BASIC_DEST) has been added.
2008-10-14 22:56:59 MGW Notif Handler 0 9 ConfigNotifierPropagation schedule SCH_AQ2MQ (MGWUSER.MGW_BASIC_SRC --> DESTQ@MQLINK) has been added.
2008-10-14 22:57:00 MGW Engine 0 19 ConfigNotifierMGW subscriber SUB_AQ2MQ has been activated.
2008-10-14 22:57:03 MGW Engine 0 434 worker0Failed to access queue DESTQ@MQLINK; provider queue: TQ
oracle.mgw.common.GatewayException: [800|http://forums.oracle.com/forums/] MQSeries queue manager, TESTQM, creation failed
at oracle.mgw.common.MgwUtil.GatewayException(MgwUtil.java:739)
at oracle.mgw.drivers.mq.MQOPHandle.<init>(MQOPHandle.java:64)
at oracle.mgw.drivers.mq.MQOPHandleFactory.createOPHandle(MQOPHandleFactory.java:35)
at oracle.mgw.drivers.OPHandlePool.getHandle(OPHandlePool.java:133)
at oracle.mgw.drivers.mq.MQLink.registerDestination(MQLink.java:382)
at oracle.mgw.engine.DestMgr.getForeignDest(DestMgr.java:54)
at oracle.mgw.engine.JobData.init(JobData.java:233)
at oracle.mgw.engine.Worker.recoverJob(Worker.java:1086)
at oracle.mgw.engine.Worker.myRun(Worker.java:98)
at oracle.mgw.engine.ManagedThr.run(ManagedThr.java:58)
[Linked-exception|http://forums.oracle.com/forums/]
com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2059'.
at com.ibm.mq.MQManagedConnectionJ11.<init>(MQManagedConnectionJ11.java:229)
at com.ibm.mq.MQClientManagedConnectionFactoryJ11._createManagedConnection(MQClientManagedConnectionFactoryJ11.java:500)
at com.ibm.mq.MQClientManagedConnectionFactoryJ11.createManagedConnection(MQClientManagedConnectionFactoryJ11.java:541)
at com.ibm.mq.StoredManagedConnection.<init>(StoredManagedConnection.java:95)
at com.ibm.mq.MQSimpleConnectionManager.allocateConnection(MQSimpleConnectionManager.java:182)
at com.ibm.mq.MQQueueManagerFactory.obtainBaseMQQueueManager(MQQueueManagerFactory.java:870)
at com.ibm.mq.MQQueueManagerFactory.procure(MQQueueManagerFactory.java:756)
at com.ibm.mq.MQQueueManagerFactory.constructQueueManager(MQQueueManagerFactory.java:704)
at com.ibm.mq.MQQueueManagerFactory.createQueueManager(MQQueueManagerFactory.java:169)
at com.ibm.mq.MQQueueManager.<init>(MQQueueManager.java:677)
at oracle.mgw.drivers.mq.MQOPHandle.<init>(MQOPHandle.java:60)
at oracle.mgw.drivers.mq.MQOPHandleFactory.createOPHandle(MQOPHandleFactory.java:35)
at oracle.mgw.drivers.OPHandlePool.getHandle(OPHandlePool.java:133)
at oracle.mgw.drivers.mq.MQLink.registerDestination(MQLink.java:382)
at oracle.mgw.engine.DestMgr.getForeignDest(DestMgr.java:54)
at oracle.mgw.engine.JobData.init(JobData.java:233)
at oracle.mgw.engine.Worker.recoverJob(Worker.java:1086)
at oracle.mgw.engine.Worker.myRun(Worker.java:98)
at oracle.mgw.engine.ManagedThr.run(ManagedThr.java:58)
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2059;AMQ9213: A communications error for occurred. [1=java.net.ConnectException[Connection refused: connect],3=Istana|http://forums.oracle.com/forums/]
at com.ibm.mq.jmqi.remote.internal.RemoteTCPConnection.connnectUsingLocalAddress(RemoteTCPConnection.java:632)
at com.ibm.mq.jmqi.remote.internal.RemoteTCPConnection.protocolConnect(RemoteTCPConnection.java:980)
at com.ibm.mq.jmqi.remote.internal.system.RemoteConnection.connect(RemoteConnection.java:989)
at com.ibm.mq.jmqi.remote.internal.system.RemoteConnectionPool.getConnection(RemoteConnectionPool.java:293)
at com.ibm.mq.jmqi.remote.internal.RemoteFAP.jmqiConnect(RemoteFAP.java:1371)
at com.ibm.mq.MQSESSION.MQCONNX_j(MQSESSION.java:924)
at com.ibm.mq.MQManagedConnectionJ11.<init>(MQManagedConnectionJ11.java:224)
... 18 more
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158)
at java.net.Socket.connect(Socket.java:464)
at java.net.Socket.connect(Socket.java:414)
at com.ibm.mq.jmqi.remote.internal.RemoteTCPConnection$2.run(RemoteTCPConnection.java:618)
at java.security.AccessController.doPrivileged(Native Method)
at com.ibm.mq.jmqi.remote.internal.RemoteTCPConnection.connnectUsingLocalAddress(RemoteTCPConnection.java:611)
... 24 more
2008-10-14 22:57:03 MGW Engine 0 442 worker0Unable to access queue DESTQ@MQLINK for subscriber SUB_AQ2MQ
2008-10-14 22:57:03 MGW Engine 0 LOG worker0Initialization failures for SUB_AQ2MQ
2008-10-14 22:57:03 MGW Engine 0 422 worker0Errors occurred during recovering subscriber SUB_AQ2MQ
oracle.mgw.common.GatewayException: [435|http://forums.oracle.com/forums/] Initialization failures for SUB_AQ2MQ
at oracle.mgw.common.MgwUtil.GatewayException(MgwUtil.java:739)
at oracle.mgw.engine.Worker.recoverJob(Worker.java:1087)
at oracle.mgw.engine.Worker.myRun(Worker.java:98)
at oracle.mgw.engine.ManagedThr.run(ManagedThr.java:58)
2008-10-14 22:57:04 MGW Engine 0 434 worker0Failed to access queue DESTQ@MQLINK; provider queue: TQ
oracle.mgw.common.GatewayException: [800|http://forums.oracle.com/forums/] MQSeries queue manager, TESTQM, creation failed
at oracle.mgw.common.MgwUtil.GatewayException(MgwUtil.java:739)
at oracle.mgw.drivers.mq.MQOPHandle.<init>(MQOPHandle.java:64)
at oracle.mgw.drivers.mq.MQOPHandleFactory.createOPHandle(MQOPHandleFactory.java:35)
at oracle.mgw.drivers.OPHandlePool.getHandle(OPHandlePool.java:133)
at oracle.mgw.drivers.mq.MQLink.registerDestination(MQLink.java:382)
at oracle.mgw.engine.DestMgr.getForeignDest(DestMgr.java:54)
at oracle.mgw.engine.JobData.createAlterNativeSub(JobData.java:1248)
at oracle.mgw.engine.Worker.createDurableSub(Worker.java:2486)
at oracle.mgw.engine.Worker.myRun(Worker.java:94)
at oracle.mgw.engine.ManagedThr.run(ManagedThr.java:58)
[Linked-exception|http://forums.oracle.com/forums/]
com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2059'.
at com.ibm.mq.MQManagedConnectionJ11.<init>(MQManagedConnectionJ11.java:229)
at com.ibm.mq.MQClientManagedConnectionFactoryJ11._createManagedConnection(MQClientManagedConnectionFactoryJ11.java:500)
at com.ibm.mq.MQClientManagedConnectionFactoryJ11.createManagedConnection(MQClientManagedConnectionFactoryJ11.java:541)
at com.ibm.mq.StoredManagedConnection.<init>(StoredManagedConnection.java:95)
at com.ibm.mq.MQSimpleConnectionManager.allocateConnection(MQSimpleConnectionManager.java:182)
at com.ibm.mq.MQQueueManagerFactory.obtainBaseMQQueueManager(MQQueueManagerFactory.java:870)
at com.ibm.mq.MQQueueManagerFactory.procure(MQQueueManagerFactory.java:756)
at com.ibm.mq.MQQueueManagerFactory.constructQueueManager(MQQueueManagerFactory.java:704)
at com.ibm.mq.MQQueueManagerFactory.createQueueManager(MQQueueManagerFactory.java:169)
at com.ibm.mq.MQQueueManager.<init>(MQQueueManager.java:677)
at oracle.mgw.drivers.mq.MQOPHandle.<init>(MQOPHandle.java:60)
at oracle.mgw.drivers.mq.MQOPHandleFactory.createOPHandle(MQOPHandleFactory.java:35)
at oracle.mgw.drivers.OPHandlePool.getHandle(OPHandlePool.java:133)
at oracle.mgw.drivers.mq.MQLink.registerDestination(MQLink.java:382)
at oracle.mgw.engine.DestMgr.getForeignDest(DestMgr.java:54)
at oracle.mgw.engine.JobData.createAlterNativeSub(JobData.java:1248)
at oracle.mgw.engine.Worker.createDurableSub(Worker.java:2486)
at oracle.mgw.engine.Worker.myRun(Worker.java:94)
at oracle.mgw.engine.ManagedThr.run(ManagedThr.java:58)
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2059;AMQ9213: A communications error for occurred. [1=java.net.ConnectException[Connection refused: connect],3=Istana|http://forums.oracle.com/forums/]
at com.ibm.mq.jmqi.remote.internal.RemoteTCPConnection.connnectUsingLocalAddress(RemoteTCPConnection.java:632)
at com.ibm.mq.jmqi.remote.internal.RemoteTCPConnection.protocolConnect(RemoteTCPConnection.java:980)
at com.ibm.mq.jmqi.remote.internal.system.RemoteConnection.connect(RemoteConnection.java:989)
at com.ibm.mq.jmqi.remote.internal.system.RemoteConnectionPool.getConnection(RemoteConnectionPool.java:293)
at com.ibm.mq.jmqi.remote.internal.RemoteFAP.jmqiConnect(RemoteFAP.java:1371)
at com.ibm.mq.MQSESSION.MQCONNX_j(MQSESSION.java:924)
at com.ibm.mq.MQManagedConnectionJ11.<init>(MQManagedConnectionJ11.java:224)
... 18 more
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158)
at java.net.Socket.connect(Socket.java:464)
at java.net.Socket.connect(Socket.java:414)
at com.ibm.mq.jmqi.remote.internal.RemoteTCPConnection$2.run(RemoteTCPConnection.java:618)
at java.security.AccessController.doPrivileged(Native Method)
at com.ibm.mq.jmqi.remote.internal.RemoteTCPConnection.connnectUsingLocalAddress(RemoteTCPConnection.java:611)
... 24 more
2008-10-14 22:57:04 MGW Engine 0 442 worker0Unable to access queue DESTQ@MQLINK for subscriber SUB_MQ2AQ
2008-10-14 22:57:05 MGW Notif Handler 0 9 ConfigNotifierPropagation schedule SCH_MQ2AQ (DESTQ@MQLINK --> MGWUSER.MGW_BASIC_DEST) has been added.
2008-10-14 22:57:05 MGW Engine 0 19 ConfigNotifierMGW subscriber SUB_MQ2AQ has been activated.
2008-10-14 22:57:05 MGW Engine 0 434 worker0Failed to access queue DESTQ@MQLINK; provider queue: TQ
oracle.mgw.common.GatewayException: [800|http://forums.oracle.com/forums/] MQSeries queue manager, TESTQM, creation failed
at oracle.mgw.common.MgwUtil.GatewayException(MgwUtil.java:739)
at oracle.mgw.drivers.mq.MQOPHandle.<init>(MQOPHandle.java:64)
at oracle.mgw.drivers.mq.MQOPHandleFactory.createOPHandle(MQOPHandleFactory.java:35)
at oracle.mgw.drivers.OPHandlePool.getHandle(OPHandlePool.java:133)
at oracle.mgw.drivers.mq.MQLink.registerDestination(MQLink.java:382)
at oracle.mgw.engine.DestMgr.getForeignDest(DestMgr.java:54)
at oracle.mgw.engine.JobData.init(JobData.java:233)
at oracle.mgw.engine.Worker.recoverJob(Worker.java:1086)
at oracle.mgw.engine.Worker.myRun(Worker.java:98)
at oracle.mgw.engine.ManagedThr.run(ManagedThr.java:58)
[Linked-exception|http://forums.oracle.com/forums/]
com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2059'.
at com.ibm.mq.MQManagedConnectionJ11.<init>(MQManagedConnectionJ11.java:229)
at com.ibm.mq.MQClientManagedConnectionFactoryJ11._createManagedConnection(MQClientManagedConnectionFactoryJ11.java:500)
at com.ibm.mq.MQClientManagedConnectionFactoryJ11.createManagedConnection(MQClientManagedConnectionFactoryJ11.java:541)
at com.ibm.mq.StoredManagedConnection.<init>(StoredManagedConnection.java:95)
at com.ibm.mq.MQSimpleConnectionManager.allocateConnection(MQSimpleConnectionManager.java:182)
at com.ibm.mq.MQQueueManagerFactory.obtainBaseMQQueueManager(MQQueueManagerFactory.java:870)
at com.ibm.mq.MQQueueManagerFactory.procure(MQQueueManagerFactory.java:756)
at com.ibm.mq.MQQueueManagerFactory.constructQueueManager(MQQueueManagerFactory.java:704)
at com.ibm.mq.MQQueueManagerFactory.createQueueManager(MQQueueManagerFactory.java:169)
at com.ibm.mq.MQQueueManager.<init>(MQQueueManager.java:677)
at oracle.mgw.drivers.mq.MQOPHandle.<init>(MQOPHandle.java:60)
at oracle.mgw.drivers.mq.MQOPHandleFactory.createOPHandle(MQOPHandleFactory.java:35)
at oracle.mgw.drivers.OPHandlePool.getHandle(OPHandlePool.java:133)
at oracle.mgw.drivers.mq.MQLink.registerDestination(MQLink.java:382)
at oracle.mgw.engine.DestMgr.getForeignDest(DestMgr.java:54)
at oracle.mgw.engine.JobData.init(JobData.java:233)
at oracle.mgw.engine.Worker.recoverJob(Worker.java:1086)
at oracle.mgw.engine.Worker.myRun(Worker.java:98)
at oracle.mgw.engine.ManagedThr.run(ManagedThr.java:58)
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2059;AMQ9213: A communications error for occurred. [1=java.net.ConnectException[Connection refused: connect],3=Istana|http://forums.oracle.com/forums/]
at com.ibm.mq.jmqi.remote.internal.RemoteTCPConnection.connnectUsingLocalAddress(RemoteTCPConnection.java:632)
at com.ibm.mq.jmqi.remote.internal.RemoteTCPConnection.protocolConnect(RemoteTCPConnection.java:980)
at com.ibm.mq.jmqi.remote.internal.system.RemoteConnection.connect(RemoteConnection.java:989)
at com.ibm.mq.jmqi.remote.internal.system.RemoteConnectionPool.getConnection(RemoteConnectionPool.java:293)
at com.ibm.mq.jmqi.remote.internal.RemoteFAP.jmqiConnect(RemoteFAP.java:1371)
at com.ibm.mq.MQSESSION.MQCONNX_j(MQSESSION.java:924)
at com.ibm.mq.MQManagedConnectionJ11.<init>(MQManagedConnectionJ11.java:224)
... 18 more
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158)
at java.net.Socket.connect(Socket.java:464)
at java.net.Socket.connect(Socket.java:414)
at com.ibm.mq.jmqi.remote.internal.RemoteTCPConnection$2.run(RemoteTCPConnection.java:618)
at java.security.AccessController.doPrivileged(Native Method)
at com.ibm.mq.jmqi.remote.internal.RemoteTCPConnection.connnectUsingLocalAddress(RemoteTCPConnection.java:611)
... 24 more
2008-10-14 22:57:05 MGW Engine 0 442 worker0Unable to access queue DESTQ@MQLINK for subscriber SUB_AQ2MQ
2008-10-14 22:57:05 MGW Engine 0 LOG worker0Initialization failures for SUB_AQ2MQ
2008-10-14 22:57:05 MGW Engine 0 422 worker0Errors occurred during recovering subscriber SUB_AQ2MQ
oracle.mgw.common.GatewayException: [435|http://forums.oracle.com/forums/] Initialization failures for SUB_AQ2MQ
at oracle.mgw.common.MgwUtil.GatewayException(MgwUtil.java:739)
at oracle.mgw.engine.Worker.recoverJob(Worker.java:1087)
at oracle.mgw.engine.Worker.myRun(Worker.java:98)
at oracle.mgw.engine.ManagedThr.run(ManagedThr.java:58)
2008-10-14 22:57:13 MGW Engine 0 434 worker0Failed to access queue DESTQ@MQLINK; provider queue: TQ
oracle.mgw.common.GatewayException: [800|http://forums.oracle.com/forums/] MQSeries queue manager, TESTQM, creation failed
at oracle.mgw.common.MgwUtil.GatewayException(MgwUtil.java:739)
at oracle.mgw.drivers.mq.MQOPHandle.<init>(MQOPHandle.java:64)
at oracle.mgw.drivers.mq.MQOPHandleFactory.createOPHandle(MQOPHandleFactory.java:35)
at oracle.mgw.drivers.OPHandlePool.getHandle(OPHandlePool.java:133)
at oracle.mgw.drivers.mq.MQLink.registerDestination(MQLink.java:382)
at oracle.mgw.engine.DestMgr.getForeignDest(DestMgr.java:54)
at oracle.mgw.engine.JobData.init(JobData.java:233)
at oracle.mgw.engine.Worker.recoverJob(Worker.java:1086)
at oracle.mgw.engine.Worker.myRun(Worker.java:98)
at oracle.mgw.engine.ManagedThr.run(ManagedThr.java:58)
[Linked-exception|http://forums.oracle.com/forums/]
com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2059'.
at com.ibm.mq.MQManagedConnectionJ11.<init>(MQManagedConnectionJ11.java:229)
at com.ibm.mq.MQClientManagedConnectionFactoryJ11._createManagedConnection(MQClientManagedConnectionFactoryJ11.java:500)
at com.ibm.mq.MQClientManagedConnectionFactoryJ11.createManagedConnection(MQClientManagedConnectionFactoryJ11.java:541)
at com.ibm.mq.StoredManagedConnection.<init>(StoredManagedConnection.java:95)
at com.ibm.mq.MQSimpleConnectionManager.allocateConnection(MQSimpleConnectionManager.java:182)
at com.ibm.mq.MQQueueManagerFactory.obtainBaseMQQueueManager(MQQueueManagerFactory.java:870)
at com.ibm.mq.MQQueueManagerFactory.procure(MQQueueManagerFactory.java:756)
at com.ibm.mq.MQQueueManagerFactory.constructQueueManager(MQQueueManagerFactory.java:704)
at com.ibm.mq.MQQueueManagerFactory.createQueueManager(MQQueueManagerFactory.java:169)
at com.ibm.mq.MQQueueManager.<init>(MQQueueManager.java:677)
at oracle.mgw.drivers.mq.MQOPHandle.<init>(MQOPHandle.java:60)
at oracle.mgw.drivers.mq.MQOPHandleFactory.createOPHandle(MQOPHandleFactory.java:35)
at oracle.mgw.drivers.OPHandlePool.getHandle(OPHandlePool.java:133)
at oracle.mgw.drivers.mq.MQLink.registerDestination(MQLink.java:382)
at oracle.mgw.engine.DestMgr.getForeignDest(DestMgr.java:54)
at oracle.mgw.engine.JobData.init(JobData.java:233)
at oracle.mgw.engine.Worker.recoverJob(Worker.java:1086)
at oracle.mgw.engine.Worker.myRun(Worker.java:98)
at oracle.mgw.engine.ManagedThr.run(ManagedThr.java:58)
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2059;AMQ9213: A communications error for occurred. [1=java.net.ConnectException[Connection refused: connect],3=Istana|http://forums.oracle.com/forums/]
at com.ibm.mq.jmqi.remote.internal.RemoteTCPConnection.connnectUsingLocalAddress(RemoteTCPConnection.java:632)
at com.ibm.mq.jmqi.remote.internal.RemoteTCPConnection.protocolConnect(RemoteTCPConnection.java:980)
at com.ibm.mq.jmqi.remote.internal.system.RemoteConnection.connect(RemoteConnection.java:989)
at com.ibm.mq.jmqi.remote.internal.system.RemoteConnectionPool.getConnection(RemoteConnectionPool.java:293)
at com.ibm.mq.jmqi.remote.internal.RemoteFAP.jmqiConnect(RemoteFAP.java:1371)
at com.ibm.mq.MQSESSION.MQCONNX_j(MQSESSION.java:924)
at com.ibm.mq.MQManagedConnectionJ11.<init>(MQManagedConnectionJ11.java:224)
... 18 more
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158)
at java.net.Socket.connect(Socket.java:464)
at java.net.Socket.connect(Socket.java:414)
at com.ibm.mq.jmqi.remote.internal.RemoteTCPConnection$2.run(RemoteTCPConnection.java:618)
at java.security.AccessController.doPrivileged(Native Method)
at com.ibm.mq.jmqi.remote.internal.RemoteTCPConnection.connnectUsingLocalAddress(RemoteTCPConnection.java:611)
... 24 more
2008-10-14 22:57:13 MGW Engine 0 442 worker0Unable to access queue DESTQ@MQLINK for subscriber SUB_AQ2MQ
2008-10-14 22:57:13 MGW Engine 0 LOG worker0Initialization failures for SUB_AQ2MQ
2008-10-14 22:57:13 MGW Engine 0 422 worker0Errors occurred during recovering subscriber SUB_AQ2MQ
oracle.mgw.common.GatewayException: [435|http://forums.oracle.com/forums/] Initialization failures for SUB_AQ2MQ
at oracle.mgw.common.MgwUtil.GatewayException(MgwUtil.java:739)
at oracle.mgw.engine.Worker.recoverJob(Worker.java:1087)
at oracle.mgw.engine.Worker.myRun(Worker.java:98)
at oracle.mgw.engine.ManagedThr.run(ManagedThr.java:58)
Thanks&Regards
JoeUsing MGW to move messages between ibm mq and oracle aq has been pretty good to me, once it got set up it's run pretty trouble free.
Every once in a great while I have to reset the subscribers to tell oracle to start moving messages after they get stuck -- after downtime or whatnot, but in general it's been pretty reliable.
Anyway, stack trace indicates your mq server isn't (wasn't) responding, at least not on the IP/port you specified.
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2059;AMQ9213: A communications error for occurred. [1=java.net.ConnectExceptionConnection refused: connect],3=Istana
Caused by: java.net.ConnectException: Connection refused: connect- Izzy -
Setup between Oracle streams and MQ
Hi All,
I m trying to create the setup between oracle streams and Messing Queue(MQ).i have already install MQClient on my machine and messing gateways is also working fine,but accoring to setup docs i have created one user having all the granst they provide in docs and created queuetable,queue,dml handler,tables rules and starting queue after that we have done Capture and Apply process on that user, in other word u have say the entire setup but our data is not propagating that messaage to MQ.
So if anyone has specific setup code then pl provide or any suggestion u want can give.
thnks & regards
SanjeevHi Sanjeev,
There is a special forum dedicated to Oracle Streams: Streams
You may want to try there.
Extra tip: post the code you used. That way it is easier for people to see what you might have done wrong.
Regards,
Rob. -
JMS bridge and MQSeries. looking for statistics
Hi !
I have to use Weblogic 7 SP4 in cluster with a distant MQSeries queue manager.
I know I can't have a "exactly once" quality of service. I use a MDB (deplyed
on each instance of the server).
I'm looking for statistics about how often a message can be treated 2 (or more)
times.
Thanks a lot for any help !
Florent
Hi Florent,
Since these are MQ messages, it might be possible to find
such statistics in MQ. Also, I think that MQ stores a
redelivery count in their messages - so you can likely
instrument your application code to get at the count.
Note that 7.0 actually does support exactly once with WL MDBs driven
by MQ. If you use transactions you can infer some stats on redeliveries
by checking the relevant transaction statistics for rollback counts.
I'm attaching some notes on JMS integration for your
convenience.
Tom
florent wrote:
> Hi !
>
> I have to use Weblogic 7 SP4 in cluster with a distant MQSeries queue manager.
> I know I can't have a "exactly once" quality of service. I use a MDB (deplyed
> on each instance of the server).
>
> I'm looking for statistics about how often a message can be treated 2 (or more)
> times.
>
> Thanks a lot for any help !
>
> Florent
JMS Integration of Foreign Vendors with BEA WebLogic Server
The following notes are derived mostly from "http://dev2dev.bea.com/technologies/jms/index.jsp".
For additional questions, a good forum for WebLogic questions in general is "newsgroups.bea.com". These can be mined for information by using Google's newsgroup search function.
JMS Integration Overview
- For integration with "non-Java" and/or "non-JMS" platforms, see "Non-Java Integration Options" below.
- For a foreign JMS vendor to participate in a WL transaction it must support XA. Specifically, it must support the javax.jms.XA* interfaces.
- In WL versions 6.0 and up it is possible to make synchronous calls to foreign JMS vendors participate in a WL transaction as long as the foreign vendor supports XA.
- WL 6.0 and 6.1 MDBs can be driven by foreign vendors non-transactionally. They can be driven transactionally by a select few foreign vendors (MQ is not part of the select few)
- WL 7.0 and later, MDBs can be driven by foreign vendors transactionally and non-transationally.
- WL 6.1 and later WL provides a messaging bridge feature. Messaging bridges forward messages between any two JMS destinations, including foreign destinations, and can transfer messages transactionally or non-transactionally.
- WL 8.1 JMS provides additional features that simplify transactional and JNDI integration of foreign vendors. See http://edocs.bea.com/wls/docs81/jms/intro.html#jms_features
Integration with 8.1 Details
A good overview of 8.1 JMS interop capability is the presentation "Integrating Foreign JMS Providers with BEA WebLogic Server" here:
http://www.bea.com/content/files/eworld/presentations/Wed_03_05_03/Application_Servers/1097-Foreign_JMS_Providers_WLS.pdf
This document refers to helpful new 8.1 features, which simplify integration. These include:
http://edocs.bea.com/wls/docs81/ConsoleHelp/jms_config.html#accessing_foreign_providers
http://edocs.bea.com/wls/docs81/jms/j2ee_components.html#1033768
And are also summarized here (under interoperability):
http://edocs.bea.com/wls/docs81/jms/intro.html#jms_features
Also read the extensive MDB documentation, which extensively covers integrating foreign vendors:
http://edocs.bea.com/wls/docs81/ejb/message_beans.html
The 8.1 features are likely sufficient for most 8.1 integration needs, and you may not need to refer "Using Foreign JMS Providers With WLS" white-paper mentioned below.
Integration with 6.1 and 7.0 Details
Read the "Using Foreign JMS Providers With WLS" white-paper:
http://dev2dev.bea.com/products/wlserver/whitepapers/jmsproviders.jsp
Note that this white-paper does not take into account 8.1 features.
For 7.0 read the extensive 8.1 MDB documentation, which largely also applies to 7.0:
http://edocs.bea.com/wls/docs81/ejb/message_beans.html
Non-Java Integration Options
- WL JMS has a JNI based C client which is available for Windows and some UNIX platforms. This C client supports 7.0 and up, and will be officially packaged with WLS in 9.0 (virtually unchanged). The C API is currently only supported through the jms newsgroup. See "JMS C API", here:
http://dev2dev.bea.com/technologies/jms/index.jsp
- WL supports direct Windows COM access through its "JCOM" feature. This doesn't include the JMS API, but one can invoke EJBs which in turn invoke JMS. See
http://e-docs.bea.com/wls/docs61/jcom.html
http://e-docs.bea.com/wls/docs70/jcom/
http://e-docs.bea.com/wls/docs81/jcom/
- Similar to JCOM, but more advanced, WL supports IIOP standard based access on multiple platforms. You can use the BEA Tuxedo C client for this purpose (no license fee). This doesn't include the JMS API, but one can invoke EJBs which in turn invoke JMS. See
http://e-docs.bea.com/wls/docs81/rmi_iiop/
http://e-docs.bea.com/wls/docs70/rmi_iiop/
http://e-docs.bea.com/wls/docs61/rmi_iiop/
Unlike most other approaches, the IIOP client approach also allows the client to begin and commit user (JTA) transactions (not configured).
- If you already have a BEA Tuxedo license, one option is communicate through BEA Tuxedo (which has various APIs on Windows) and configure a WebLogic Server to respond to these requests via the WTC bridge. Search for "WTC" in the BEA docs. Unlike most other approaches, the Tuxedo API approach also allows the client to begin and commit user (JTA) transactions.
- Another approach is to interop via web-service standards. Or even to simply to invoke a servlet on the WL server using a basic HTTP call from Windows. These in turn can invoke the JMS API. There is a white-paper on "Interoperability Study of BEA WebLogic Workshop 8.1 and Microsoft .NET 1.1 Web Services", that demonstrates web-services here:
http://ftpna2.bea.com/pub/downloads/WebLogic-DotNet-Interop.pdf
- Yet another approach is to use a third party product that is designed to wrap any JMS vendor. There are even open source versions. In no particular order, here are some examples: Open3 WinJMS, CodeMesh, Active JMS, SpiritSoft
- Finally, there are .NET/C/C++ integration libraries that not specific to JMS, some examples are JNBridge, Jace, and CodeMesh.
Notes on MQ Remote Capable XA Clients
Until recently, IBM MQ JMS clients could not work transactionally unless they were running on the same host as their MQ server. This is a limitation unique to MQ that was relaxed with the introduction of IBM's new "WebSphere MQ Extended Transactional Client". See:
http://publibfp.boulder.ibm.com/epubs/pdf/csqzar00.pdf
The product is new, and for some reason, configuration of this client seems to be tricky, even when WebLogic is not involved at all. Oddly, the main sticking point seems to be simply making sure that class paths refer to the required IBM jars:
- Required on WLS where MQ objects are bound into JNDI:
com.ibm.mq.jar, com.ibm.mqjms.jar
- Required only if MQ objects are bound into JNDI on a different server:
com.ibm.mq.jar
If there are problems when using this client, first get it to work using a pure IBM client without any BEA classes involved. Once that is working, search the WL JMS newsgroup for answers and/or contact BEA customer support.
Notes on Oracle AQ Integration
If problems are encountered integrating Oracle's built-in queuing (Oracle AQ) JMS client, there is publicly available wrapper code that can aid integrating AQ directly into MDBs, JMS, or the messaging bridge. The solution is titled "Startup class to bind AQ/Referenceable objects to WLS JNDI", is not supported by BEA, and is posted to:
http://dev2dev.bea.com/codelibrary/code/startupclass.jsp
Caveats:
The solution doesn't directly support concurrent consumers. Perhaps Oracle requires that concurrent consumers each have a unique JMS connection? As a work-around, parallel message processing can be achieved indirectly by forwarding AQ messages into a WL JMS destination - which do support concurrent processing.
Up-to-date versions of Oracle may be required. For more information, google search the weblogic.developer.interest.jms newsgroup for "Oracle" and "AQ".
The solution doesn't seem to support transactions, it may be possible to extend it to do so.
MDB Thread Pool Notes
WL7.0SP? and WL8.1 and later support the "dispatch-policy" field to specify which thread pool an MDB uses to run its instances. In most cases this field should be configured to help address potential performance issues and/or dead-locks:
http://edocs.bea.com/wls/docs81/ejb/DDreference-ejb-jar.html#dispatch-policy
(Note that "dispatch-policy" is ignored for non-transactional foreign vendors; in this case, the MDB "onMessage" callback runs in the foreign vendor's thread.)
MDB Concurrency Notes
Queue MDBs driven by foreign providers can run multiple instances concurrently. Topic MDBs driven by foreign providers are limited to one instance (not sure, but transactional foreign driven topic MDBs may not have this limitation). The size of the thread pool that the MDB runs in and the "max-beans-in-free-pool" descriptor limit how many instances run concurrently.
Design Guide-Lines and Performance Tuning Notes
The "WebLogic JMS Performance Guide" white-paper contains detailed design, performance, and tuning information for Clustering, Messaging Bridge, JMS, and MDBs.
http://dev2dev.bea.com/products/wlserver/whitepapers/WL_JMS_Perform_GD.jsp
-
ORACLE SERVER AND UNIX TP MONITOR-2
제품 : ORACLE SERVER
작성날짜 : 1995-01-24
Subject: Oracle Server and UNIX Transaction Processing Monitors-2
Page(3/4)
This file contains commonly asked questions about Oracle7 Server and UNIX
Transaction Processing Monitors (TPMs). The topics covered in this article are
o Oracle Parallel Server and TP Monitors
o Oracle and DCE-based TP Monitors
o Other commonly asked questions
The questions answered in part 3 provide additional detail to the information
provided in part 1.
Oracle Parallel Server and TP Monitors
======================================
How does Oracle Parallel Server (OPS) work with TP Monitors?
If you are using Oracle-managed transactions, there are no special
considerations. But if you are using TPM-managed transactions, and
thus need to use the XA interface, then Oracle requires release 7.1.3
or later and a special version of the Distributed Lock Manager, called
the session-based lock manager. This version of the DLM is not yet
available for all platforms. To understand this restriction, let's take
a look at one of the technical details of XA.
The XA specification requires that the Resource Manager be able to
move a transaction from one process to another, and even to be
able to commit in a separate process. In Oracle, transactions are
attached to sessions, so that means that we also have to be able to
move sessions. Therefore, the session/transaction can't have any state
which is tied to a particular process. The first generation distributed
lock managers were all built to use the process id as the lock owner,
which doesn't work for locks which need to move with the transaction.
Oracle and DCE-based TP Monitors
================================
How does Oracle interface to the Encina TP monitor? To CICS/6000? I've
heard that they require OSF DCE facilities in order to run?
Oracle interfaces to Encina and CICS/6000 just as it does to any other
TP Monitor. The TP Monitor issues XA commands to control transactions, and
Oracle executes the commands. Encina and CICS/6000 do use DCE features for
their own operation. However, this use is transparent to the Oracle Server.
What DCE facilities can Oracle products take advantage of when working with
a DCE-based TP Monitor?
The two most commonly mentioned DCE features which might be useful
to Oracle users are multi-threading and security. We look at these in
the subsequent questions in this section.
Encina documentation suggests that a Resource Manager such as Oracle can
be either single-threaded or multi-threaded? Which way is Oracle XA
implemented?
The Oracle XA implementation is single-threaded, as is any Oracle client.
Within a single process, at most one thread can access Oracle at a time.
Does that mean that only a single Encina application can access an instance
of Oracle transactionally at any given moment?
No. Oracle XA is only single-threaded within a single application server
process. Multiple applications can access Oracle simultaneously using XA
by using different application processes. Encina allows
(1) serial reuse of a single server by different clients. There are
two options for this. The server can use long term reservation
but be defined to be in shared or concurrent access mode, which
allows the server to be used by another client as soon as an RPC
completes. Alternatively, the server can use default reservation
and exclusive mode, which allows the server to be used by another
client as soon as the current transaction ends.
(2) concurrent execution by multiple servers, even if they are accessing
the same Oracle database. These may be executing the same or different
procedures.
These two features should let you get as much concurrency as you need.
Why isn't the Oracle XA library multi-threaded?
The XA specification specifically states that its use of the phrase
"thread of control" means a process. If an RM were to multi-thread its
XA, it would be in violation of the specification. This restriction
was put place in because at the time the specification was written,
there were numerous thread packages: if the TM used one, the application
another, and perhaps the RM yet a third, there's no way it could work.
As threads standards settle down, the later versions of XA will probably
relax this restriction.
Will Oracle change if the XA specification changes?
Very likely. The exact time frame will of course depend on the priority of
all work items at that time.
Does Oracle use DCE security via the TP Monitors?
The integrity of the connection between a DCE TP Monitor client and DCE
TP Monitor server is protected by the DCE security functionality.
Theoretically, the TP Monitor could make the DCE-protected client security
information available to Oracle. Unfortunately, there's no standard way
for a TP Monitor to pass security information information to a Resource
Manager such as Oracle. Oracle is leading an effort to extend the X/Open
model to allow use of the security information provided by the Monitor.
In the meantime, the basic DCE security features such as encryption are
useful within TP Monitors.
Effective use of DCE security would normally also mean that the security of
the TP Monitor client be passed through the TP Monitor, through the Oracle
client (application server), to the Oracle Server, and possibly on
to other Oracle Servers through database links. The ability to transfer
security information to other processes, called delegation, is missing
in DCE version 1.0. DCE version 1.1, expected to emerge in late 1994,
has some delegation features. Oracle is examining these features to see
how they might be used.
Are there any special considerations for CICS/6000?
There are two:
(1) It is inefficient to run without XA. CICS/6000 is designed to
use XA. It uses XA so that the CICS server can log on to Oracle
when it starts, after which it makes that Oracle connection available
to any transaction it executes. If you don't use XA, the CICS server
does not itself log on to Oracle so each transaction has to log on
and log off - a very expensive mode of operation. Also, it is very
un-cics-like in that the application does the log{on,off} and also
commits - in a mainframe CICS database program CICS would implicitly
do these operations. Oracle does not recommend this mode because of the
performance penalty.
(2) CICS servers are generic and dynamically load application modules.
In order for these modules to access the Oracle connection made by
CICS, the applications must be built with a shared object version of
the Oracle libraries. This is an installation option on platforms which
support CICS/6000 and other products using its architecture such as
CICS 9000.
Other commonly asked questions
==============================
What other Resource Managers can be included in an Oracle XA transaction?
Several other relational database vendors have an XA implementation
available or in progress. There is an XA C-ISAM product from
Gresham Telecomputing. There are also Resource Managers contained
within some of the TP Monitors which can be coordinated in the same
transaction. For example, CICS/6000 has VSAM files and other data
stores, Encina has its RQS queuing system, and Tuxedo has its /Q queuing
system.
What is Recoverable Queuing Service (RQS) and how does it interoperate with
Oracle7 and Encina? What about /Q?
Recoverable Queuing Service is a feature provided by Encina which allows
transactional, distributed queuing (enqueue/dequeue). Tuxedo has a similar
product called /Q. Because these products are themselves coordinated by the
TM component of the TP Monitor, their queue operations are atomically
coordinated with with operations on XA Resource Managers such as Oracle7
Server. That is, they can atomically put something on one of their queues
and commit an Oracle transaction, then at some later time dequeue an
entry atomically with doing some other Oracle transaction. The queue
system guarantees that the message will not be lost or transmitted twice.
Can I mix TP Monitor applications with standard Oracle7 Server applications?
Yes, you can have existing Oracle applications connected to the database
with alongside TPM applications against the same database. The TPM does
not manage the whole database, just those transactions which are started
by the TPM. The Oracle Server will properly handle concurrency control
between the transactions managed by itself and those managed by the TPM.
Is Oracle planning to change its tools to be more suitable for TP Monitors?
With Oracle Procedure Builder 1.5, to be available with CDE2,
Oracle will provide a foreign function interface that allows you to
dynamically set up PL/SQL calls that access C functions. In other
words, you can access C routines in Windows DLLs from within your
PL/SQL procedures. This will allow PL/SQL under Windows easy access to
TP Monitor APIs.
Does Oracle7 Server itself use XA-compliant TPMs as the interface to
foreign RMs?
No, for this purpose Oracle Server uses the SQL*Connect products or the new
Transparent and Procedural Gateway products.
Does Oracle7 Server use XA to coordinate Oracle7-only distributed
transactions?
No, it uses an internal mechanism.
Can database links be used with XA?
If an Oracle7 database is running under XA, it can access other Oracle7
databases through database links, with some restrictions. First, the
access to the other database must use SQL*Net V2 and be running MTS.
Second, it must currently be to another Oracle7 database. Assuming those
restrictions, the Oracle 7 database can do distributed update to another
Oracle 7 database by using a database link, whether it is started by an
Oracle application or a TP Monitor application. The TPM will see Oracle
as only a single RM, but Oracle7 will propagate all the transaction
commands to the other database, including the two-phase commit. If
the transaction is started by a TP Monitor application and is using XA,
it can also update non-Oracle resources managed by the TPM. If it
is started from an Oracle application, it can only include resources
managed by Oracle.
Here's a sample configuration:
| TPM | | TPM |
| client | | client |
| |
| |
| TPM |
| |
| |
| Oracle | Forms, Forms, | Oracle | | non-XA | | XA |
| client | Plus, Plus, | client | | TPM | | TPM |
--------- Pro, Pro, --------- | server | | server |
| Financials, Financials, | |(note 1)| ----------
| etc. etc. | ---------- |
| | | |
| SQL | SQL | SQL | XA
| commit | commit | commit | commit
| | | |
| Oracle | | Oracle | | Oracle | | Oracle |
| server | | server | | server | | server |
| | | |
| | | |
| | | |
| Database 1 | | Database 2 |
| | | |
| A | A
| | dblink to database 1 | |
| ------------------------------------ |
| |
dblink to database 2
Note 1: Oracle will work having both XA and non-XA servers but some TPMs
may have restrictions on this.
Are multiple direct connections possible from a Pro* program?
Using XA, you can not only specify multiple direct connections to Oracle7
databases, you can also update them both in the SAME transaction. The
way to do this is to use a precompiler feature called a named database.
When you use a named database, you qualify the SQL statement with the
database name. For example, you write EXEC SQL AT dbname UPDATE emp ....
We have a complementary feature in the xa open string to let the user
associate the name with a particular RM instance, called the DB clause.
You will also want to use the SqlNet clause in the open string so you
can give the two different SIDs. This clause does not require the use of
the SQL*Net product, it is just a naming convention. For more information,
see Oracle7 Server for UNIX Administrator's Reference Guide.
Some TP Monitors may not support having multiple Resource Mangers in the
same server; check with the TPM vendor.
Is there any collateral available for XA or TP Monitors?
Oracle At Work 52684.0692
Oracle7 Server for UNIX Administrator's #A10324-1
Reference Guide
Guide to Oracle's Products and Services #A10560
Oracle7 Server and CICS/6000 #A14200
Where can I get more information on the DTP model?
X/Open's address is
X/Open company Ltd (Publications)
P O Box 109
Penn
High Wycombe
Bucks HP10 8NP
Tel: +44 (0)494 813844
Fax: +44 (0)494 814989
Request
G307 Distributed Transaction Processing: Reference Model Version 2
X/Open Guide G307 ISBN 1-859120-19-9 28cm.44p.pbk.220g.11/93
Page(4/4)
This file contains commonly asked questions about Oracle Server and UNIX
Transaction Processing Monitors (TPMs). The topics covered in this article are
o Performance with Oracle Server and TP monitors
o Performance using Oracle's XA Library
The questions answered in part 4 provide additional detail to the information
provided in part 1.
Performance with Oracle Server and TP Monitors
==============================================
I have heard that Transaction Processing Monitors (TPMs) will increase
Oracle Server performance. Is this true?
Several hardware and TPM vendors have made the claim that TPMs
will increase RDBMS performance. This claim is based on TPC-A
benchmarks. The key point to understand about TPC-A is that it
requires, for every transaction-per-second, ten times that many
users to be connected. For example, to get 600 TPS, you need 6000
users. The next question will answer in more detail how the the
three-tier architecture addresses this requirement, but first let's
look more generally at what TP Monitors can and can't do to improve
performance.
TP Monitors can provide better performance:
(1) When there are more than several hundred users connected.
This is because of the TP Monitor's role in the three-tier
architecture, described in the next question. In this
architecture, terminal handling is offloaded to one or more
separate machines, freeing up those cycles to do database work.
Note that this does NOT mean that Oracle itself runs faster,
just that we've given it more CPU cycles to use.
(2) When, because of the high potential concurrency of requests,
significant resource contention exists. Use of a TP Monitor can
limit the degree of concurrency and thus reduce contention.
TP Monitors can not provide better performance:
(1) For existing applications. The applications must be designed
to fit the TP Monitor architecture.
(2) For applications which are highly interactive in their use of
the database. These applications put many messages
through the transport system, and the TP Monitor is not as
efficient as SQL*Net for point-to-point communication.
(3) For CPU intensive single-query decision support. When executing
a single large command, Oracle query facilities work efficiently,
especially with the use of Oracle Parallel Query, available in 7.1.
How does the three-tier solution help TPC-A, or other situations with
thousands of on-line users?
The TPC-A test calls for a large number of users to produce a given
result. In the high-end results we produced in June, 1992, for example,
6150 terminals were simulated to produce 618 TPC-A transactions.
Thus, terminal concentration accounts for a large portion of the total
processing time used.
First, let's look at how the Multi Threaded Server would work for
this benchmark. In this case, there are many client processes,
but only a few server processes, which handle client requests on a
first-come first serve basis. When they are done with a request,
they take another client's request.
ORACLE7 CLIENT/SERVER ARCHITECTURE WITH MULTI THREADED SERVER
| Client | | Server |
| __________ |______________|_____ _____________ _____________ |
| | Client | | SQL*Net | |_|Dispatcher | | | |
| | Process| | | ____| Process |___| | |
| |________| | | | __|___________| | | |
|____________| | | | | | | | |
| | | | | | Oracle7 | |
______________ | | | __|__|____ | Server | |
| Client | | | | __|_|_____ | | | |
| __________ | | | | | Shared | |____| | |
| | Client | | SQL*Net | | | | Server |_|____| | |
| | Process|_|______________|__| | | Process|_| | | |
| |________| | | | |________| |___________| |
|____________| | | |
| | |
______________ | | |
| Client | | | |
| __________ | | | |
| | Client | | SQL*Net | | |
| | Process|_|______________|____| |
| |________| | | |
|____________| | |
|_______________________________________|
Client processes = N Dispatcher processes >= 1
Shared server processes >= 1
If there are 500 clients in this environment, there will be one or more
dispatcher processes, dynamically tunable, and one or more shared
server processes, dynamically tunable, on the server. The reduction
in the total number of processes handled by the server system
results in more processing time available for RDBMS activity. Thus
higher RDBMS transaction throughput can be obtained on the
server system.
But the problem for the TPC-A, and for certain large customer
configurations, is not the only ability of the Oracle Server to
process transactions, but also the ability of the operating
system to handle huge numbers of incoming connections.
There is one incoming connection for each client. Most UNIX
operating systems have a limit on how many such connections they can
handle. Even if a particular operating system allows a large number of
connections, each takes some amount of overhead to manage.
In order to service all 6150 terminals, we selected a 3-tier hardware
environment where the middle tier, using a TPM, acted as a terminal
concentrator. The high-end TPC-A architecture looked like the following.
The Application Servers, which contain the Pro*C statements used to
perform the transaction also run on the terminal concentrator machine
in order to offload as much work from the database serve as possible.
They send the compiled SQL over SQL*Net to the Oracle7 Server processes.
ORACLE7 TPS-A CLIENT/SERVER ARCHITECTURE
| Client | | Terminal | | Server |
| ________ | | Concentrator | | |
| | Client | |TPM | | | |
| | Process|_|_____|__ _____ | | |
| |________| |Comm | | | | | | |
|____________| | | | | | | |
| |__| | | | |
____________ | | TPM | | | |
| Client | | ___| | _______ | | ________ _______ |
| ________ | | | | |_| |__|_______|__| Oracle | | | |
| | Client | |TPM | | | | |Appl. | |SQL*Net| | Server |__| | |
| | Process|_|_____|_| |_____| |Server | | | | Process| | | |
| |________| |Comm | |_______| | | |________| | | |
|____________| | | | | | |
|_______________________| | | | |
| | | |
____________ _______________________ | |Oracle7| |
| Client | | Terminal | | |Server | |
| ________ | | Concentrator | | | | |
| | Client | |TPM | | | | | |
| | Process|_|_____|__ _____ | | __________ | | |
| |________| |Comm | | | | _______ |SQL*Net| | Oracle | | | |
|____________| | | | |_| |__|_______|__| Server |__| | |
| |__| | |Appl. | | | | Process| | | |
____________ | | TPM | |Server | | | |________| |_______| |
| Client | | ___| | |_______| | | |
| ________ | | | | | | | |
| | Client | |TPM | | | | | | |
| | Process|_|_____|_| |_____| | | |
| |________| |Comm | | | |
|____________| | | | |
|_______________________| |________________________|
Clients = 6150 Terminal concentrators = 17
TP Monitor instances = 17
Application server processes Oracle Server processes
= 17*8 = 17*8
The TPM is the software component of the terminal concentrator. In this role
it offloads terminal handling from the the machine running Oracle Server.
Since more than one terminal concentrator can be configured, whereas the
database in this case had to run on a single machine, concentrator machines
can be added until the performance of the back-end machine was optimized.
This three-tier solution resulted in the outstanding transaction throughput
announced with Oracle7 Server. Even with Oracle Parallel Server, it may pay
to offload the terminal handling so that the cluster can be exclusively used
for database operations.
Can you summarize the performance discussion for me?
Depending on the number of users required, different architectures may be
used in a client/server environment to maximize performance:
1) For a small number of users, the traditional Oracle two-task
architecture can be used. In this case, there is a one-to-one
correspondence between client processes and server processes. It's
simple, straightforward, and efficient.
2) For a large number of users, Multi Threaded Server might be a better
approach. Although some tuning may be required, Multi Threaded Server
can handle a relatively large number of users for each machine size
compared to the traditional Oracle approach. Using this approach,
customers will be able to handle many hundreds of users on many
platforms. Furthermore, current Oracle applications can move to this
environment without change.
3) For a very large number of users, where transactions are simple and
terminal input concentration is the overriding performance issue, a
3-tier architecture incorporating a TPM may be useful. In this case,
terminal concentration is handled by the TPM in the middle tier. As
you might expect, it is a more complex environment requiring more
system management. For existing Oracle customers, significant Oracle
application modifications will be required.
Oracle provides all of these choices.
Performance using Oracle's XA Library
=====================================
Are there any performance implications to using the XA library (in other
words, to using TPM-managed transactions)?
(1) The XA library imposes some performance penalty. You should use
TPM-managed transactions only if you actually need them. Even if you
are getting the one-phase commit optimization, the code path is
longer because we need to map back and forth between external
formats and internal ones. Also, prior to 7.1, XA requires you
to release all cursors at the end of a transaction, which results
in extra parsing. Even with shared cursors, there is time spent
looking up the one you need and re-validating it. This has been
improved for 7.1.
(2) If you need to use two-phase commit, this will incur additional cost
since extra I/Os are required. If you do need 2PC, you need to account
for that when sizing the application.
(3) Although some TPMs allow parallel execution of services (such as Tuxedo's
"tpacall"), this will not normally enhance performance unless different
resource managers are being used. In fact, Oracle Server must serialize
accesses to the same transaction by the same Oracle instance, and the
block/resume code will in fact degrade performance in that case compared
to running the services sequentially.hello,
the role is the same on all plattforms. the reports server takes requests for running reports, spawns an engine that executes the request. in addition to that, the server also provides scheduling services and security features for the reports environment.
regards,
the oracle reports team -
Oracle AQ to JMS Queue which is on Oracle Application server
Hi,
I am using Oracle Streams AQ Oracle database 10g
and i have a JMS Queue on oracle Application server.
how i can Propagate message from Oracle AQ (AQ$_JMS_TEXT_MESSAGE)Queue to JMS Queue. ?
Thanks,
SatnaniHi Justin,
Thanks for Reply, but in my case my JMS queue is on Oracle Application Server.
and i want to propagate message from AQ to JMS queue.
and none of the document is available to describe how to send message from oracle database AQ to JMS queue which is on application server.
please help
Thanks,
Satnani -
ORACLE SERVER AND UNIX TP MONITOR-1
제품 : ORACLE SERVER
작성날짜 : 2002-05-17
====================================================================
Subject: Oracle Server and UNIX Transaction Processing Monitors - 1
=====================================================================
PURPOSE
This file contains commonly asked questions about Oracle Server and UNIX
Transaction Processing Monitors (TPMs). The topics covered in this article are
o What is a Transaction Processing Monitor (TPM)?
o What is the X/Open Distributed Transaction Processing Model?
o How does the Oracle Server works with TPMs?
o How should I position TPMs with my customer?
o What Oracle products must a customer purchase?
o Where can my customer purchase a TPM?
o Availability and packaging
Explanation & Example
What is a Transaction Processing Monitor?
=========================================
Under UNIX, a Transaction Processing Monitor (TPM) is a tool that coordinates
the flow of transaction requests between front-end client processes that issue
requests and back-end servers that process them. A TPM is used as
the "glue" to coordinate transactions that require the services of several
different types of back-end processes, such as application servers and
resource managers, possibly distributed over a network.
In a typical TPM environment, front-end client processes perform screen
handling and ask for services from back-end server processes via calls to the
TPM. The TPM then routes the requests to the appropriate back-end server
process or server processes, wherever they are located on the network. Through
configuration information, the TPM knows what services are available and where
they are located. Generally, the back-end server processes are specialized so
that each one handles one type of requested service. The TPM provides
location transparency as well and can send messages through the network
utilizing lower-level transport services such as TCP/IP or OSF DCE.
The back-end servers process the requests as necessary and
return the results back to the TP monitor. The TP monitor then routes
these results back to the original front-end client process.
A TPM is instrumental in the implementation of truly distributed processing.
Front-end clients and back-end processes have no knowledge of each
other. They operate as separate entities, and it is this concept that provides
flexibility in application development. Front-end and back-end processes are
developed in the UNIX client-server style, with each side optimized for its
particular task. Server functionality can be deployed in stages, which makes
it easy to add functionality as needed later in the product cycle. It also
makes it easy to distribute both the front-end and back-end processes
throughout the network on the most appropriate hardware for the job. In
addition, multiple back-end server processes of the same type might be
activated to handle increasing numbers of users.
What is the X/Open Distributed Transaction Processing Model?
============================================================
The X/Open Transaction Processing working group has been working
for several years to establish a standard architecture to implement
distributed transaction processing on open systems. In late 1991,
X/Open published the initial Distributed Transaction Processing (DTP)
model specification and defined the first of several interfaces that
exist between the components of the model. Subsequently, other publications
and a revised model specification have been published.
An important function of the TPM in the X/Open DTP model is the
synchronization of any commits and rollbacks that are required to complete
a distributed transaction request. The Transaction Manager (TM) portion
of the TPM is the entity responsible for ordering when distributed commits
and rollbacks will take place. Thus, if a distributed application program
is written to take advantage of the TM portion of the TPM, then it,
and not the DBMS, becomes responsible for enabling the two-phase commit
process. Article 2 has more detail on this model.
How does the Oracle Server work with TPMs?
==========================================
When a TPM is used without invoking an X/Open TM component to manage the
transactions, Oracle Server needs no special functionality. The transaction
will be managed by Oracle itself. However, when the TPM X/Open TM component
is used to manage the transaction, the Oracle Server, that is the Oracle DBMS,
acts as a Resource Manager--a type of back-end process. In the case of
TPM-managed transactions, the TM needs a way to tell the RMs about the stages
of the transaction. This is done by a standard, X/Open defined interface
called XA. Article 2 of of this document gives more information about both
the X/Open model and Oracle7's use of XA.
Because the XA interface provides a standard interface between the TM and the
resource manager, it follows that the TM can communicate with any XA-compliant
resource manager (e.g., RDBMS), and, conversely, that a resource manager can
communicate with any XA-compliant TM. Thus, the Oracle Server, beginning with
Oracle7, works with any XA-compliant TM.
How should I position TPMs with my customer?
============================================
There's been a great deal of confusion about the need for TPM technology. Some
software suppliers, most notably IBM, will assert that a TPM like CICS is a
necessary requirement for high volume OLTP. Other vendors will assert that
there is seldom a need for such technology. And yet others promote TPMs as
providers of higher transaction throughput.
From Oracle's standpoint, customers might choose TPM technology under any of
the following conditions:
1. For heterogeneous database access, especially for 2PC capability
This means that a TPM can be used to coordinate 2PC between Oracle
DBMS and any other XA-compliant database, such as Informix. This
does NOT provide SQL heterogeneity - SQL calls to Oracle DBMS may be
different than SQL calls to Informix. The TPM handles the routing,
communication, and two-phase commit portion of the transaction, but
does not translate one type of SQL call into another.
2. For transaction monitoring and workload control
The leading TPMs supply tools to actively manage the flow of
transactions between clients and servers and to load balance the work
load across all available processors on a network, not just on a
single multi-processor system. Some TPMs also have the ability to
dynamically bring up additional back-end services during peak work
hours.
3. For more flexible application development and installation
One of the key features of the DTP model is application modularity.
Modularity, that is, the decomposition of a large program into small,
easily defined, coded and maintained "mini-programs" makes it easy to
add new functionality as needed. Modularity also makes it much easier
to distribute the front-end and back-end processes and the resource
managers across hardware throughout a network.
4. For isolating the client from details of the data model
By using the service oriented programming model, the client program
is unaware of the data model. The service can be recoded to use a
different one with no change to the client. To get this advantage,
the application developer must explicitly code the server and client
to fit the service model.
5. For connection of thousands of users
TP Monitors, because of their three-tier architecture, can be used
to connect users to an intermediate machine or machines, removing
the overhead of handling terminal connections from the machine
actually running the database. See Article 4 for more information.
There are also several cases where TPM technology is not the right answer.
These include:
1. If the customer is simply looking for a performance improvement
The customer may have heard a theory that "higher performance
is possible for large scale applications only if they use a
TP monitor". First, no performance gain can be achieved for
existing applications; in fact, they won't even run under a TP
Monitor without recoding. Second, performance improvements have
only been documented for large numbers of users, and "large"
means many hundreds or thousands. Without a TP Monitor,
Oracle Server can handle several hundred users with its normal
two-task architecture and several times that using the Multi
Threaded Server. For more on performance, see Article 4.
2. If the customer has made large investment in his existing Oracle
applications
TP monitor applications must be designed from the ground up to take
advantage of TP monitor technology. Current Oracle customers will find
it difficult to "retrofit" a TP monitor to their existing applications.
The Multi Threaded Server, on the other hand, allows the use of
existing Oracle applications without change.
3. If the customer is committed to the Oracle tool set
Currently, none of Oracle's front-end tools (Oracle Forms, etc.) is
designed to work with TP monitors. It is possible to invoke a
TP Monitor by using user exits. However, the fact that the TP
Monitor model hides the data model from the client means that only
the screen display parts of Forms can be used, not the automatic
mapping from screen blocks to tables.
4. If the customer does not have a staff of experienced software engineers
This is still very young technology for UNIX. There is not a lot of
knowledge in the industry on how to build TP monitor applications or
what techniques are most useful and which are not. Furthermore,
integrating products from different vendors, even with the support
of standard interfaces, is more complex than deploying an integrated
all-Oracle solution. Because TP monitor technology is fairly
complex, we recommend that you let the TP monitor supplier promote
the virtues of their technology and differentiate themselves from
their competitors.
What Oracle products must a customer purchase?
==============================================
If your customer is only interested in building Oracle-managed TP Monitor
transactions, the only Oracle products required are the Oracle Server
and the appropriate Oracle precompiler for whatever language the
application is being written in--most likely C or Cobol. If TPM-managed
transactions are required, the Oracle7 Server with the distributed option
is also required. SQL*Net is optional because the TPM takes care of the
network services. Article 2 describes when you would choose to have the TP
Monitor manage the transactions.
Where can my customer purchase a TPM?
=====================================
There are many vendors offering the UNIX TPM products. (Oracle does not
relicense TPMs.) Information on the most well known products is provided
below:
The following support XA:
Product & Vendor FCS Known OS/Platform Ports
"TUXEDO System/T" 1986 UNIX SVR4 & SVR3: Amdahl, AT&T,
UNIX System Laboratories Bull, Compaq, Dell, Fujitsu, ICL,
190 River Road Motorola, Olivetti, Pyramid,Sequent,
Summit, NJ 07901 Sun, Toshiba, Unisys, NCR, Stratus
Other: IBM AIX, HP/UX, DEC Ultrix
"TOP END" 1992 UNIX SVR4: NCR
NCR Corporation
1334 S. Patterson Blvd.
Dayton, OH 45479
"ENCINA" 1992 IBM AIX, HP, Sun (SunOS and Solaris)
Transarc Corporation Other: OS/2, DOS, HP-UX, STRATUS
707 Grant Street (Depends on DCE)
Pittsburgh, PA 15219
"CICS/6000" 1993 AIX: IBM
IBM Corporation (Depends on DCE)
"CICS 9000" 1994 HP-UX
HP
The following do not currently support XA:
Product & Vendor FCS Known OS/Platform Ports
"VIS/TP" unknown unknown
VISystems, Inc.
11910 Greenville Avenue
Dallas, TX 75243
"UniKix" 1990 UNIX: ARIX, AT&T, NCR, Pyramid,
UniKix Sequent, Sun, Unisys
"MicroFocus 1993 SCO Unix, AIX
Transaction System"
Micro Focus
26 West Street
Newbury RG13 1JT
UK
There are also several third parties who are reselling the products listed
above.
In addition, Groupe Bull, Digital, Siemens-Nixdorf, and several other hardware
vendors are planning to redesign their proprietary TPMs to be XA-compliant and
suitable for use on UNIX systems.
Availability and Packaging
==========================
On what platforms is the XA Library available?
Oracle provides the XA interface with Oracle7 Server on all platforms that
support an XA-compliant TPM. Support for XA is included as part of the
Oracle7 Server distributed option and has no extra charge in and of itself.
Which version of XA does Oracle Server support?
Oracle7 Server supports the Common Application Environment (CAE) version of
XA, based on the specification published by X/Open in late 1991. It will
require that the TM also be at that level. This means Tuxedo /T version 4.2,
for example.
Oracle Server supports all required XA functions. There are some optional
features Oracle Server does not support, such as asynchronous operation.
None of those options affect application programming.
Page (2/4)
This file contains commonly asked questions about Oracle Server and UNIX
Transaction Processing Monitors (TPMs). The topics covered in this article are
o Oracle Server Working with UNIX TPMs
o TPM Application Architecture
The questions answered in part 2 provide additional detail to the information
provided in part 1.
Oracle Server Working with UNIX TP Monitors
===========================================
Do I need XA to use Oracle Server with TPMs? If I don't use it, what are
the consequences?
There are a number of real applications running today with Oracle Server and
TPMs but not using XA. To use a TPM with Oracle without using XA, the user
would write an "application server" program which could handle one or more
"services". For example, a server program might handle a service called
"debit_credit". The key requirement is that the entire transaction,
including the "commit work", must be executed within a single service. This
is the restriction which XA will remove, as we'll see later. Each
server process can serially handle requests on behalf of different clients.
Because a server process can handle many client processes, this can
reduce the total number of active processes on the server system,
thereby reducing resource requirements and possibly increasing overall
throughput.
When Oracle is used with a TPM in this mode, we call it an Oracle-managed
transaction since the transaction commit or rollback is done with a SQL
statement.
What is XA? How does XA help Oracle7 work with UNIX TPMs?
XA is an industry standard interface between a Transaction Manager and a
Resource Manager. A Resource Manager (RM) is an agent which
controls a shared, recoverable resource; such a resource can be
returned to a consistent state after a failure. For example, Oracle7 Server
is an RM and uses its redo log and undo segments to be able to do this.
A Transaction Manager (TM) manages a transaction including the
commitment protocol and, when necessary, the recovery after a failure.
Normally, Oracle Server acts as its own TM and manages its own commitment
and recovery. However, using a standards-based TM allows Oracle7 to
cooperate with other heterogeneous RMs in a single transaction.
The commonly used TPMs include a TM component for this purpose. In order to
use the TM capability of the TPM rather than Oracle7's own transaction
management, the application uses a transaction demarcation API (called TX)
provided by the TPM rather than the SQL transaction control statements (e.g.
"commit work"). For each TX call, the TM then instructs all RMs, by the
appropriate XA commands, to follow the two-phase commit protocol. We
call this a TPM-managed transaction.
The following picture shows these interfaces within a monolithic application
program model. This is the model most commonly described in the
DTP literature. We'll see later what the picture looks like when we add
Oracle7 and when we switch to a modularized client-server application
program model.
| |
| |
| Application Program (AP) |
| |
| |
| | | |
Resource Manager API | | | |
(e.g. SQL) -----|--|------------- | TX API
| | v | |
--------|------------- | |
| v | | v
---------------------- | | --------------------
| | | | | |
| Resource | | |<----->| Transaction |
| Managers | |--- | Manager |
| (RMs) | |<-------->| (TM) |
| |--- | |
| |<----------->| |
---------------------- XA --------------------
Interface
The XA interface is an interface between two system components, not
an application program interface; the application program does
not write XA calls nor need to know the details of this interface.
The TM cannot do transaction coordination without the assistance of
the RM; the XA interface is used to get that assistance.
How does the DTP Model support client-server?
The above picture was actually simplified to make it easier to explain
the role of XA. In a true distributed transaction architecture, there
are multiple applications, each with an Application Program, a Resource
Manager, and a Transaction Manager. The applications communicate by
using a Communication Resource Manager. The CRM is generally provided
as a component of the TPM. It includes the transaction information when
it sends messages between applications, so that both applications can
act of behalf of the same transaction. The following picture
illustrates this:
Client Application
| AP |
||| | |
SQL ||| | TX | CRM
||V V | API
-||-- ----- |
| |V | | | V
--|-- |<---| | -----
| V || | | | |
----- |<----| TM |<-->| CRM |
| || | |XA+ | |
| RMs |<-----| | -----
| | XA | | A
----- ----- | Server Application
| -----------------------------
| | AP |
| -----------------------------
| ||| | |
| SQL ||| | TX | CRM
| ||V V | API
| -||-- ----- |
| | |V | | | V
| --|-- |<---| | -----
| | V || | | | |
| ----- |<----| TM |<-->| CRM |
| | || | |XA+ | |
| | RMs |<-----| | -----
| | | XA | | A
| ----- ----- |
| |
| |
-------- |
/ |
/ |
/ |
Most TP Monitor products include both a TM and a CRM, and also provide
additional functions such as task scheduling and workload monitoring.
What is XA+? What does Oracle need to do to comply with it?
XA+ is an interface that lets the X/Open model actually be distributed
because it allows a communication resource manager to tell a TM on the
server that a message from a client just came in for a particular
transaction. Oracle is not currently planning to provide an X/Open
communication resource manager, so we don't have any plans right now
to do XA+. Version 2 of the DTP model paper from X/Open describes it.
The status of the current XA+ specification is "snapshot".
When would I choose an Oracle-managed transaction vs a TPM-managed
transaction?
Oracle Server is very efficient at managing its own transactions. If
the TPM manages the transaction, in general some additional overhead
will be incurred.
The two main reasons a customer might prefer to use a TPM-managed
transaction are as follows:
(1) He may need to update RMs from different vendors. Experience so far
has been that the most common case is wanting to update both Oracle and
a TP Monitor managed resource such as a transactional queuing service
in the same transaction (see Article 3).
(2) He may want to use the model of having several different services in
a transaction, even to the same database. For example, the
"debit_credit" service could be split into a "debit" service and a
"credit" service. This is a very attractive model, but this type of
modularity does exact a performance penalty (see Article 4).
Can I get a version of XA to run on Oracle Server version 6?
No, the XA functionality uses two underlying mechanisms in the Oracle
Server which are not available in version 6: two-phase commit and
session switching. The upi calls for these functions do not not exist
in version 6.
When would I use XA vs Oracle7 to coordinate all-Oracle distributed
transactions?
Generally speaking, Oracle Server should be used to coordinate all-Oracle
distributed transactions. The main reason for using XA to coordinate
transactions would be that you want to use the TP Monitor service-oriented
architecture. That is, you would like to construct an application built of
services and service requests in order to benefit from the modularity and
workload control such an environment provides.
TP Monitor Application Architecture
===================================
What might a TP Monitor application look like?
Most TPM applications will consist of two more more programs, where
there are front-end client programs which request services and back-end
server programs which provide services. In this case, the TPM supplies an
additional capability which is transactional communication. The client
describes the boundaries of the transaction, through the use of the TX API,
and the TPM relays that transaction information to each requested service.
The overall application structure generally looks like the following in the
client-server model. The "TP Monitor Services" box is not necessarily a
process. It could be one or more processes, or just libraries coordinating
through shared memory. Each client process and server process could be on
a different machine. Normally, the application server processes would be
connected to their Oracle Server processes using the IPC driver; the TPM
would be used to deliver messages between application client processes on
one machine and application server processes on another. However, the
application server processes could also be connected with the standard
Oracle SQL*Net to shadow processes on different machines. This might be
useful if one of the databases was on a machine which did not support TPMs.
|Application| |Application| |Application|
| Client 1 | | Client 2 | | Client 3 |
| | | | | |
\ TPM API | TPM API / TPM API
| |
| TP Monitor Services |
| |
| --------------------- |
| | Transaction Manager | |
---------------|---------------|---------------------
TPM API | | XA | XA | TPM API
| | inter- | inter- |
| | face | face |
| | | |
----------- | | -----------
|Application| | | |Application|
| Server 1 |--- ---| Server 2 |
| (Pro*C) | | | | (Pro*C) |
| SQL | SQL
| | | |
| Resource ----------- ----------- |
| Manager | | | | |
| | Oracle7 | | Oracle7 | |
| | Server | | Server | |
| | Process | | Process | |
| | | | | |
| ----------- ----------- |
| | | |
| ----------------------------------------------------- |
| | | |
| | SGA | |
| | | |
| ----------------------------------------------------- |
| |
Application client programs might be written in C and be linked with
TPM libraries. Alternatively, they could use a screen painter product.
Application server programs would be written in Pro*C or Pro*COBOL and
be linked with TPM libraries, the normal Oracle7 user-side libraries
and libxa.a. The Oracle7 Server process is the regular Oracle7 executable.
More complicated application architectures can also be constructed. Most of
the TPMs allow a server to become a client of another service, so you can
involve additional servers.
Could I use Oracle7's Multi Threaded Server as the SQL*Net connection in the
previous picture?
Yes, but that will not be needed in many cases. For example, both
application server processes in the previous picture could talk to a
single Oracle7 Server process through the Multi Threaded Server in the
previous picture. However, since the TPM architecture typically reduces
the number of server processes, the reduction in processes using Multi
Threaded Server may be less significant than in an architecture without
TPMs. If the application will use database links, however, then MTS will
be required.
How do I write an Oracle TP Monitor application?
The actual API used to talk to the TPM varies between vendors, so you need
to get the documentation from the vendor. However, all have a way to
indicate where a transaction begins and ends and a way to send a request
and receive a response from a client to a server. Some use an RPC model,
some use a pseudo-RPC model, and some use a send/receive model. The TX API
described earlier is a subset of the TPM API as defined by each of
the TPM providers.
The client program and server program might look something like the
following examples. We h (such as Tuxedo's
"tpacall
Reference Ducumment
---------------------hello,
the role is the same on all plattforms. the reports server takes requests for running reports, spawns an engine that executes the request. in addition to that, the server also provides scheduling services and security features for the reports environment.
regards,
the oracle reports team -
Nested Tables and Advanced Queues- Please Help.
How do i work with NestedTable type and Advanced Queue.
I have done the following
I have Oracle 8.1.7 enterprise edition.
create type myType as TABLE OF varchar(32);
create type myObject as OBJECT (
id int,
myt myType);
DECLARE
BEGIN
dbms_aqadm.create_queue_table(
queue_table => 'my_queue_table',
multiple_consumers => TRUE,
queue_payload_type => 'myObject',
compatible => '8.1.3'
END;
The Nested Table and Object are created successfully.
but the queue is not created.
I get the following message.
DECLARE
ERROR at line 1:
ORA-22913: must specify table name for nested table column or
attribute
ORA-06512: at "SYS.DBMS_AQADM_SYS", line 2012
ORA-06512: at "SYS.DBMS_AQADM", line 55
ORA-06512: at line 3
I know how to specify the nested table storage clause for
create table statement, but there is no provision for
it in the create_queue_table procedure.
Any help will be greately appriciated.
i have already created and tested aqs with simple data types,
also i have created simple tables with nested table type
elements.
but the combo of Nested tables and AQ is not working.
thanks in advance.Hi Francois. Thank you very much for your reply, but it seems that i still get errors. So let me tell what i have done.
As you suggested me: i have done a block based on a sub-query for the nested-table:
'select courses from department where name= :department.name'.
In the master block(department) i have the when-new-record-instance trigger:
Declare
LC$Req varchar2(256);
Begin
LC$Req := '(select ns.courses from table
( select courses from department where name = ''' || :DEPARTMENT.name || ''' ) ns )';
Go_block('block11');
Clear_Block ;
Set_Block_Property( 'block11', QUERY_DATA_SOURCE_NAME, LC$Req ) ;
Execute_query ;
End ;
Now the errors i receive, this time in the runtime mode are:
- FRM-41380: Cannot set the blocks query data source
-FRM-41003: This function cannot be performed here.
Since it seems that you know how to work with the nested table i would really appreaciate your help. I am new in the nested table and if you could give an ex with my tables it would be great.
Thank you in advance. -
Message Bridge between WLS 6.1 sp3 and MQSeries 5.2
Hi,
I'm really struggling with getting the Message Bridge working with Weblogic 6.1
sp3 and MQSeries 5.2. Currently I have both installed on the same Windows 2000
machine. First I'll pose some questions that I have, then I discuss the error
I'm getting. Here are my questions:
1. With the jms-xa-adp.rar there is a ra.xml and a weblogic-ra.xml. Within the
ra.xml deployment descriptor there are config-properties for ConnectionURL, InitialContextFactory,
ConnectionFactoryJNDI, and DestinationType. If my MQSeries Queue is the source
jms destination bridge and my weblogic queue is the target jms destination bridge,
what values do I set for the listed config-properties? I can't seem to find any
documentation on what these values should be. Am I missing something? Do these
values even have to be set?
2. When I go to install a Weblogic instance to a different physical machine what
has to be installed in terms of MQSeries? So I'll have MQSeries on physical machineA
and Weblogic on a different physical machineB. I want machineA to forward all
messages placed on a MQSeries Queue to forward them to machineB where the weblogic
Queue resides. Does machineB also have to contain an MQSeries installation?
Or can I just grab the necessary libraries and jar files and place them on the
Weblogic machineB so they can be included?
3. Is it correct that if I distribute Weblogic onto one physical server and MQSeries
onto a different physical server that I cannot use Exactly-once quality of service?
Other notes:
1. I have the following patches installed for Weblogic 6.1 sp3:
CR081404_610sp3.jar
CR081511_61sp3.jar
2. Here is the commands I used to create my ConnectionFactory and Queue within
MQSeries:
def xaqcf(MQTestConnectionFactory) qmanager(QM_jeff)
def q(MQTestQueue) qmanager(QM_jeff) queue(default)
Okay...here is my error:
<21-Aug-02 11:08:34 ADT AM> <Error> <MessagingBridge> <Error occurred in bridge
"Messaging Bridge" during transferring messages (java.lang.Exception: java.lang.
reflect.UndeclaredThrowableException: java.lang.reflect.InvocationTargetException:
javax.resource.ResourceException: Error creating consumer or receiving message
at weblogic.jms.adapter.JMSBaseConnection.throwResourceException(JMSBaseConnection.java:1086)
at weblogic.jms.adapter.JMSBaseConnection.receiveInternal(JMSBaseConnection.java:774)
at weblogic.jms.adapter.JMSBaseConnection.receiveCommon(JMSBaseConnection.java:656)
at weblogic.jms.adapter.JMSBaseConnection.receive(JMSBaseConnection.java:811)
at weblogic.jms.adapter.JMSConnectionHandle.receive(JMSConnectionHandle.java:111)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.connector.common.internal.ConnectionWrapper.invoke(ConnectionWrapper.java:60)
at $Proxy82.receive(Unknown Source)
at weblogic.jms.bridge.internal.MessagingBridge.processMessages(MessagingBridge.java:1215)
at weblogic.jms.bridge.internal.MessagingBridge.beginForwarding(MessagingBridge.java:854)
at weblogic.jms.bridge.internal.MessagingBridge.execute(MessagingBridge.
Has anyone see this error before? Here is part of my ra.xml file....I just put
these entries in to see what happens:
<config-property>
<config-property-name>ConnectionURL</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property value>file:/C:/Develop/app_servers/WebSphere/MQSeries</config-property-value>
</config-property>
<config-property>
<config-property-name>InitialContextFactory</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>com.sun.jndi.fscontext.RefFSContextFactory</config-property-value>
</config-property>
<config-property>
<config-property-name>ConnectionFactoryJNDI</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>MQTestConnectionFactory</config-property-value>
</config-property>
<config-property>
<config-property-name>DestinationJNDI</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>MQTestQueue</config-property-value>
</config-property>
<config-property>
<config-property-name>DestinationType</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value></config-property-value>
</config-property>
<config-property>
<config-property-name>AdapterType</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>XATransaction</config-property-value>
</config-property>
Here is a snip of my config.xml:
<MessagingBridge AsyncEnabled="false" DurabilityEnabled="false"
Name="Messaging Bridge" QualityOfService="Atmost-once"
SourceDestination="Source JMS Bridge Destination"
TargetDestination="Target JMS Bridge Destination" Targets="myserver"/>
<JMSBridgeDestination
AdapterJNDIName="eis.jms.WLSConnectionFactoryJNDIXA"
ConnectionFactoryJNDIName="MQTestConnectionFactory"
ConnectionURL="file:/C:/Develop/app_servers/WebSphere/MQSeries"
DestinationJNDIName="MQTestQueue" InitialContextFactory="com.sun.jndi.fscontext.RefFSContextFactory"
Name="Source JMS Bridge Destination"/>
<JMSBridgeDestination
AdapterJNDIName="eis.jms.WLSConnectionFactoryJNDIXA"
ConnectionFactoryJNDIName="imagictv.platform.ToolkitRequestCF"
ConnectionURL="t3://localhost:7001"
DestinationJNDIName="imagictv.platform.ToolkitRequestQueue"
InitialContextFactory="weblogic.jndi.WLInitialContextFactory" Name="Target
JMS Bridge Destination"/>
Any help would be greatly appreciated. Thank you in advance for your help.
Sincerely,
Jeff
I tried your suggestion and it worked!! The only thing is, it
makes the deployment of the resource adapter a little more
complicated. Now my customers are going to have to edit their
config.xml, instead of just dropping in the appropriate rar into
the applications directory. But one nice side affect of placing
the rar's in a different directory is it makes the Message
Bridge a little more stable. I was finding it to be very
unstable. One time I would startup my Application Server and
everything was fine, then I would shutdown. The next time I
started it up, I would get exceptions. I have yet to see that
behavior with this new configuration.
Thanks again for all of your help, it is greatly appreciated!!
Jeff
Dongbo Xiao <[email protected]> wrote:
>Looks like that somehow you have the adapter deployed
>multiple times, may not be intended. The cause is that
>everything in the application directory will be automatically
>deployed and all of them are added to the config.xml. During
>the next boot, those appear in the config.xml will be deployed and
>everything in the application directory too. As a result, the adapters
>are deployed twice. The complain about runtime mbean not found may
>mean the one that is overridden by the new one.
>
>The work around is not to put your adapters in the application
>directory, instead, put them in a different directory and point to
>the directory in your config.xml.
>
>Dongbo
>Jeff wrote:
>>
>> One more thing...
>> I noticed that the exception specified that it couldn't find
>> mydomain:Location=myserver,Name=jms-xa-
>> adp_Pool_1,ServerRuntime=myserver,Type=ConnectorConnectionPoolRun
>> time MBean, but what's interesting that if I run the following
>> java weblogic.Admin GET -type ConnectorConnectionPoolRuntime -
>> property ActiveConnectionsCurrentCount -url
>> http://localhost:7001 -username xxxx -password xxxx I get the
>> following output:
>>
>> {MBeanName="mydomain:Location=myserver,Name=jms-xa-
>> adp_Pool_3,ServerRuntime=myse
>> rver,Type=ConnectorConnectionPoolRuntime"{ActiveConnectionsCurren
>> tCount=0}}
>> {MBeanName="mydomain:Location=myserver,Name=jms-notran-
>> adp_Pool_2,ServerRuntime=
>> myserver,Type=ConnectorConnectionPoolRuntime"{ActiveConnectionsCu
>> rrentCount=0}}
>>
>> So from that...it looks like the MBean is there. Any ideas why it
>is not being
>> found?
>>
>> Thanks,
>>
>> Jeff
>>
>> "Jeff" <[email protected]> wrote:
>> >
>> >
>> >
>> >Thank you very much!!
>> >
>> >I tried your suggestions and created a general Queue Connection Factory
>> >within
>> >MQSeries. Then I setup my MQSeries JMS Bridge Destination to use
>the
>> >jms-notrans-adp.rar
>> >resource adapter. With this configuration, I can send messages to
>MQSeries
>> >and
>> >they get forwarded to Weblogic.
>> >
>> >But, if I create a XAQueueConnectionFactory within MQSeries I cannot
>> >get the bridge
>> >working at all. I realize that MQSeries has a bug with Transactions
>> >and remote
>> >servers, but I have MQSeries and Weblogic running on the same machine.
>> > I thought
>> >I could setup an XAConnectionFactory in MQSeries, set the MQSeries
>JMS
>> >Bridge
>> >Destination to use the jms-xa-adp.rar and specify Exactly-once QOS
>and
>> >it should
>> >work? I tried it and it didn't work. ( see attachment for weblogic.log
>> >showing
>> >exception ).
>> >
>> >Here is my config.xml:
>> > <MessagingBridge AsyncEnabled="false" DurabilityEnabled="false"
>> > Name="Request Messaging Bridge" QOSDegradationAllowed="true"
>> > QualityOfService="Exactly-once"
>> > SourceDestination="Source JMS Bridge Destination"
>> > TargetDestination="Target JMS Bridge Destination" Targets="myserver"/>
>> > <JMSBridgeDestination
>> > ConnectionFactoryJNDIName="imagictv.platform.ToolkitRequestCF"
>> > ConnectionURL="t3://localhost:7001"
>> > DestinationJNDIName="imagictv.platform.ToolkitRequestQueue"
>Name="Target
>> >JMS Bridge Destination"/>
>> > <JMSBridgeDestination
>> > AdapterJNDIName="eis.jms.WLSConnectionFactoryJNDIXA"
>> > ConnectionFactoryJNDIName="MQTestConnectionFactory"
>> > ConnectionURL="file:/C:/Develop/app_servers/WebSphere/MQSeries"
>> > DestinationJNDIName="MQTestQueue"
>> > InitialContextFactory="com.sun.jndi.fscontext.RefFSContextFactory"
>> >Name="Source
>> >JMS Bridge Destination"/>
>> >
>> >Again, thank you very much for your response. It helped me a great
>deal.
>> > Any
>> >thoughts on the above problem please foward them along.
>> >
>> >Oh...and to answer the question posed to me, yes the CR081511_61sp3.jar
>> >file is
>> >dated 8/13/2002
>> >
>> >
>> >Sincerely,
>> >
>> >Jeff
>> >
>> >Dongbo Xiao <[email protected]> wrote:
>> >>Please see my comments inline.
>> >>
>> >>
>> >>Jeff wrote:
>> >>>
>> >>> Hi,
>> >>> I'm really struggling with getting the Message Bridge working with
>> >>Weblogic 6.1
>> >>> sp3 and MQSeries 5.2. Currently I have both installed on the same
>> >>Windows 2000
>> >>> machine. First I'll pose some questions that I have, then I discuss
>> >>the error
>> >>> I'm getting. Here are my questions:
>> >>>
>> >>> 1. With the jms-xa-adp.rar there is a ra.xml and a weblogic-ra.xml.
>> >> Within the
>> >>> ra.xml deployment descriptor there are config-properties for ConnectionURL,
>> >>InitialContextFactory,
>> >>> ConnectionFactoryJNDI, and DestinationType. If my MQSeries Queue
>> >is
>> >>the source
>> >>> jms destination bridge and my weblogic queue is the target jms
>destination
>> >>bridge,
>> >>> what values do I set for the listed config-properties? I can't
>seem
>> >>to find any
>> >>> documentation on what these values should be. Am I missing something?
>> >> Do these
>> >>> values even have to be set?
>> >>>
>> >>
>> >>You DON'T have to do anything to the adapter deployment descriptor
>> >>files.
>> >>The values given there for the listed config-properties are just
>default
>> >>values.
>> >>The values configured in JMSBridgeDestination instances are the values
>> >>used to
>> >>override the default values in the dd file.
>> >>
>> >>> 2. When I go to install a Weblogic instance to a different physical
>> >>machine what
>> >>> has to be installed in terms of MQSeries? So I'll have MQSeries
>on
>> >>physical machineA
>> >>> and Weblogic on a different physical machineB. I want machineA
>to
>> >>forward all
>> >>> messages placed on a MQSeries Queue to forward them to machineB
>where
>> >>the weblogic
>> >>> Queue resides. Does machineB also have to contain an MQSeries
>installation?
>> >>> Or can I just grab the necessary libraries and jar files and place
>> >>them on the
>> >>> Weblogic machineB so they can be included?
>> >>>
>> >>
>> >>You don't have to install MQSeries on the machine that the WebLogic
>> >>server is running. You need the necessary libraries and jar files
>> >>though.
>> >>
>> >>> 3. Is it correct that if I distribute Weblogic onto one physical
>server
>> >>and MQSeries
>> >>> onto a different physical server that I cannot use Exactly-once
>quality
>> >>of service?
>> >>>
>> >>
>> >>That is correct and it is a MQSeries transaction limitation.
>> >>
>> >>> Other notes:
>> >>> 1. I have the following patches installed for Weblogic 6.1 sp3:
>> >>> CR081404_610sp3.jar
>> >>> CR081511_61sp3.jar
>> >>>
>> >>
>> >>What version of CR081511_61sp3.jar you have? You need the one dated
>> >on
>> >>8/13/2002.
>> >>
>> >>> 2. Here is the commands I used to create my ConnectionFactory
>and
>> >>Queue within
>> >>> MQSeries:
>> >>> def xaqcf(MQTestConnectionFactory) qmanager(QM_jeff)
>> >>> def q(MQTestQueue) qmanager(QM_jeff) queue(default)
>> >>>
>> >>
>> >>The only possible error I see here is that you create a xaqcf while
>> >your
>> >>bridge
>> >>is configured to have "Atmost-once" QOS. The bridge adapter will
>create
>> >>XASession
>> >>if the connection factory is xa because it knows nothing about QOS
>of
>> >>the bridge.
>> >>As I said, there is a limitation in MQSeries transactions, which
>prevent
>> >>the
>> >>transaction to happen between remote servers. Although the bridge
>does
>> >>not
>> >>start the the transaction in your case, but MQSeries xa connection
>> >>factory may
>> >>throw error when it detects the other side is remote. Having said
>that,
>> >>I am not
>> >>completely sure this is the problem caused the bridge to fail. I
>suggest
>> >>you use
>> >>a non-xa connection factory on the MQSeries side and see if the problem
>> >>goes away.
>> >>
>> >>> Okay...here is my error:
>> >>>
>> >>> <21-Aug-02 11:08:34 ADT AM> <Error> <MessagingBridge> <Error occurred
>> >>in bridge
>> >>> "Messaging Bridge" during transferring messages (java.lang.Exception:
>> >>java.lang.
>> >>> reflect.UndeclaredThrowableException: java.lang.reflect.InvocationTargetException:
>> >>> javax.resource.ResourceException: Error creating consumer or receiving
>> >>message
>> >>> at weblogic.jms.adapter.JMSBaseConnection.throwResourceException(JMSBaseConnection.java:1086)
>> >>> at weblogic.jms.adapter.JMSBaseConnection.receiveInternal(JMSBaseConnection.java:774)
>> >>> at weblogic.jms.adapter.JMSBaseConnection.receiveCommon(JMSBaseConnection.java:656)
>> >>> at weblogic.jms.adapter.JMSBaseConnection.receive(JMSBaseConnection.java:811)
>> >>> at weblogic.jms.adapter.JMSConnectionHandle.receive(JMSConnectionHandle.java:111)
>> >>> at java.lang.reflect.Method.invoke(Native Method)
>> >>> at weblogic.connector.common.internal.ConnectionWrapper.invoke(ConnectionWrapper.java:60)
>> >>> at $Proxy82.receive(Unknown Source)
>> >>> at weblogic.jms.bridge.internal.MessagingBridge.processMessages(MessagingBridge.java:1215)
>> >>> at weblogic.jms.bridge.internal.MessagingBridge.beginForwarding(MessagingBridge.java:854)
>> >>> at weblogic.jms.bridge.internal.MessagingBridge.execute(MessagingBridge.
>> >>>
>> >>
>> >>The latest patch CR081511_61sp3.jar (dated on 8/13/2002) will expose
>> >>more error
>> >>information.
>> >>
>> >>> Has anyone see this error before? Here is part of my ra.xml file....I
>> >>just put
>> >>> these entries in to see what happens:
>> >>>
>> >>> <config-property>
>> >>> <config-property-name>ConnectionURL</config-property-name>
>> >>> <config-property-type>java.lang.String</config-property-type>
>> >>> <config-property value>file:/C:/Develop/app_servers/WebSphere/MQSeries</config-property-value>
>> >>> </config-property>
>> >>>
>> >>> <config-property>
>> >>> <config-property-name>InitialContextFactory</config-property-name>
>> >>> <config-property-type>java.lang.String</config-property-type>
>> >>> <config-property-value>com.sun.jndi.fscontext.RefFSContextFactory</config-property-value>
>> >>> </config-property>
>> >>>
>> >>> <config-property>
>> >>> <config-property-name>ConnectionFactoryJNDI</config-property-name>
>> >>> <config-property-type>java.lang.String</config-property-type>
>> >>> <config-property-value>MQTestConnectionFactory</config-property-value>
>> >>> </config-property>
>> >>>
>> >>> <config-property>
>> >>> <config-property-name>DestinationJNDI</config-property-name>
>> >>> <config-property-type>java.lang.String</config-property-type>
>> >>> <config-property-value>MQTestQueue</config-property-value>
>> >>> </config-property>
>> >>>
>> >>> <config-property>
>> >>> <config-property-name>DestinationType</config-property-name>
>> >>> <config-property-type>java.lang.String</config-property-type>
>> >>> <config-property-value></config-property-value>
>> >>> </config-property>
>> >>>
>> >>> <config-property>
>> >>> <config-property-name>AdapterType</config-property-name>
>> >>> <config-property-type>java.lang.String</config-property-type>
>> >>> <config-property-value>XATransaction</config-property-value>
>> >>> </config-property>
>> >>>
>> >>
>> >>As I said earlier, you are not supposed to change the adapter dd
>file.
>> >>
>> >>
>> >>> Here is a snip of my config.xml:
>> >>>
>> >>> <MessagingBridge AsyncEnabled="false" DurabilityEnabled="false"
>> >>> Name="Messaging Bridge" QualityOfService="Atmost-once"
>> >>> SourceDestination="Source JMS Bridge Destination"
>> >>> TargetDestination="Target JMS Bridge Destination" Targets="myserver"/>
>> >>> <JMSBridgeDestination
>> >>> AdapterJNDIName="eis.jms.WLSConnectionFactoryJNDIXA"
>> >>> ConnectionFactoryJNDIName="MQTestConnectionFactory"
>> >>> ConnectionURL="file:/C:/Develop/app_servers/WebSphere/MQSeries"
>> >>> DestinationJNDIName="MQTestQueue" InitialContextFactory="com.sun.jndi.fscontext.RefFSContextFactory"
>> >>> Name="Source JMS Bridge Destination"/>
>> >>>
>> >>> <JMSBridgeDestination
>> >>> AdapterJNDIName="eis.jms.WLSConnectionFactoryJNDIXA"
>> >>> ConnectionFactoryJNDIName="imagictv.platform.ToolkitRequestCF"
>> >>> ConnectionURL="t3://localhost:7001"
>> >>> DestinationJNDIName="imagictv.platform.ToolkitRequestQueue"
>> >>> InitialContextFactory="weblogic.jndi.WLInitialContextFactory"
>Name="Target
>> >>> JMS Bridge Destination"/>
>> >>>
>> >>
>> >>Your configuration of the bridge and bridge destinations look fine.
>> >
>> >>The last thing is that you have to put MQSeries stuff in your CLASSPATH
>> >>and PATH for starting the WebLogic server that the bridge is running
>> >>on.
>> >>
>> >>You can also turn on debug for more information.
>> >>-Dweblogic.Debug.DebugMessagingBridgeStartup=true
>> >>-Dweblogic.Debug.DebugMessagingBridgeRuntime=true
>> >>
>> >>
>> >>Thanks,
>> >>Dongbo
>> >
-
Revised product name: "Oracle GlassFish Enterprise Message Queue"
Hello,
the release notes for OpenMQ 4.5 build 16 include a note about a revised product name, "Oracle GlassFish Enterprise Message Queue". Is this planned to be the future product name for the commercial product (the product formerly known as Java System Message Queue), or is this meant to be the name for both versions?
Many thanks in advance,
Michael Justin
Edited by: 801285 on 10.10.2010 01:49Hi all,
I have finally solved the problem, it seems somehow on my windows home premium I can't run the install script (on H:\ ) from the command line. I manually ran the batch script by double clicking on it, it ran fine and I was finally able to install ORE (server + supported + client) on my laptop. Now the connection -- followed through the manual, created user and granted all the roles. Now that I want to test the connection, I open R console and below are the input and output error message though it seems I can connect to the database:
R>
R> library(ORE)
Loading required package: OREbase
Attaching package: ‘OREbase’
The following object(s) are masked from ‘package:base’:
cbind, data.frame, eval, interaction, order, paste, pmax, pmin, rbind, table
Loading required package: OREstats
Loading required package: MASS
Loading required package: OREgraphics
Loading required package: OREeda
Loading required package: OREdm
Loading required package: lattice
Loading required package: OREpredict
Loading required package: ORExml
R>
R>
R>
R> ore.connect(user = 'scott', sid = 'sinha', host = 'win7', password = 'tiger', port = 1521, all = T)
Error in .oci.GetQuery(conn, statement, data = data, prefetch = prefetch, :
ORA-06520: PL/SQL: Error loading external library
ORA-06522: Unable to load DLL
ORA-06512: at "RQSYS.RQEVALIMPL", line 17
ORA-06512: at "RQSYS.RQEVALIMPL", line 14
ORA-06512: at line 4
R>
R>
R> ore.is.connected()
[1] TRUE
R> I get the exact same error when I try to use even the ORE user "rquser". Any suggestion how to resolve this error?
Thanks,
Sourabh -
WLS Cluster with Message Driven Beans and MQSeries on more than one Host
With the Examples of http://developer.bea.com/jmsproviders.jsp and http://developer.bea.com/jmsmdb.jsp
a MDB can be
configured to work with MQSeries with one WLS Server. This works only, if a Queuemanager
is started at the same Host that runs the WLS Server too.
And the QueueConnectionFactory (QCF) is configured to TRANSPORT(BIND).
In my configuration should be two WLS Servers and one JMS Queue (MQS) with the
Queuemanager.
A Message Driven Bean is deployed on both WLS Servers wich should get the Messages
of this Queue.
If one of the two WLS Servers fails the other WLS Server with the corresponding
MDB should get the Messages of the
MQSeries Queue.
If the QCF is configured to TRANSPORT(Client) the Message Driven Bean can't start
and the following Exception is thrown:
<Jul 18, 2001 3:52:49 PM CEST> <Error> <J2EE> <Error deploying EJB Component :
mdb_deployed
weblogic.ejb20.EJBDeploymentException: Error deploying Message-Driven EJB:; nested
exception is:
javax.jms.JMSException: MQJMS2005: failed to create MQQueueManager for
'btsun1a:TEST'
javax.jms.JMSException: MQJMS2005: failed to create MQQueueManager for 'btsun1a:TEST'
at com.ibm.mq.jms.services.ConfigEnvironment.newException(ConfigEnvironment.java:434)
I'm wondering, because their is a MQQueueManager on btsun1a; all Servers throws
the same Exception when the MDB is deployed.
The configuration of JMSadmin on both Hosts is the following:
dis qcf(myQCF2)
HOSTNAME(btsun1a)
CCSID(819)
TRANSPORT(CLIENT)
PORT(1414)
TEMPMODEL(SYSTEM.DEFAULT.MODEL.QUEUE)
QMANAGER(TEST)
CHANNEL(JAVA.CHANNEL)
VERSION(1)
dis q(myQueue)
CCSID(819)
PERSISTENCE(APP)
TARGCLIENT(JMS)
QUEUE(MYQUEUE)
EXPIRY(APP)
QMANAGER(TEST)
ENCODING(NATIVE)
VERSION(1)
PRIORITY(APP)
I think only TRANSPORT(CLIENT) can be used when i don't wan't to install a Queue
and a QueueManager on each WLS Server.
Does anybody know a problem of WLS 6.0 SP2 to cope with TRANSPORT(CLIENT)?
With the Examples of http://developer.bea.com/jmsproviders.jsp and http://developer.bea.com/jmsmdb.jsp
a MDB can be
configured to work with MQSeries with one WLS Server. This works only, if a Queuemanager
is started at the same Host that runs the WLS Server too.
And the QueueConnectionFactory (QCF) is configured to TRANSPORT(BIND).
In my configuration should be two WLS Servers and one JMS Queue (MQS) with the
Queuemanager.
A Message Driven Bean is deployed on both WLS Servers wich should get the Messages
of this Queue.
If one of the two WLS Servers fails the other WLS Server with the corresponding
MDB should get the Messages of the
MQSeries Queue.
If the QCF is configured to TRANSPORT(Client) the Message Driven Bean can't start
and the following Exception is thrown:
<Jul 18, 2001 3:52:49 PM CEST> <Error> <J2EE> <Error deploying EJB Component :
mdb_deployed
weblogic.ejb20.EJBDeploymentException: Error deploying Message-Driven EJB:; nested
exception is:
javax.jms.JMSException: MQJMS2005: failed to create MQQueueManager for
'btsun1a:TEST'
javax.jms.JMSException: MQJMS2005: failed to create MQQueueManager for 'btsun1a:TEST'
at com.ibm.mq.jms.services.ConfigEnvironment.newException(ConfigEnvironment.java:434)
I'm wondering, because their is a MQQueueManager on btsun1a; all Servers throws
the same Exception when the MDB is deployed.
The configuration of JMSadmin on both Hosts is the following:
dis qcf(myQCF2)
HOSTNAME(btsun1a)
CCSID(819)
TRANSPORT(CLIENT)
PORT(1414)
TEMPMODEL(SYSTEM.DEFAULT.MODEL.QUEUE)
QMANAGER(TEST)
CHANNEL(JAVA.CHANNEL)
VERSION(1)
dis q(myQueue)
CCSID(819)
PERSISTENCE(APP)
TARGCLIENT(JMS)
QUEUE(MYQUEUE)
EXPIRY(APP)
QMANAGER(TEST)
ENCODING(NATIVE)
VERSION(1)
PRIORITY(APP)
I think only TRANSPORT(CLIENT) can be used when i don't wan't to install a Queue
and a QueueManager on each WLS Server.
Does anybody know a problem of WLS 6.0 SP2 to cope with TRANSPORT(CLIENT)?
-
MDB on MQSeries queue undeployment
I just started testing MDBs listening on MQSeries queues. WLS 6.1 and MQ 5.1. I followed
the instructions in the BEA foreign JMS providers white paper, deployed the MDBs,
queued messages and things seemed to work. But shutting down the server revealed
that the undeployment of each MDB was slow. Slower than SSBs or MDBs listening on
BEA queues. Would appreciate any suggestions about what it could be. Thanks.I just started testing MDBs listening on MQSeries queues. WLS 6.1 and MQ 5.1. I followed
the instructions in the BEA foreign JMS providers white paper, deployed the MDBs,
queued messages and things seemed to work. But shutting down the server revealed
that the undeployment of each MDB was slow. Slower than SSBs or MDBs listening on
BEA queues. Would appreciate any suggestions about what it could be. Thanks. -
Using MessagingBridge for WLS6.1-SP3 and MQSeries 5.2
I am trying to use the MessagingBridge with MQSeries 5.2.
I have an MDB to consume messages from MQSeries queue. I created
the MesageingBridge with source (being the MQS queue) and target
(being WLS queue) but the bridge never channeled the messages from
MQSeries source queue to WLS destination queue.
Here are segments from config.xml:
<JMSServer Name="JMSServer" Targets="myserver">
<JMSQueue JNDIName="MQ_TARGET_QUEUE" Name="MQS Target Queue" StoreEnabled="default"/>
</JMSServer>
<JMSBridgeDestination
Classpath="c:\MQSeries\ma88\samples\base;c:\MQSeries\ma88\lib\com.ibm.mq.jar;c:\MQSeries\ma88\lib\com.ibm.mqjms.jar;c:\MQSeries\ma88\lib\jms.jar;c:\MQSeries\ma88\lib\jndi.jar;c:\MQSeries\ma88\lib\fscontext.jar;c:\MQSeries\ma88\lib\providerutil.jar;c:\MQSeries\ma88\lib\connector.jar"
ConnectionFactoryJNDIName="MQSeriesQueueManager"
ConnectionURL="t3://127.0.0.1:7001"
DestinationJNDIName="NotifMsgQueue" Name="MQSSourceDestination"/>
<JMSBridgeDestination
ConnectionFactoryJNDIName="WLSMQS_Connection_Factory"
ConnectionURL="t3://127.0.0.1:7001"
DestinationJNDIName="MQ_TARGET_QUEUE" Name="WLSTargetDestination"/>
<MessagingBridge AsyncEnabled="true" DurabilityEnabled="true"
Name="MQSeries Messaging Bridge" QOSDegradationAllowed="false"
QualityOfService="Duplicate-okay"
SourceDestination="MQS Source Destination" Started="true"
TargetDestination="WLSTargetDestination" Targets="myserver"/>
<StartupClass
Arguments="QManager=QM_de8u5p,QMJNDIName=MQSeriesQueueManager,QManagerHost=127.0.0.1,
QManagerPort=1414,NotificationsQueue=AppNotifQueue,NQJNDIName=NotifMsgQueue"
ClassName="com.wbiex.MQSeriesStartup" FailureIsFatal="false"
Name="MQSeriesStartup" Targets="myserver"/>
Note: The MDB was able to access and consume messages off the MQSeries NotifMsgQueue
queue
without the bridge .
Thank you very much for your help.
First of all, CR081414_61sp3.jar is not supposed to be put in
the CLASSPATH. It contains the adapter files you need to
run the bridge. You don't need it anyway because CR081511_61sp3.jar
contains the newer version of the adapter files. You need to put
CR081414_61sp3.jar to your WLS CLASSPATH, and also extract the a
adapter files (*.rar) and put them in the directory where your
config.xml gets the adapters for deployment.
Did you put all necessary MWSeries stuff in the WLS CLASSPATH
and PATH. I am sure you have done something there to make
your startup class work. Just make sure you have all of them.
Them are listed in "Using Foreign JMS Providers with WebLogic Server".
By the way, what is the error you got? Did you look at the server
log?
You can also turn on bridge debugging.
-Dweblogic.Debug.DebugMessagingBridgeStartup=true
-Dweblogic.Debug.DebugMessagignBridgeRuntime=true
Debugging information will show up in the server log by default.
Dongbo
Jim Allen wrote:
>
> Thanks Dongbo,
> I got both patches CR081511_61sp3.jar and CR081404_61sp3.jar
> and added them to WLS CLASSPATH.
> The connectionURLs for both source and target destinations are
> the same because I am using WLS JNDI which is located in same
> server. I have startup class that creates MQSeries connection
> factory and a queue and binds them to WLS JNDI tree.
> I also removed the MQSereis jars from AdapterClassPath but
> still the Bridge is not working.
>
> Please help !! thanks very much again
>
> Dongbo Xiao <[email protected]> wrote:
> >Something in your configuration looks wrong. The connectionURL
> >you have for both the MQSeries bridge destination and WLS bridge
> >destination are the same, which cannot be right. Another thing
> >is that it is not recommended to put MQSeries stuff in AdapterClassPath.
> >You have to have MQSeries stuff in the CLASSPATH and PATH for
> >the WLS server that the bridge is running on.
> >
> >Take a look at the "Using Foreign JMS Providers with WebLogic Server
> >"
> >Tom recommended to you.
> >
> >Also you need to get the latest patches for 6.1SP3.
> >
> >Hope this helps.
> >Dongbo
> >
> >
> >Jim Allen wrote:
> >>
> >> I am trying to use the MessagingBridge with MQSeries 5.2.
> >> I have an MDB to consume messages from MQSeries queue. I created
> >> the MesageingBridge with source (being the MQS queue) and target
> >> (being WLS queue) but the bridge never channeled the messages from
> >> MQSeries source queue to WLS destination queue.
> >> Here are segments from config.xml:
> >>
> >> <JMSServer Name="JMSServer" Targets="myserver">
> >> <JMSQueue JNDIName="MQ_TARGET_QUEUE" Name="MQS Target Queue"
> >StoreEnabled="default"/>
> >> </JMSServer>
> >> <JMSBridgeDestination
> >> Classpath="c:\MQSeries\ma88\samples\base;c:\MQSeries\ma88\lib\com.ibm.mq.jar;c:\MQSeries\ma88\lib\com.ibm.mqjms.jar;c:\MQSeries\ma88\lib\jms.jar;c:\MQSeries\ma88\lib\jndi.jar;c:\MQSeries\ma88\lib\fscontext.jar;c:\MQSeries\ma88\lib\providerutil.jar;c:\MQSeries\ma88\lib\connector.jar"
> >> ConnectionFactoryJNDIName="MQSeriesQueueManager"
> >> ConnectionURL="t3://127.0.0.1:7001"
> >> DestinationJNDIName="NotifMsgQueue" Name="MQSSourceDestination"/>
> >> <JMSBridgeDestination
> >> ConnectionFactoryJNDIName="WLSMQS_Connection_Factory"
> >> ConnectionURL="t3://127.0.0.1:7001"
> >> DestinationJNDIName="MQ_TARGET_QUEUE" Name="WLSTargetDestination"/>
> >> <MessagingBridge AsyncEnabled="true" DurabilityEnabled="true"
> >> Name="MQSeries Messaging Bridge" QOSDegradationAllowed="false"
> >> QualityOfService="Duplicate-okay"
> >> SourceDestination="MQS Source Destination" Started="true"
> >> TargetDestination="WLSTargetDestination" Targets="myserver"/>
> >> <StartupClass
> >> Arguments="QManager=QM_de8u5p,QMJNDIName=MQSeriesQueueManager,QManagerHost=127.0.0.1,
> >> QManagerPort=1414,NotificationsQueue=AppNotifQueue,NQJNDIName=NotifMsgQueue"
> >> ClassName="com.wbiex.MQSeriesStartup" FailureIsFatal="false"
> >> Name="MQSeriesStartup" Targets="myserver"/>
> >>
> >> Note: The MDB was able to access and consume messages off the MQSeries
> >NotifMsgQueue
> >> queue
> >> without the bridge .
> >>
> >> Thank you very much for your help.
-
Throttling MDB performance running against MQSeries queue
I have an unusual requirement for an application. We have a non-transactional MQSeries queue that is bound as a foreign JMS destination in client mode (thanks to the folks on the forum who helped me configure that!).
The problem is that the cluster that we are running our application on has limited capacity and I need to make sure that the MDB that will be listening to the queue does not surpass a certain TPS limit (say, 1 TPS). This article explains how to throttle performance using a separate execute thread -- http://e-docs.bea.com/wls/docs81/perform/AppTuning.html#1105201
However, this requires you to set the MDB's "dispatch-policy' attribute to the lower priority queue in ejb-jar.xml. However, the documentation on this attribute -- http://edocs.beasys.com/wls/docs81/ejb/DDreference-ejb-jar.html#1113605 -- indicates that this attribute is only honoured if the source queue is transactional in nature.
What to do? A transactional queue is a hard sell to our infrastructure folks. Can I use the extended transactional client and have this work?
FYI - using the max-beans-in-free-pool does not do a sufficiently good job of limiting performance.
Any other ideas?another possibility might be the following scenario:
create a local jms-destination, maybe with a jdbc-store.
then use the weblogic bridge to transfer messages into the local jms-queue.
at this point you can configure flow-control for the connection factory
to limit transferred messages.
the problem in this case is, that unprocessed messages have to be stored
on the application server or in the database.
but maybe this can help you.
--Klaas
gbrail schrieb:
> As the doc describes, your MDB's "onMessage" method is invoked by a thread created by MQ. That means we have no control over it, or how fast it runs. I don't know of any "throttling" features in MQ either that would help.
>
> The only (ugly!) suggestion I can think of is that you should set "max-beans-in-free-pool" to 1 and periodically "sleep" in your onMessage method so that you don't get messages too fast!
>
> (And even if you were able to use a separate execute queue, or a transactional queue, you still could potentially get messages more than once per second, so you might still need to sleep anyway.)
Maybe you are looking for
-
Problem with the original iphone.
i have the original iphone for the past year and half. i've dropped it many times, but it didn't harm the iphone. the other day, i dropped it, and it died. it didn't respond to nothing. until i plugged it to the charger, and to the computer. than whe
-
BI Content Update rules not available for 0IC_C03 cube
Hi We have recently did technical upgrade to our DEV box and made a system copy for sand box. I am trying to install the BI content for 0IC_C03 infocube. I cant see update rules for this data flow. I could see Transformations and can also see info so
-
Click ComboBox in JTable to times before editing ?
Hi, I have a JComboBox in a JTable. Now I want to open the ComboBox when you click the cell to times. There is a method in DefaultCellEditor called setClickCountToStart(int). But how can I get the reference to the DefaultCellEditor from my JTable. Th
-
Payment transaction to account code
Basically what I need my app to do is if click a button and an alert comes up saying buy now. When you click buy now I need it to send a payment to my account. What code would go in the button click buy now button?
-
How to crop a QuickTime movie to delete black top and bottom areas?
How to crop a QuickTime movie? I mean, a ".mov" movie that shows a black area on top and bottom, which I want to delete. I have tried with iMovie 8.0.5, yet its "Window - Cropping..." to fit, crop and Ken burns does not allow to select the area that