Populating Database records to WLS JMS queue

Hi All,
Please suggest which is the performance effective approach in populating WLS JMS queue from the database tables?
As I have to produce millions of records from the DB into the JMS queue and assuming using DB adapter and retreiving bulky data is a long running process.
Please suggest whether I can write a pl/sql stored proc and populate the WLS JMS queue? or is there any other most optimistic approach to transfer data from db into WLS JMS queue?
Thanks,
Sudha

Thanks Eric for the quick reply. Also, going through the other forum:
Re: Publish message from Oracle database PL/SQL to a remote WLS JMS queue
Just want to know which one would be performance effective one in the below whether using Java stored Procedures or populating AQ and WLS Messagin bridge?
1) Java Stored Procedure can use JMS APIs to publish messages to WLS JMS destinations. JMS standard API jar file and WLS JMS client jars that you use need to be loaded into database.
2) From PL/SQL, you can publish message to AQ using AQ PL/SQL APIs, then configure WLS Messaging Bridge to forward messages from AQ to WLS JMS.

Similar Messages

  • Using a  foreign WLS JMS queue (no bridge)

              Hi,
              We have a configuration from which we communicate from WLS 7 to a foreign MQ via
              JMS. This works well and we have loaded the foreign MQ jms objects into WLS JNDI
              using a statup class (as the whitepaper available describes) and we look them
              up successfully.
              However, we now have a siutation where we briefly need to switch our application
              to point to a WLS JMS queue on another remote WLS server. Is there an easy way
              to load foreign (maybe remote would be a better word in this case) WLS JMS QCF's
              and destinations into my local WLS JNDI so that I can treat them the same way
              as my MQ objects?
              I can't seem to find any information on how to do this as all information seems
              to point towards the messaging bridge (we can't use this as the bridge changes
              the message JMSMessageID and screws our correlation mechanism up).
              I know we could just look the foreign objects up by using the JNDI environment
              of the remote WLS machine but this would mean changing code and this I can't to
              do (as all our code uses the local default WLS JNDI).
              Any ideas would be gratefully received.
              Cheers,
              Jay.
              

    WLS JMS and MQ JMS handle their JNDI objects a little differently, so I can
              see how this can be confusing. An MQ JMS "ConnectionFactory" or
              "Destination" object is like a little configuration file that tells you
              where the queue manager or queue is, so you can serialize it and look it up
              later and use it to find the queue manager.
              A WLS JMS ConnectionFactory or Destination object is a reference to an
              object on a running server. So, you connect to the server and look them up,
              and then you can use it for messaging. You don't have to store these objects
              in a separate place, like MQ makes you do. But it means that the WLS JNDI
              objects have to be looked up from a running server, and if the server
              restarts, you have to look them up again.
              Doing what you're asking is definitely trickier in 7.0. One thing you could
              do is, again using a servlet or an EJB, connect to the remote JMS cluster
              and look up the objects at the time you want to make the switch. (If the
              remote cluster is down, you'll have to retry from time to time.) If the
              remote cluster is down, you won't be able to look up those objects, but then
              again, if it were down you wouldn't be able to send messages there anyway.
              Using 8.1 would be less complicated, but this method should also work.
              greg
              "Jay Green" <[email protected]> wrote in message
              news:[email protected]...
              >
              > Thanks Greg. When I was searching the BEA website I read about the
              facility in
              > 8.1. Unfortunatley, as you point out, it doesn't help me much with WLS
              7.0.
              >
              > My first thought was to copy my exisiting MQ startup class but I couldn't
              work
              > out how to do this for the remote WLS jms objects as the standard jms
              classes
              > (for QCF etc) don't have methods that allow me to define the foreign WLS
              jms
              > host IP address etc. I checked the WLS 7 API and the jms package didn't
              seem
              > to offer anything to help me do this (as IBM do for MQ). Any ideas?
              >
              > Apologies if I'm being a bit slow here!
              >
              > "Greg Brail" <[email protected]> wrote:
              > >WLS 8.1 includes a feature called "Foreign JMS Providers" that lets you
              > >configure (using the console or config.xml) a link between a JMS JNDI
              > >object
              > >in your WLS servers' tree, and a JNDI object in another provider -- which
              > >could be WLS JMS, or a foreign vendor.
              > >
              > >Using this feature, your application could just look up the local JNDI
              > >objects in the local WLS tree, and then the server in turn performs the
              > >lookup from the actual JNDI provider using the parameters you put in
              > >the
              > >console (or config.xml). So, when you make a change in the console, new
              > >JNDI
              > >lookups will go to the new place.
              > >
              > >Unfortunately, this doesn't help you with 7.0. You could always
              > >programmitically update the local JNDI tree the way you're doing in your
              > >startup class, but instead do it from a servlet or an EJB.
              > >
              > > greg
              > >
              > >"Jay Green" <[email protected]> wrote in message
              > >news:[email protected]...
              > >>
              > >> Hi,
              > >>
              > >> We have a configuration from which we communicate from WLS 7 to a
              foreign
              > >MQ via
              > >> JMS. This works well and we have loaded the foreign MQ jms objects
              > >into
              > >WLS JNDI
              > >> using a statup class (as the whitepaper available describes) and we
              > >look
              > >them
              > >> up successfully.
              > >>
              > >> However, we now have a siutation where we briefly need to switch our
              > >application
              > >> to point to a WLS JMS queue on another remote WLS server. Is there
              > >an easy
              > >way
              > >> to load foreign (maybe remote would be a better word in this case)
              > >WLS JMS
              > >QCF's
              > >> and destinations into my local WLS JNDI so that I can treat them the
              > >same
              > >way
              > >> as my MQ objects?
              > >> I can't seem to find any information on how to do this as all
              information
              > >seems
              > >> to point towards the messaging bridge (we can't use this as the bridge
              > >changes
              > >> the message JMSMessageID and screws our correlation mechanism up).
              > >>
              > >> I know we could just look the foreign objects up by using the JNDI
              > >environment
              > >> of the remote WLS machine but this would mean changing code and this
              > >I
              > >can't to
              > >> do (as all our code uses the local default WLS JNDI).
              > >>
              > >> Any ideas would be gratefully received.
              > >>
              > >> Cheers,
              > >>
              > >> Jay.
              > >
              > >
              >
              

  • I want store JMS queue in oracle database..

    Hi all,
    I want store JMS queue in oracle database..
    How can i configure my jboss 3.0.1
    Thanks,
    Thilsen

    Oracle provides this functionality with Advanced Queues
    http://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a96587/qintro.htm
    Although the API is JMS-compliant, the administration can be quite burdensome.

  • Populating a JMS queue

    Dear All
    I need to test my JMS scenario. In real time the JMS queue will be populated by an external system.
    For testing purpose how can I populate the queue?
    Is there anyway other than doing a file to JMS scenario to populate the same.
    Thanks
    Sourabh

    Hi,
    There is no other alternate to invoke the queues.
    As you said, use File adapter to test the secnario.
    Regards,
    Sarvesh

  • Unable to Connect to JMS Queue in Websphere from WLS 10.3,3

    Hi Everyone,
    I'm trying to connect to JMS Queue in WebSphere 7.1 from WLS 10.3.3, I'm trying to using Foreign server connection to connect to the Websphere JMS Queue. Its normal Queue not MQ Queue. I have configured the Foreign server but i know for the fact that some weblogic jar files are need on the WLS home. Does anyone let me know what is needed so that i can place them on the WLS home and restart the server.
    Also i would like to consume and produce messages to the websphere queue.
    Thanks for the help..
    Regards
    Sabir

    Hi Everyone
    Has anyone tried connecting to the websphere jms queue from WLS 10.3.3
    Let me know if that can be done
    regards
    Sabir

  • Need to publish message from database to a JMS Queue using Java

    I need to publish messages to a Websphere JMS Queue whenever any changes happen on a particular column of a table in oracle 11g. For that I have written a trigger on that particular table which in turn will invoke one java procedure. I have written the java procedure using a standalone java class and uploaded the java class as a schema object. While executing the procedure it is throwing error as it is not able to instantiate some of the java classes. I don't know how to provide the reference of different jar files while executing the java class. Can anyone help me on this.

    Welcome to the forum!
    >
    I have written the java procedure using a standalone java class and uploaded the java class as a schema object. While executing the procedure it is throwing error as it is not able to instantiate some of the java classes. I don't know how to provide the reference of different jar files while executing the java class.
    >
    Clarify your statement. First you say 'standalone java class' but then you talk about instantiating java 'classes' and referencing 'different jar files'. If you are executing your Java class inside Oracle then any Java classes that your java class is referencing also have to be loaded into Oracle or it won't be able to reference or execute them.
    How do you plan to ' publish messages to a Websphere JMS Queue '? Where is this queue you are talking about?
    Why are you using a Java procedure and class instead of PL/SQL?
    What is your 4 digit Oracle version (result of SELECT * FROM V$VERSION)?

  • MDBs in 9.1 continue to consume JMS queues even after being deleted

    <b>We have an MDB application that reads a batch message off of a JMS queue, archives it in a database, parses the batch message into individual messages and writes them onto other JMS queues to be consumed by another application. Everything was running fine in Weblogic 8.1.5. However, due to problems with XA drivers and the MSDTC(predictable SQL server crashes), we decided to upgrade to Weblogic 9.1 to take advantage of the LLR option.</b>
              <b>First, we had an issue where our MDBs were causing the following exception:</b>
              <i>####<May 26, 2006 7:42:12 PM EDT> <Error> <JMX> <ist-clft2> <wltest1> <ExecuteThread: '1' for queue: 'default'> <<WLS Kernel>> <> <> <1148686932991> <BEA-149500> <An exception occurred while registering the MBean null.
              java.lang.IllegalArgumentException: Registered more than one instance with the same objectName : com.bea:ServerRuntime=wltest1,MessageDrivenEJBRuntime=RhapsodyMDB_DMBModule!JMSServer4@DMB_BEAN_QUEUE,Name=RhapsodyMDB_DMBModule!JMSServer4@DMB_BEAN_QUEUE,ApplicationRuntime=DataBrokerEAR1_2,Type=EJBPoolRuntime,EJBComponentRuntime=DataBrokerEJB new:[email protected] existing weblogic.ejb.container.monitoring.EJBPoolRuntimeMBeanImpl@7db003
                   at weblogic.management.jmx.ObjectNameManagerBase.registerObject(ObjectNameManagerBase.java:146)
                   at weblogic.management.mbeanservers.internal.WLSObjectNameManager.lookupObjectName(WLSObjectNameManager.java:133)
                   at weblogic.management.jmx.modelmbean.WLSModelMBeanFactory.registerWLSModelMBean(WLSModelMBeanFactory.java:86)
                   at weblogic.management.mbeanservers.internal.RuntimeMBeanAgent$1.registered(RuntimeMBeanAgent.java:104)
                   at weblogic.management.provider.internal.RegistrationManagerImpl.invokeRegistrationHandlers(RegistrationManagerImpl.java:205)
                   at weblogic.management.provider.internal.RegistrationManagerImpl.register(RegistrationManagerImpl.java:85)
                   at weblogic.management.runtime.RuntimeMBeanDelegate.register(RuntimeMBeanDelegate.java:320)
                   at weblogic.management.runtime.RuntimeMBeanDelegate.<init>(RuntimeMBeanDelegate.java:257)
                   at weblogic.management.runtime.RuntimeMBeanDelegate.<init>(RuntimeMBeanDelegate.java:222)
                   at weblogic.ejb.container.monitoring.EJBPoolRuntimeMBeanImpl.<init>(EJBPoolRuntimeMBeanImpl.java:32)
                   at weblogic.ejb.container.monitoring.MessageDrivenEJBRuntimeMBeanImpl.<init>(MessageDrivenEJBRuntimeMBeanImpl.java:49)
                   at weblogic.ejb.container.manager.MessageDrivenManager.initialize(MessageDrivenManager.java:503)
                   at weblogic.ejb.container.manager.MessageDrivenManager.setup(MessageDrivenManager.java:120)
                   at weblogic.ejb.container.manager.MessageDrivenManager.setup(MessageDrivenManager.java:146)
                   at weblogic.ejb.container.deployer.MessageDrivenBeanInfoImpl.createMDManager(MessageDrivenBeanInfoImpl.java:1481)
                   at weblogic.ejb.container.deployer.MessageDrivenBeanInfoImpl.createDDMDManagers(MessageDrivenBeanInfoImpl.java:1378)
                   at weblogic.ejb.container.deployer.MessageDrivenBeanInfoImpl.onDDMembershipChange(MessageDrivenBeanInfoImpl.java:1285)
                   at weblogic.jms.common.CDS$DD2Listener.listChange(CDS.java:454)
                   at weblogic.jms.common.CDSServer$DDHandlerChangeListener.statusChangeNotification(CDSServer.java:167)
                   at weblogic.jms.dd.DDHandler.callListener(DDHandler.java:318)
                   at weblogic.jms.dd.DDHandler.callListeners(DDHandler.java:344)
                   at weblogic.jms.dd.DDHandler.run(DDHandler.java:282)
                   at weblogic.jms.common.SerialScheduler.run(SerialScheduler.java:37)
                   at weblogic.work.ExecuteRequestAdapter.execute(ExecuteRequestAdapter.java:21)
                   at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:145)
                   at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:117)
              >
              ####<May 26, 2006 7:42:13 PM EDT> <Info> <EJB> <ist-clft2> <wltest1> <ExecuteThread: '1' for queue: 'default'> <<WLS Kernel>> <> <> <1148686933069> <BEA-010060> <The Message-Driven EJB: RhapsodyMDB has connected/reconnected to the JMS destination: weblogic.jms.DMB_BEAN_QUEUE.></i>
              <b>
              Generally this happend after there were cluster communication issues. Multi-cast messages were lost and our MDB reconnects to the JMS queues as indicated by the below log:</b>
              <i>####<May 30, 2006 5:19:06 PM EDT> <Info> <EJB> <AMTC-RAP-STG3> <RAPBEA1S> <[ACTIVE] ExecuteThread: '54' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <> <1149023946040> <BEA-010060> <The Message-Driven EJB: DataBrokerMDB has connected/reconnected to the JMS destination: weblogic.jms.PHINMS_DMB_QUEUE.>
              ####<May 30, 2006 5:19:10 PM EDT> <Info> <Cluster> <AMTC-RAP-STG3> <RAPBEA1S> <[ACTIVE] ExecuteThread: '22' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1149023950228> <BEA-000112> <Removing RAPBEA3S jvmid:720875810499147484S:cmts-rap-bea3:[7005,-1,-1,-1,-1,-1,-1]:DMBstg:RAPBEA3S from cluster view due to timeout.>
              ####<May 30, 2006 5:19:11 PM EDT> <Info> <Cluster> <AMTC-RAP-STG3> <RAPBEA1S> <[STANDBY] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1149023951009> <BEA-000115> <Lost 2 multicast message(s).>
              ####<May 30, 2006 5:19:11 PM EDT> <Info> <Cluster> <AMTC-RAP-STG3> <RAPBEA1S> <[ACTIVE] ExecuteThread: '22' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1149023951040> <BEA-000111> <Adding RAPBEA3S with ID 720875810499147484S:cmts-rap-bea3:[7005,-1,-1,-1,-1,-1,-1]:DMBstg:RAPBEA3S to cluster: DMBstg_cluster view.></i>
              <b>
              This would cause the queues to eventually have hundreds of consumers and cause the server to fail.
              Basically, it seems as though the MDBs that are supposed to stop continue and attempt to process, while new threads connect to the JMS queues.
              I tried undeploying our application and deleted it from the configuration. However there were consumers still on the respective queues and when I sent messages, I got an error indicating a "Class Not Found exception" due to the fact that the EJB was undeployed and deleted from the configuration, however the MDB component was not and continued to listen for messages. In 8.1.5, as soon as the application was undeployed, there were zero consumers on the JMS queues.
              I have read the posts about a soon to be released fix that would have the MDBs connect only to the queues locally and not go out the the cluster. Would this fix my issue?
              Is there something in the deployment descriptor to configure that will cause it to disconnect and now spawn so many consumers to the JMS queues?
              Why is it that the number of MDB consumers on the JMS queues stayed static in 8.1.5, but they are erratic in 9.1 even after I set our 9.1 server to use the 8.1.5 execute queue policy. Help would be much appreciated.</b>

    I recommend contacting customer support. There's a known problem with MDBs listening to distributed destinations that are local to the same cluster as the MDB, you're problem may be related (the clue is that the stack trace contains jms.dd.DDHandler.callListeners()). The problem is that the MDB connects to all physical queues in a distributed destination rather than just the local queue.
              Tom

  • Use ODI with JMS Queue

    I'm new user in ODI and also JMS. I successfuly use odi to integrate data from two oracle database applications. I'm trying to integrate applications using JMS Queues (or Topics) and I failed to create odi "data server" for this technology. Can someone help me to do this or give me a sample to follow it?
    thanks.

    Hi there,
    You can actually create 2 different types of connections to a JMS Queue or Topic. Flat or XML. The simplest to start with is flat. This will basically cause ODI to view the contents of the queue as simple flat file data. Note, this is a bit advanced use of ODI, so I would perhaps go through connecting to an RDBMS first before walking through this. It will make more sense.
    To set this up, you will need to:
    1. Copy the necessary client files from OC4J, place them in the <ODI_HOME>/oracledi/drivers directory and restart ODI. The files you need are:
    - <OC4J_HOME>/j2ee/home/oc4jclient.jar
    - <OC4J_HOME>/j2ee/home/lib/javax77.jar
    - <OC4J_HOME>/j2ee/home/lib/jta.jar
    Sop copy those files and restart ODI.
    2. Create a physical connection (Topology Application/Physical Architecture/Technologies -> right click JMS Queues and select "Insert Data Server")
    3. In the Description tab, simpl fill in the Name field.
    4. In the JNDI tab , fille in the following:
    - JNDI Authentication - Simple
    - JNDI User: application user - this is the equivalent of javax.naming.Context.SECURITY_PRINCIPAL
    - Password: application password - this is the equivalent of javax.naming.Context.SECURITY_CREDENTIALS
    - JNDI Driver: This is the equivalent of javax.naming.Context.INITIAL_CONTEXT_FACTORY, so enter com.evermind.server.rmi.RMIInitialContextFactory
    - JNDI Url: This is the equivalent of javax.naming.Context.PROVIDER_URL, so put in ormi://<hostname>[:<port>]/<application>. For instance, with the basic OC4J install, I put in ormi://localhost/default.
    - JNDI Resource: This is the JNDI lookup key for your Queue Connection factory. For example, for the default OC4J installation, I put in jms/QueueConnectionFactory
    5. Click the Test button and click OK in the window that pops up. You should get a message box saying that your connection was successful.
    6. Click Apply or OK and a new window will pop up. In this window, go to the Context tab and click the Add button and in the row that appears, click on the right most field (it says <Undefined> and replace <undefined> with a logical name for your connection. Hit Enter and click OK)
    7. You've now connected to the Queue, to create the Queue object in ODI, go to the Designer window, go to models and create a new model.
    8. Set the name to whatever makes sense to you. Set the technology to JMS Queue and the Logical Schema to the logical connection name you created in step 6. In the Reverse tab, select Global from the Context dropdown menu.
    9. Click OK. You now have a container for any Queues that are in this connection.
    10. To point to the queue, right click your new model and select Insert Datastore.
    11. In the new window, name your datastore whatever you'd like. Set the resource name to the JNDI resource name for the queue (for example, with the default OC4J configuration, you could set this to jms/demoQueue.
    12. In the Files tab, set the File Format to fixed, and set the record separator to Windows or Unix (it doesn't really matter which one you pick)
    13. In the Columns tab, click the add button to add a column. Name the column something like DATA and set is to a String of size 1000.
    14. Click OK. You'll now be able to right click this new datastore and view data, granted in a very simple format. You can create a more complex flat file structure if you' like but this gives you a quick and easy to view the contents of the queue.
    I'd suggest trying to connect this way, post if you were successful and I will then post how to connect to an XML structured queue (it's a little teenie bit different)

  • Synchronization of JMS queue with backup instance

    Hello,
              I have the following problem: there are two machines in active - passive
              configuration. Both those machines serve as JMS servers in two environments.
              What I want to do is to keep a backup of JMS queue from the productive
              environment in the backup one, so in case of a disaster in the productive
              environment the backup one will stand up and will start processing the waiting
              messages. In order to do this I need to keep an up-to-date (or almous up to
              date, I will propably have to accept that some of the messages will be lost)
              copy of JMS queue.
              Have you ever worked on such a problem? Maybe you can suggest some solution?
              Best regards,
              Dawid Duda

    Hi,
              Thanks for informations, but it is not exactly what I need.
              In my case I need to keep a backup of the queue in a separate location, to be
              able to start processing the data in case if the first one was i.e. burned.
              Therefore I was thinking about something like duplicating the database store
              under the queue (using database tools) in on-line mode to be able to start
              another instance in case of problems with the first one. Do you think such
              aproach would work?
              Best regards,
              dave
              Tom Barnes wrote:
              > Hi,
              >
              > Search the newsgroup and docs for keyword "migration". Automated "whole server" migration is available in 9.0, and automated "service" level migration is slated to be available in 9.5. (8.1 provides manual/scriptable service-level migration.) Also, depending on your use case, it might be that distributed destinations, bridges, server-side-store-and-forward (9.0+), or client side store-and-forward (9.2+) would fit your needs.
              >
              > http://edocs.bea.com/wls/docs81/jms/intro.html#jms_features
              >
              > http://edocs.bea.com/wls/docs92/jms_admin/intro.html#jms_features
              >
              > http://dev2dev.bea.com/pub/a/2004/05/ClusteredJMS.html (service-level migration paper)
              >
              > Tom

  • JMS/Queue cluster question

              Hi
              I have some very basic cluster questions on JMS Queues. Lets say Q1>I have 3 WLS
              in cluster. I create the queue in only WLS#1 - then all the other WLS (#2 and #3)
              should have a stub in their JNDI tree for the Queue which points to the Queue in
              #1 - right? Basically what I am trying to acheive is to have the queue in one server
              and all the other servers have a pointer to it - I beleive this is possible in WLS
              cluster - right??
              Q2> Is there any way a client to the queue running on a WLS can tell whether the
              Queue handle its using is local (ie in the same server) or remote. Is the API createQueue(./queuename)
              going to help here??
              Q3>Is there any way to create a Queue dynamically - I guess JMX is the answer -right?
              But I will take this question a bit further - lets say Q1 answer is yes. In this
              case if server #1 crashes - then #2 and #3 have no Queues. So if they try to create
              a replica of the Queue (as on server#1) - pointing to the same filestore - can they
              do it?? - I want only one of them to succed in creating the Queue and also the Queue
              should have all the data of the #1 Queue (1 to 1 replica).
              All I want is the concept of primary and secondary queue in a cluster. Go on using
              the primary queue - but if it fails use the 2ndry queue. Kind of HttpSession replication
              concept in clusters. My cluster purpose is more for failover rather than loadbalancing.
              TIA
              Anamitra
              

              Anamitra wrote:
              > Hi Tom
              > 7.0 is definitely an option for me. So lets take the scenarion on case of JMS cluster
              > and 7.0.
              >
              > I do not understand what u mean by HA framework?
              An HA framework is a third party product that can be used to automatically restart a failed server
              (perhaps on a new machine), and that will guarantee that the same server isn't started in two
              different places (that would be bad). There are few of these HA products, "Veritas" is one of
              them. Note that if you are using JMS file stores or transactions, both of which depend on the disk,
              you must make sure that the files are available on the new machine. One approach to this is to use
              what is known as a "dual-ported" disk.
              > If I am using a cluster of 3 WLS
              > 7.0 servers - as u have said I can create a distrubuted Queue with a fwd delay attribute
              > set to 0 if I have the consumer only in one server say server #1.
              > But still if the server #1 goes down u say that the Queues in server #2 and server
              > #3 will not have access to the messages which were stuck in the server #1 Queue when
              > it went down -right?
              Right, but is there a point in forwarding the messages to your consumer's destination if your
              application is down?
              If your application can tolerate it, you may wish to consider allowing multiple instances of it (one
              per physical destination). That way if something goes down, only those messages are out-of-business
              until the application comes back up...
              >
              >
              > Why cant the other servers see them - they all point to the same store right??
              > thanks
              > Anamitra
              >
              Again, multiple JMS servers can not share a store. Nor can multiple stores share a file. That will
              cause corruption. Multiple stores CAN share a database, but can't use the same tables in the
              database.
              Tom
              >
              > Tom Barnes <[email protected]> wrote:
              > >
              > >
              > >Anamitra wrote:
              > >
              > >> Hi
              > >> I have some very basic cluster questions on JMS Queues. Lets say Q1>I
              > >have 3 WLS
              > >> in cluster. I create the queue in only WLS#1 - then all the other WLS
              > >(#2 and #3)
              > >> should have a stub in their JNDI tree for the Queue which points to the
              > >Queue in
              > >> #1 - right?
              > >
              > >Its not a stub. But essentially right.
              > >
              > >> Basically what I am trying to acheive is to have the queue in one server
              > >> and all the other servers have a pointer to it - I beleive this is possible
              > >in WLS
              > >> cluster - right??
              > >
              > >Certainly.
              > >
              > >>
              > >> Q2> Is there any way a client to the queue running on a WLS can tell whether
              > >the
              > >> Queue handle its using is local (ie in the same server) or remote. Is
              > >the API createQueue(./queuename)
              > >> going to help here??
              > >
              > >That would do it. This returns the queue on the CF side of the established
              > >Connection.
              > >
              > >>
              > >> Q3>Is there any way to create a Queue dynamically - I guess JMX is the
              > >answer -right?
              > >> But I will take this question a bit further - lets say Q1 answer is yes.
              > >In this
              > >> case if server #1 crashes - then #2 and #3 have no Queues. So if they
              > >try to create
              > >> a replica of the Queue (as on server#1) - pointing to the same filestore
              > >- can they
              > >> do it??
              > >> - I want only one of them to succed in creating the Queue and also the
              > >Queue
              > >> should have all the data of the #1 Queue (1 to 1 replica).
              > >
              > >No. Not possible. Corruption city.
              > >Only one server may safely access a store at a time.
              > >If you have an HA framework that can ensure this atomicity fine, or are
              > >willing
              > >to ensure this manually then fine.
              > >
              > >>
              > >>
              > >> All I want is the concept of primary and secondary queue in a cluster.
              > >Go on using
              > >> the primary queue - but if it fails use the 2ndry queue. Kind of HttpSession
              > >replication
              > >> concept in clusters. My cluster purpose is more for failover rather than
              > >loadbalancing.
              > >
              > >If you use 7.0 you could use a distributed destination, with a high weight
              > >on the destination
              > >you want used most. Optionally, 7.0 will automatically forward messages
              > >from distr. dest
              > >members that have no consumers to those that do.
              > >
              > >In 6.1 you can emulate a distributed destination this way (from an upcoming
              > >white-paper):
              > >Approximating Distributed Queues in 6.1
              > >
              > >If you wish to distribute the destination across several servers in a cluster,
              > >use the distributed
              > >destination features built into WL 7.0. If 7.0 is not an option, you can
              > >still approximate a simple
              > >distributed destination when running JMS servers in a &#8220;single-tier&#8221;
              > configuration.
              > > Single-tier indicates
              > >that there is a local JMS server on each server that a connection factory
              > >is targeted at. Here is a
              > >typical scenario, where producers randomly pick which server and consequently
              > >which part of the
              > >distributed destination to produce to, while consumers in the form of MDBs
              > >are pinned to a particular
              > >destination and are replicated homogenously to all destinations:
              > >
              > >· Create JMS servers on multiple servers in the cluster. The servers will
              > >collectively host the
              > >distributed queue &#8220;A&#8221;. Remember, the JMS servers (and WL servers) must
              > >be named differently.
              > >
              > >· Configure a queue on each JMS server. These become the physical destinations
              > >that collectively become
              > >the distributed destination. Each destination should have the same name
              > >"A".
              > >
              > >· Configure each queue to have the same JNDI name &#8220;JNDI_A&#8221;, and also
              > take
              > >care to set the destination&#8217;s
              > >&#8220;JNDINameReplicated&#8221; parameter to false. The &#8220;JNDINameReplicated&#8221;
              > parameter
              > >is available in 7.0, 6.1SP3
              > >or later, or 6.1SP2 with patch CR061106.
              > >
              > >· Create a connection factory, and target it at all servers that have a
              > >JMS server with &#8220;A&#8221;.
              > >
              > >· Target the same MDB pool at each server that has a JMS server with destination
              > >&#8220;A&#8221;, configure its
              > >destination to be &#8220;JNDI_A&#8221;. Do not specify a connection factory URL
              > when
              > >configuring the MDB, as it can
              > >use the server&#8217;s default JNDI context that already contains the destination.
              > >
              > >· Producers look up the connection factory, create a connection, then a
              > >session as usual. Then producers
              > >look up the destination by calling javax.jms.QueueSession.createQueue(String).
              > > The parameter to
              > >createQueue requires a special syntax, the syntax is &#8220;./<queue name>&#8221;,
              > so
              > >&#8220;./A&#8221; works in this example.
              > >This will return a physical destination of the distributed destination that
              > >is local to the producer&#8217;s
              > >connection. This syntax is available on 7.0, 6.1SP3 or later, and 6.1SP2
              > >with patch CR072612.
              > >
              > >This design pattern allows for high availability, as if one server goes
              > >down, the distributed destination
              > >is still available and only the messages on that one server become unavailable.
              > > It also allows for high
              > >scalability as speedup is directly proportional to the number of servers
              > >on which the distributed
              > >destination is deployed.
              > >
              > >
              > >
              > >>
              > >> TIA
              > >> Anamitra
              > >
              > >
              > ><!doctype html public "-//w3c//dtd html 4.0 transitional//en">
              > ><html>
              > >Anamitra wrote:
              > ><blockquote TYPE=CITE>Hi
              > ><br>I have some very basic cluster questions on JMS Queues. Lets say Q1>I
              > >have 3 WLS
              > ><br>in cluster. I create the queue in only WLS#1 - then all the other WLS
              > >(#2 and #3)
              > ><br>should have a stub in their JNDI tree for the Queue which points to
              > >the Queue in
              > ><br>#1 - right?</blockquote>
              > >Its not a stub. But essentially right.
              > ><blockquote TYPE=CITE>Basically what I am trying to acheive is to have
              > >the queue in one server
              > ><br>and all the other servers have a pointer to it - I beleive this is
              > >possible in WLS
              > ><br>cluster - right??</blockquote>
              > >Certainly.
              > ><blockquote TYPE=CITE>
              > ><br>Q2> Is there any way a client to the queue running on a WLS can tell
              > >whether the
              > ><br>Queue handle its using is local (ie in the same server) or remote.
              > >Is the API createQueue(./queuename)
              > ><br>going to help here??</blockquote>
              > >That would do it. This returns the queue on the
              > >CF side of the established Connection.
              > ><blockquote TYPE=CITE>
              > ><br>Q3>Is there any way to create a Queue dynamically - I guess JMX is
              > >the answer -right?
              > ><br>But I will take this question a bit further - lets say Q1 answer is
              > >yes. In this
              > ><br>case if server #1 crashes - then #2 and #3 have no Queues. So if they
              > >try to create
              > ><br>a replica of the Queue (as on server#1) - pointing to the same filestore
              > >- can they
              > ><br>do it?? <br>
              > >- I want only one of them to succed in creating the Queue and also the
              > >Queue
              > ><br>should have all the data of the #1 Queue (1 to 1 replica).</blockquote>
              > >No. Not possible. Corruption city.
              > ><br>Only one server may safely access a store at a time.
              > ><br>If you have an HA framework that can ensure this atomicity fine, or
              > >are willing
              > ><br>to ensure this manually then fine.
              > ><blockquote TYPE=CITE>
              > ><p>All I want is the concept of primary and secondary queue in a cluster.
              > >Go on using
              > ><br>the primary queue - but if it fails use the 2ndry queue. Kind of HttpSession
              > >replication
              > ><br>concept in clusters. My cluster purpose is more for failover rather
              > >than loadbalancing.</blockquote>
              > >If you use 7.0 you could use a distributed destination, with a high weight
              > >on the destination
              > ><br>you want used most. Optionally, 7.0 will automatically
              > >forward messages from distr. dest
              > ><br>members that have no consumers to those that do.
              > ><p><i>In 6.1 you can emulate a distributed destination this way (from an
              > >upcoming white-paper):</i>
              > ><br><i>Approximating Distributed Queues in 6.1</i><i></i>
              > ><p><i>If you wish to distribute the destination across several servers
              > >in a cluster, use the distributed destination features built into WL 7.0.
              > >If 7.0 is not an option, you can still approximate a simple distributed
              > >destination when running JMS servers in a &#8220;single-tier&#8221; configuration.
              > >Single-tier indicates that there is a local JMS server on each server that
              > >a connection factory is targeted at. Here is a typical scenario,
              > >where producers randomly pick which server and consequently which part
              > >of the distributed destination to produce to, while consumers in the form
              > >of MDBs are pinned to a particular destination and are replicated homogenously
              > >to all destinations:</i><i></i>
              > ><p><i>· Create JMS servers on multiple servers in the cluster.
              > >The servers will collectively host the distributed queue &#8220;A&#8221;. Remember,
              > >the JMS servers (and WL servers) must be named differently.</i><i></i>
              > ><p><i>· Configure a queue on each JMS server. These become
              > >the physical destinations that collectively become the distributed destination.
              > >Each destination should have the same name "A".</i><i></i>
              > ><p><i>· Configure each queue to have the same JNDI name &#8220;JNDI_A&#8221;,
              > >and also take care to set the destination&#8217;s &#8220;JNDINameReplicated&#8221;
              > parameter
              > >to false. The &#8220;JNDINameReplicated&#8221; parameter is available in
              > >7.0, 6.1SP3 or later, or 6.1SP2 with patch CR061106.</i><i></i>
              > ><p><i>· Create a connection factory, and target it at all servers
              > >that have a JMS server with &#8220;A&#8221;.</i><i></i>
              > ><p><i>· Target the same MDB pool at each server that has a JMS server
              > >with destination &#8220;A&#8221;, configure its destination to be &#8220;JNDI_A&#8221;.
              > >Do not specify a connection factory URL when configuring the MDB, as it
              > >can use the server&#8217;s default JNDI context that already contains the destination.</i><i></i>
              > ><p><i>· Producers look up the connection factory, create a connection,
              > >then a session as usual. Then producers look up the destination by
              > >calling javax.jms.QueueSession.createQueue(String). The parameter
              > >to createQueue requires a special syntax, the syntax is &#8220;./<queue name>&#8221;,
              > >so &#8220;./A&#8221; works in this example. This will return a physical
              > >destination of the distributed destination that is local to the producer&#8217;s
              > >connection. This syntax is available on 7.0, 6.1SP3 or later,
              > >and 6.1SP2 with patch CR072612.</i><i></i>
              > ><p><i>This design pattern allows for high availability, as if one server
              > >goes down, the distributed destination is still available and only the
              > >messages on that one server become unavailable. It also allows
              > >for high scalability as speedup is directly proportional to the number
              > >of servers on which the distributed destination is deployed.</i>
              > ><br><i></i>
              > ><br><i></i>
              > ><blockquote TYPE=CITE>
              > ><br>TIA
              > ><br>Anamitra</blockquote>
              > ></html>
              > >
              > >
              

  • BAM plans stacking up when JMS queue input source is blocked

    I have a BAM installation that receives data from a JMS queue through Enterprise Message Source connections, using Enterprise Link plans to manipulate the data and insert/update it into data objects. I also use BAM alerts to trigger the plans to run every 20 minutes to check for data to pull from the queues.
    The data is coming in from several batch processes that insert records to an external Oracle table, that uses triggers to push the data into the JMS queues. Some of these batch processes are currently written poorly so that they run for long periods of time and tie up the Oracle table.
    The BAM plans are running every 20 minutes, as expected. However, if one of these batch processes is running and it ties up the source table, it also ties up the queue table. The BAM alerts continue to kick off the plans every 20 minutes. But, if the resources are being blocked, the Enterprise Message Source doesn't appear to be able to connect with the JMS queue table, and the plan hangs up - continuing to "run" while waiting for the connection. If the batch jobs run for some length of time, the next iteration of the plans is kicked off, queuing up behind the still-running previous iteration. Then 20 minutes later, the next execution of the plan kicks off and also hangs. And so on until all the database connections are being tied up.
    Other than process improvements to the batch jobs to prevent/minimize locking of the source table (which is being done), are there any settings that would allow the BAM alert-based execution of the plans to "time out" if a connection cannot be established in a matter of minutes, or a way to prevent the same plan from initiating if a copy of that plan is already executing? I would like to prevent having the executions of the plans "queue up" and cause even more database contention.

    the script for the triger where missing some parameters this resolve the insert problems.
    create or replace trigger employee AFTER INSERT OR Update ON employee
    FOR each row
    declare
    xml_complete varchar2(1000);
    v_enqueue_options dbms_aq.enqueue_options_t;
    v_message_properties dbms_aq.message_properties_t;
    v_msgid raw(16);
    temp sys.aq$_jms_text_message;
    v_recipients dbms_aq.aq$_recipient_list_t;
    Begin
    temp:=sys.aq$_jms_text_message.construct;
    v_recipients(1) := sys.aq$_agent('bamclient',null,0);
    *# v_recipient is case sensitive, this is the name of the external user who should pick up this AQ*
    message from the bus. (should match on BAM side)
    v_message_properties.recipient_list := v_recipients;
    xml_complete :=
    '<?xml version="1.0"?><row>' ||
    '<EMPNO>' || :new.EMPNO || '</EMPNO>' ||
    '<ENAME>' || :new.ENAME || '</ENAME>' ||
    '<JOB>' || :new.JOB || '</JOB>' ||
    '<MGR>' || :new.MGR || '</MGR>' ||
    '<HIREDATE>' || :new.HIREDATE || '</HIREDATE>' ||
    '<SAL>' || :new.SAL || '</SAL>' ||
    '<COMM>' || :new.COMM || '</COMM>' ||
    Tech Note: Oracle BAM: Integration with Oracle AQ / Database
    TechNote_BAM_AQ_Configuration.doc
    Page 4 of 9
    Nov 6, 06 (version 10.1.3)
    Document version (5)
    Oracle confidential, All rights reserved
    '<DEPTNO>' || :new.DEPTNO || '</DEPTNO>' ||
    '</row>' ;
    temp.set_text(xml_complete);
    dbms_aq.enqueue(queue_name => 'bam_ttq',
    enqueue_options => v_enqueue_options,
    message_properties => v_message_properties,
    payload => temp,
    msgid => v_msgid );
    commit;
    end ;

  • 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,
    Satnani

    Hi 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

  • Dequeue from JMS Queue 10 at a time and process it.

    Hi,
    I have created a JMS queue in weblogic.
    Say i enqueue 1000 records in the queue at one go.
    Now, i want a bpel process to dequue from it and process it.
    However as per my requirement i want at a time 10 instances being active at a time i.e. 10 records from the queue are being processed at a time.
    Once any one of them finishes, the other will pick up the message.
    1 BPEL instance will process only 1 record from Q at a time
    Please let me know how to achieve this.

    You need to understand here that it is adapter which deques the message from queue and it will deliver it to BPEL for processing which is an async process. So adapter will keep dequeing messages and keep publishing it to BPEL irrespective of whether BPEL process has completed processing.
    You may need to tweak the adapter configuration here. First of all create the synchronous BPEL composite so that both adapter and BPEL work in same transaction -
    https://blogs.oracle.com/adapters/entry/creating_a_synchronous_bpel_composite_using_file_adapter
    You may control the number of threads for inbound JMS adapter using binding property "adapter.jms.receive.threads" in composite.xml
    Regards,
    Anuj

  • Compare creation of Datasources and JMS Queues : SAP vs (Weblogic/Websphere

    I am used to creating JDBC Datasources and JMS Queues on Weblogic/Websphere thru their Admin applications.
    Can someone compare/contrast that process to that on SAP's netweaver ( either using NWA or Visual Administrator).
    Thanks

    Hi Parag,
    For the process of creating JDBC datasources and JMS resources @ SAP NetWeaver you can refer to the documents here on SDN and help.sap.com, and compare that process for yourself, thus not being influenced by others' biased or unbiased opinions.
    For NetWeaver 04 and 04s these would be:
    <a href="http://help.sap.com/saphelp_nw04/helpdata/en/b0/6e62f30cbe9e44977c78dbdc7a6b27/frameset.htm">JDBC Connector Service</a>
    <a href="http://help.sap.com/saphelp_nw04/helpdata/en/22/cf4e71c46cdb4da31153be96c5389f/frameset.htm">JMS Connector Service</a>
    For the <a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/sdn/javaee5">Java EE 5 Edition</a>:
    <a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/7bb9751d-0e01-0010-febd-c3adce2c408c">Working with Database Tables, DataSources and JMS Resources</a>
    <a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/806e75a0-0e01-0010-2587-fc518de8ac1a">Administration Guide</a> -> section "Application Resources Management" (pages 89-104)
    Hope that helps!
    Your feedback/findings are very welcome!
    -Vladimir

  • Migration of JMS Queues from Weblogic 10.3 to 12c

    Hi - We are currently planning to move our JMS Queues from existing 10.3 server to 12c and for the same we are looking for some feedback : 
    We need to define a rollback strategy in case our migration to 12c does not work well and we need to revert back to using weblogic 10.3. Are messages sent to weblogic 12c backward compatible with version 10.3? As part of rollback, business would want to drain out any remaining messages from 12c and feed them back to 10.3 queues to allow them for processing. Is this feasible? If yes then, could you please suggest how, If not then could you please suggest a strategy for rollback and process remaining messages in 12c?
    We would also want to know if we can keep the same Database for both 10.3 and 12c JMS persistent stores for the same queues or should we define a completely new DB? With weblogic we can define prefixes for the DB stores which would make queue tables to have different names between 10.3 and 12c for same queues. However we are not sure if there are any other internal tables that JMS creates in the persistent stores DB, not using these prefixes, which would then corrupt the data since both 10.3 and 12c tables would be on the same DB.
    Thanks
    Nitin

    Hello,
    the final release for WLP is 10.3.6, running on WebLogic Server 10.3.6.
    Emmanuel

Maybe you are looking for

  • I need to get my old calendar data into my new calendar on my new MacBook Pro without erasing what is in there now, anyone know how to do it?

    I do not have access to my old computer (can boot in safe mode, other wise nothing on the screen, even with an external monitor) to export the old calendars. I have the old calendar files on my new computer. The titles of the old calendars are in the

  • Opening Smart Obect layers in Camera Raw

    Hello all, I've been working on a Photoshop CS3 JS script that parses art layers in files checking for Smart Objects. When a Smart Object layer is detected, the script opens the embedded file to ascertain the original resolution/pixel dimensions. I'm

  • How can integrate/call the Oracle Forms in ADF pages or task flow.

    Hi , I Have requirement to integrate the ADF and EBS. I have done the ADF pages calling in ESB. Right now i am struck up to call the OAF froms in ADF page/taskflow. it's high appriciate if any one provide me the any info or how to do this requriment.

  • Cisco 887va-w wireless stop working suddently

    Hi, I have a problem with my router, several time it stop working. My SSID is not broadcasted but I can't connect to it thru wireless. I have to reload it to make it work again... here is my config: running ap802-k9w7-mx.152-2.JB version 15.2 no serv

  • Farenheit to Celsius...

    Hello! I am trying to make a program that translats Farenheit to Celsius.... BTW, is the textio.java invluden in java.awt ? Thanks in advance. Klas import java.lang.Math; import java.awt.*; public class Uppg2_4{      public static void main(String ar