Implementing JMS-based EDN and JNDI-based EDN

I´m implementing a composite with two kinds of events JMS and JNDI and I saw in the configuration for JMS-base I must remove the EDN-DB JNDI sources to use EDN-JMS data sources. My doubt is, does my composite will work with that two kinds of events?
All the best,
Pierre

This is a functional desire that has come up on some of our projects too but is not directly supported by EDN. We have discussed the idea of EDN proxies (either as SOA Composites or as PL/SQL EDN subscribers). These proxies (presumably always active/deployed) would subscribe to EDN and provide a persistent buffer for the application. This is essentially implementing a persistence queue for each subscriber, but we wish to avoid statically configuring an AQ or JMS queue destination for each and every app subscription case and perhaps use some shared-but-keyed persistence design (e.g. database table).
Architecturally, this starts to hit on the ever evasive and controversial question of what is an "Event" versus what is a "Message". i.e. can you afford to sometimes miss the former but not the latter?
-Todd

Similar Messages

  • How to create OEMS JMS In-Memory and File-Based Persistence?

    Anyone knows how to create OEMS JMS In-Memory and File-Based Persistence? Any help it is appreciated. I m working with Oracle BAM 11g TP4 and I want to test the capability of connecting directly to a JMS queue, and reading Oracle´s "complex" documentation I couldnt find the right way to make this happen.
    tks

    Hi Mario
    This is explained in the soa developer's guide. Chapter 43 "Enterprise message source"should help you. You will find how to connect OEMS or JMS in-memory/file based to your BAM data objects with or without xpath transformation.
    You can find sample of advanced XML formating in the 10g tech note: "Oracle BAM 10.1.3 configuration for BPEL 10.1.2 using JMS sensors" (useful even if you don't plan to use BPEL).
    Anyway, if you plan to use BPEL, forget JMS and use the BAM adapter (chapter 42), it's quicker & easier.
    Dominique

  • How to create OEMS JMS In-Memory and File-Based Persistence ? Anyone?

    Anyone knows how to create OEMS JMS In-Memory and File-Based Persistence? Any help it is appreciated. I m working with Oracle BAM 11g TP4 and I want to test the capability of connecting directly to a JMS queue, and reading Oracle´s "complex" documentation I couldnt find the right way to make this happen.
    tks

    Hi Mario
    This is explained in the soa developer's guide. Chapter 43 "Enterprise message source"should help you. You will find how to connect OEMS or JMS in-memory/file based to your BAM data objects with or without xpath transformation.
    You can find sample of advanced XML formating in the 10g tech note: "Oracle BAM 10.1.3 configuration for BPEL 10.1.2 using JMS sensors" (useful even if you don't plan to use BPEL).
    Anyway, if you plan to use BPEL, forget JMS and use the BAM adapter (chapter 42), it's quicker & easier.
    Dominique

  • When we should use JMS based proxy services and when JMS Adapter in OSB

    Hi,
    Can somebody explain me when we could go for JMS Adapter and when we should go for JMS based service in OSB?
    The one scenerio i can think of is when my provider/consumer is using jms provider other than WLS jms provider we should use jms adapter.
    Edited by: user12883209 on Jan 5, 2012 5:29 AM

    I don't think there are clear guidelines available, however here is my view.
    1) OSB 11gR1 is not certified with Oracle JMS Adapter. It is certified with Oracle FTP, Database, AQ and application adapters.
    http://docs.oracle.com/cd/E21764_01/doc.1111/e15867/interop.htm#OSBAG1403
    2) In addition of the Weblogic JMS, OSB can also integrate with following provider without using adapter.
    - WebSphere MQ
    - Tibco EMS
    3) if you need to integrate JMS with BPEL Process or Oracle SOA suite composite, it has built in support for generic Oracle JMS adapter. Oracle generic JMS adapter can integrate with AQ JMS (JMS providers OJMS 8.1.7, 9.0.1.4, and 9.2), TIBCO JMS, IBM Websphere MQSeries (IBM MQSeries JMS 6.0), Weblogic JMS, Apache, and Active MQ
    http://docs.oracle.com/cd/E14571_01/integration.1111/e10231/adptr_jms.htm
    4) If you need to integrate OSB with Weblogic JMS, WebSphere MQ, Tbco EMS it does not need JMS adapter.
    Hope this helps !!!
    Jayesh Patel
    http://jayesh-patel.blogspot.com/
    http://www.yagnasys.com/

  • Distributed JMS based logging .. falling flat?

    In our fancy ESB, logging of each request is done via a common infrastructure based on JMS based logging. Here is what happens in a nutshell:
    service gets a request service
    prepares some data in a LogData
    object service calls database
    time taken for db interaction is captured in LogData object
    service is ready to send response
    LogData object is sent to a messaging destination
    service sends response
    Very rosey! yes for paper architects. Here is the actual issue: The JMS service provider sometimes becomes unavailable - due to a system level error or the software crashes. Then the service waits at the step (step no. 6) where it has to make JMS connection to send LogData object. Resulting in delayed response, thus leading to bad performance and user experience.
    So that is the biggest shortcoming of "Distributed logging using JMS" touted by a lot of developer websites. Also note that the presance of LogData is kind of critical non-functional requirement. That means the messages are sent in persistent mode, leading to a wait until the JMS provider confirms receipt of message to the sender (the service in this case) - what to be blamed? immature design? Are there any success stories of implementing something like this?

    user13559021 wrote:
    In our fancy ESB, logging of each request is done via a common infrastructure based on JMS based logging. Here is what happens in a nutshell:
    service gets a request service
    prepares some data in a LogData
    object service calls database
    time taken for db interaction is captured in LogData object
    service is ready to send response
    LogData object is sent to a messaging destination
    service sends response
    Very rosey! yes for paper architects. Here is the actual issue: The JMS service provider sometimes becomes unavailable - due to a system level error or the software crashes. Then the service waits at the step (step no. 6) where it has to make JMS connection to send LogData object. Resulting in delayed response, thus leading to bad performance and user experience.
    So that is the biggest shortcoming of "Distributed logging using JMS" touted by a lot of developer websites. Also note that the presance of LogData is kind of critical non-functional requirement. That means the messages are sent in persistent mode, leading to a wait until the JMS provider confirms receipt of message to the sender (the service in this case) - what to be blamed? immature design? Are there any success stories of implementing something like this?I don't understand what this has to do with JMS.
    You can substitute 'database', 'web service' or 'jboss' (as examples) in the above and change nothing.
    If you have a remote server that is a required part of your processing system in a 24x7 system then you must come to some understanding of both what is allowed when the service is not available at all and what is allowed when there are intermittent outages.
    The first must be considered because something like a router going done can take quite a while to diagnose and replace.
    Besides the solution noted above I have also implemented a solution that cause my service to stop accepting any transactions at all if the secondary processors cannot respond in a timely manner. The reasoning there is that in planned for volume scenarios it is possible for several thousand transactions to be backed up even in the best circumstances in a couple of seconds, thus taking more in could result in a large number of failures.
    Additionally back end systems might run via a load balancer. That however can still have failure scenarios, again for example when a router goes out, or when one balanced server accepts a connection but fails to process it.

  • Is JMS based solution the right one?

    Hello,
    I'm doing some research on possible solutions to a process that is currently being completed semi manually and semi automated. The process itself consists of feeding several thousand ID numbers to a legacy C++ application, which in turn, after some processing of its own, sends more data to an external system. It is automated in that there is a batch file that kicks off the C++ application. The C++ application opens up a text file, reads an ID number and then processes it. It repeats this for as many IDs as there are in the text file. However, it is manual in that there are several text files, broken up into 500 IDs per file (which we create), that are sent over several weeks. The reason for this is a limitation in the external system that we have no control over. Its 500 IDs per day, no questions asked. Because of this limitation, we have to go in and run the batch file for each of those text files. In addition, we have to monitor as each text file is processed in case of a failure. If a failure occurs, we have to go into the text file, delete all of the IDs that were successfully processed, and then run the batch process again.
    At any rate, as much as we would like to, we are unable to rip the current system out and replace it all together. The legacy C++ component must remain intact. I am looking at possibly modifying the C++ application to pick up the ID numbers from an external application--instead of a text file--that keeps count of the number of IDs processed in a given day. I'd like to continue logging error messages, but instead of crapping out the entire process, I'd like for them to be ignored and for the process to continue until the 500 ID threshhold is reached for the day. I'm not too familiar with JMS technology, but from what I have read a JMS based external application may be a good candidate, but I'm thinking it may be overkill. I do like the fact that it is reliable, loosely coupled, and it's asynchronous. So I guess my question is if a JMS based application is the right solution for this problem? Or is it overkill?
    Thanks in advance for the assistance.

    hi java esse,
    i think you can acomplish your goals through using JMS.
    BUT if you just do this "simple" task with it i would not do it since it takes some time to get used to handling the JMS servers etc.
    if you consider your actual refactoring just as a starting point for many applications, and more to come this use case could be a good one.
    in general my only technical fear for this scenario would be that you might store some messages a reallly really long time maybe some weeks since your limit is 500 / day. this might be a porblem when you put some other applications on the JMS broker that have really high throughput.
    is it 500 successfull a day or 500 tries a day?
    regards chris

  • Implementing authorization based on database roles

    Hi,
    I am trying to implement authorization in my sample jdeveloper application.
    I have the list of users stored in LDAP and my database table contains the roles for those users.
    Now how can I get the roles from the database table and implement authorization based on the roles?
    I am using jdev 11 and weblogic 10.3
    Thanks

    Hi,
    Checkout [this post|http://forums.oracle.com/forums/thread.jspa?threadID=928304]
    Sireesha

  • Implement Activity Based Management

    I am currently working with a client that wants to implement Activity Based Management. I am looking for any information on how to approach this type of implementation within the Oracle eBusiness Suite. The client is currently running OTL, HRMS, Projects, GL, PO, AP, AR. I am currently researching the ability to do this with OTL and Projects. Has implemented the Activity Based Management Module?

    Just wondering if you have got any info to share from your research. I have a similar predicament. I am trying to retrieve timesheet details of ex-employees from OTL. Tried to link hxc_time_building_blocks, hxc_time_attribute_usages, hxc_timecard_summay, hxc_time_attributes, pa_project_assignment, pa_resources_denorm, pa_project_subteams, pa_project_subteam_parties, per_people_f etc.
    But in vain. Do you have inputs on how the self service timecard inquiry retrieves the timecard details of active current employees. I believe it is dynamically populated via some APIs. Any thoughts shared is highly appreciated.
    Thanks
    uds

  • How to implement context based auditing?

    I am looking to implement context based auditing, auditing the reason for a change as well as the before and after values, change time etc.
    One method that springs to mind would be to abstract the key tables behind an API and require the change reason whenever any DML is issued but does anyone out there have a better method that would be easier to implement and maintain.
    Unfortunately I will be both retrofitting the solution to a current system as well as creating a new solution too so any suggestions would be welcomed.
    Thanks in advance for your suggestions.
    Ollie.

    Ollie_J (OCP) wrote:
    Thanks for the quick response but the auditing described in the links only audits changes but not fundamentally the CONTEXT of the change.
    I need to record why a user was changing data not just what they were changing.This sort of thing, as Pavan has mentioned, is not available within the database. For example, you have updated a parameter through the alter system command so what is the context of this that you would audit in the first place? All what you can audit that what the user has fired i.e the alter statement. I am not sure that this actually would be good idea to do even but still, as suggested, try to use something through the application and/or from the table itself that can help tracking it.
    Aman....

  • How to Implement Condition-Based Tax Calculation in R/3 for Mexico

    Is there a manual, or some type of guide to implementing condition-based tax calculation in R/3 for Mexico?
    Kind regards,
    Mark Walker

    Hey Mark,
    Check the following link for mexico taxes, may be helpful to you..
    http://help.sap.com/printdocu/core/Print46c/EN/data/pdf/CAINTMX/CAINTMX.pdf
    Thanks
    Prasada

  • Implement log based change data capture

    Hi,
    I am trying to get log based change data capture to work . My ODI version is 11.1.1.5. I guess for log based there are 2 ways:
    1) use streams
    2) use log miner tool
    My database is Oracle 11g Express Edition. Streams i know can be possible only in enterprise edition of Oracle. So can anyone tell me how to implement log based CDC then since logminer tool is not preferred to be used in 11g

    Hi,
    Thanks for ur reply...
    I received an error while creating the change table ..
    ORA-29540: class oracle/CDC/PublishApi does not exist
    ORA-06512: at "SYS.DBMS_CDC_PUBLISH", line 298
    Canu pls help me to fix this..
    by,
    Nagaa

  • To use JMS and JNDI in JDev 9.0.3.4

    Do I need to add additional librararies in order to use JMS and JNDI along with EJB's in the enterprise application I'm creating?

    No the article is not applicable for 9.0.3 I've never tested the compatibility of the 9.0.3 + Struts integration - obviously it does not work.
    What does work is the ADF bindings used in 9.0.5 and above which can be safely used with newer versions of Struts.

  • How to implement Object based navigation

    Hi all,
    Can any one guide me the steps for Implementing Object based Navigation.
    Thanks in advance,
    Satish J

    Hi Sathish,
    sorry for the delay. hope it is not too late
    I have updated wiki with the content. i am just building it up..not yet completed.
    i think you can go thru the example which i have completed to have a detailed view of how to implement obn.
    please refer the link.
    https://wiki.sdn.sap.com/wiki/x/SZ
    You can send your comments regarding the page so tat i can incorporate the same in the content which i am preparing now.
    Regards,
    Sharadha

  • JMS/clustering design and configuration question

    Hi:
              Any help or feedback much appreciated cos' this topic (no pun intended)
              seems to be complicated.
              I have an application that uses stateless session beans for mainline
              business functionality (heavy database writing) that is say then
              audited. The auditing is taken care of asynchronously by the SS bean's
              business method (after completing whatever it is doing) using a JMS
              connection factory to write to a queue which is consumed by a MDB. So,
              control is returned to the user ostensibly before the auditing is done
              for performance reasons. No transactional semantics are expected between
              the mainline business logic and the audit of same. So, our main use of
              JMS/MDB is for asynchrous operation. This design seems to be fine on a
              single server as long as a persistent store is configured.
              Now the hard part. We need to cluster - again for load-balancing and
              performance. As I've read thru this newsgroup and experimented some,
              I've quickly realized that it's not as simple as just configuring a
              cluster of just EJBs.
              Since the queues are basically used for asynch processing, would the
              following work?
              1) Set up a JMS server config for each WL server in the cluster targeted
              only for each WL server
              2) Set up a different queue for each JMS server with prefixed JNDI name
              (myserver1_someJNDIname)
              3) Configure/code the producer SS EJBs so that they ask the connection
              factory for a connection with a prefixed JNDI name (e.g
              myserver1_someJNDIname) based on the server they are running on (known
              perhaps from a property file local to each server)
              4) Target MDBs to be deployed on all servers in the cluster just like
              regular EJBs
              5) Finally, deploy the MDBs unjarred on each WL server and edit the
              weblogic-ejb-jar.xml on each server to set the -destination name-
              prefixed by the server on which it is deployed (e.g.
              myserver1_someJNDIname)
              Will the above basically accomplish what I'm after, which is a cluster
              of machines each equally capable of locally offloading asynchronous
              processing? I understand that for the most part WL server will use local
              EJBs, etc if they are available. I'm not particularly interested in
              failover at either EJB or JMS level, but rather HttpSession level so
              that if a WL server goes down another could pick up perhaps by by the
              user re-requesting whatever operation failed.
              If this is not possible because of the way clustering works (homogenous)
              then is there some other way to solve this problem. I basically do not
              want a cluster where there is a single point of failure (other than DB
              server) for any given piece of functionality.
              Thanks for any help.
              Alex
              

    First and easiest,
              Just create a set of JMS tables for each server in your db. You can specify
              a JMS tablename prefix in your weblogic properties for eash server using
              weblogic.jms.tableNamePrefix=W5
              as long as the prefix is only two chars. This worked great for us until we
              decided to drop JMS because of its memory leaks. We were having to restart
              our servers every 8 hours.
              Second, get rid of JMS. Dirty little secret:You don't need JMS to do
              asynchronous work! You can use threads inside of J2EE and not break J2EE.
              Can't tell you how for proprietary reasons but you can.
              Mica Cooper
              

  • NIO Socket implementation - delay between select and get data from socket

    Hi all,
    I have implemented a internal CallAPI for RPC over a socket connection. It works fine but if there are more than five clients and some load I have the phenomena that the READ selector returns a SelectorKey but I did not get any data from the socket.
    My implementation is based on NIO has following components:
    + Accept-Thread
    Thread handles new clients.
    + Read-Thread
    Thread handles the data from the socket for the registered client. Each request is handled in an own Process-Thread. A Thread-Pool implementation is used for processing.
    + Process-Thread
    The Process-Thread reads the data from the socket and starts the processing of the logical request.
    In my tests I get the notification of data at the socket. The Process-Thread want to read the data for the socket, but no data are available. In some situations if have to read about 20 times and more to get the data. Between each read attempt I have inserted a sleep in the Process-Thread if no data was available. This have improved the problem, but it already exists. I tested the problem with several systems and jvm's but it seams that it is independent from the system.
    What can I to do improve the situation?
    I already include the read implementation from the grizzly-Framework. But it doesn't improve the situation.
    Socket - Init
         protected void openSocket( String host, int port ) throws IOException
              serverChannel = ServerSocketChannel.open();
              serverChannel.configureBlocking( false );
              serverSocket = serverChannel.socket();
              serverSocket.setReuseAddress( true );
              this.serverhost = host;
              this.serverport = port;
              this.srvAcceptSelector = Selector.open();
              this.srvReadSelector = Selector.open();
              InetSocketAddress isa = null;
              if ( serverhost != null )
                   isa = new InetSocketAddress( this.serverhost, this.serverport );
              else
                   isa = new InetSocketAddress( this.serverport );
              serverSocket.bind( isa, 50 );
              serverChannel.register( this.srvAcceptSelector, SelectionKey.OP_ACCEPT );
         }New Client � Init
         // New Client
         if ( key.isAcceptable())
              keyCountConnect++;
              ServerSocketChannel actChannel =
                   (ServerSocketChannel) key.channel();
              // Socket akteptieren
              SocketChannel actSocket = actChannel.accept();
              if ( actSocket != null )
                   actSocket.finishConnect();
                   actSocket.configureBlocking( false );
                   actSocket.socket().setTcpNoDelay( true );
                   this.registerSocketList.add( actSocket );
                   this.srvReadSelector.wakeup();
         }Read Data from Socket
        protected int readDatafromSocket( ByteArrayOutputStream socketdata )
             throws IOException
             int readedChars = 0;
            int count = -1;
            Selector readSelector = null;
            SelectionKey tmpKey = null;
            if ( sc.isOpen())
                  ByteBuffer inputbuffer = null;
                 try
                      inputbuffer = bufferpool.getBuffer();
                      while (( count = sc.read( inputbuffer )) > 0 )
                           readedChars += count;
                          inputbuffer.flip();
                           byte[] tmparray=new byte[inputbuffer.remaining()];
                           inputbuffer.get( tmparray );
                           socketdata.write( tmparray );
                          inputbuffer.clear();
                      if ( count < 0 )
                           this.closeSocket();
                           if( readedChars == 0 )
                                readedChars = -1;
                           if ( log.isDebug())
                                  log.debug( "Socket is closed! " );
                      else if ( readedChars == 0 )
                           if ( log.isDebug())
                                  log.debug( "Reread with TmpSelector" );
                           // Glassfish/Grizzly-Implementation
                         readSelector = SelectorFactory.getSelector();
                         if ( readSelector == null )
                              return 0;
                          count = 1;
                          tmpKey = this.sc.register( readSelector, SelectionKey.OP_READ );
                         tmpKey.interestOps(
                              tmpKey.interestOps() | SelectionKey.OP_READ );
                         int code = readSelector.select( 500 );
                         tmpKey.interestOps(
                             tmpKey.interestOps() & ( ~SelectionKey.OP_READ ));
                         if ( code == 0 )
                             return 0;
                             // Return on the main Selector and try again.
                           while (( count = sc.read( inputbuffer )) > 0 )
                                readedChars += count;
                               inputbuffer.flip();
                                byte[] tmparray=new byte[inputbuffer.remaining()];
                                inputbuffer.get( tmparray );
                                socketdata.write( tmparray );
                               inputbuffer.clear();
                           if ( count < 0 )
                                this.closeSocket();
                                if( readedChars == 0 )
                                     readedChars =-1;
                           else if ( count == 0 )
                                  // No data
                 finally
                      if ( inputbuffer != null )
                           bufferpool.releaseBuffer( inputbuffer );
                           inputbuffer = null;
                      // Glassfish-Implementierung
                    if ( tmpKey != null )
                        tmpKey.cancel();
                    if ( readSelector != null)
                        // Bug 6403933
                         try
                            readSelector.selectNow();
                         catch (IOException ex)
                        SelectorFactory.returnSelector( readSelector );
            return readedChars;
        }Thanks for your time.

    I've commented on that blog before. It is rubbish:
    - what does 'overloading the main Selector' actually mean? if anything?
    - 'Although this not clearly stated inside the NIO API documentation': The API documentation doesn't say anything about which Selector you should register channels with. Why would it? Register it with any Selector you like ...
    - 'the cost of maintaining multiple Selectors can reduce scalability instead of improving it' Exactly. So what is the point again?
    - 'wrapping a ByteBuffer inside a ByteBufferInputStream:' Code is rubbish and redundant. java.nio.channels.Channels has methods for this.
    There is no a priori advantage to using multiple Selectors and threads unless you have multiple CPUs. And even then not much, as non-blocking reads and writes don't consume significant amounts of CPU. It's the processing of the data once you've got it that takes the CPU, and that should be done in a separate thread.
    So I would re-evaluate your strategy. I suspect you're getting the channel registered with more than one Selector at a time. Implement it the simple way first then see if you really have a problem with 'overloading the main Selector' ...

Maybe you are looking for

  • Short dump when we write more than 4 routines or formulas 4 one source fld

    Hi Experts , We have one source field in a DSO which supplies data to 9 other characteristics present in the cube via formulas. But the system throws a short dump when we write more than 4 routines or formulas. Please let us know if there is any rest

  • Our apple tv keeps saying network time needs to be set

    We have been trying for an hour to get our apple tv to work. Network is up , signal strength is strong bit we keep receiving message "network time needs to be reset". We have used it for over 2 years without fail.

  • So, what's up with this Genius?

    It seems it's working for some ... but not for me. I even synced ALL songs from iTunes to my phone again, but still no luck, always the same message: "... doesn't have enough related songs ..." What else would you suggest I should try to make it work

  • Dynamic change selected columns

    hi all, Created an anwers with 5 columns: level1 | level2 | level3 | level4 | facts I created a session filter on all the level columns. Like this: level1 = session.value or level2 = session.value or level3 = session.value or level4 = session.value N

  • Export to Flash CS3, SWFs not editable - HELP!

    On this page ( http://www.adobe.com/products/captivate/integration/flash/) it says about exporting to Flash, "Each Adobe Captivate slide is automatically inserted into the Flash Timeline, with objects, images, audio, and backgrounds on individually l