Tour de Flex – New LiveCycle Data Services 3.1 Samples

I had the distinct pleasure of building some new LCDS 3.1 samples for Tour de Flex recently which just went live. For each sample, I thought it would be helpful to elaborate on each one a little bit more to help give ideas about what the new features can do for your applications.

For the data throttling and reliable messaging samples, there is a Java class that iterates a number and pushes it out to an LCDS destination the samples subscribe to. The reason for this is to simulate constant incoming messages to Flex. The iterated number itself goes on for a few minutes and restarts at 0 so you can see the order the messages come in.

In this post, I’ll assume you’re familiar with LCDS/BlazeDS basics. Most of the samples require you to make changes to your services-config.xml or messaging-config.xml, and some require you to enable Advanced Messaging Support.

  • Adaptive Client Message Frequency
    This feature falls under the Advanced Data Throttling features of LCDS which are not available in BlazeDS. Adaptive Client Message Frequency adjusts the message frequency limits based on each client’s message processing rates. So in the TDF sample, the server will determine how many messages to send per second to send to the client and adjust the frequency in steps of 10 messages (10 less, or 10 more messages per second based on the server’s calculation).
  • Asynchronous Message Filtering
    This feature is very useful to pre-process incoming messages and post-process outgoing messages on the server-side. In the sample, the message filter simply removes any occurrences of the word “foo”. No foo for you! You can imagine that you could employ message filters in a number of situations, like adding a server-side step in form validation on top of the client-side, or vice versa, making sure messages sent from the server are formatted correctly or are headed to the right end user.
  • Basic Authentication
    You can secure any destination using Tomcat’s built-in security constraints. This sample relies on standard J2EE basic authentication from the application server. The “trusted” security-constraint exists in the services-config.xml. When you attempt to access the secured destination, the browser prompts you to log in. The preferred method for authentication with LCDS, however, is to use Custom Authentication.
  • Custom Authentication
    By using Custom Authentication, the client passes log in credentials to the server without having to rely on the browser. LCDS provides application container authentication with login command classes to do container-specific authentication and authorization. You can optionally write your own LoginCommand class if needed.
  • Client-Level Data Throttling
    With this feature, you set the message-level frequency on the client-side (maxFrequency=1 in the code for the Consumer). In this case, the server will ensure it only sends one message per second to the client application. Data throttling is very useful to ensure that a server doesn’t overwhelm slow clients with messages sent, and that a server itself isn’t bombarded with messages from multiple clients.
  • Destination-Level Data Throttling
    The max-client-frequency attribute in the messaging-config.xml indicates that the destination processes a maximum of 5 messages per second from individual Flex clients. The client code attempts to send 20 messages concurrently to the server which causes the “throttled” error on the server to be sent back to the Flex app. There are multiple configurations for max-frequency inbound/outbound, and max-client-frequency inbound/outbound that deal with per client, or the entire pool of clients message handling. See the README.txt file in this sample for further explanation.
  • Reliable Messaging
    This one is my personal favorite new feature for LCDS 3.1. This features improves the quality of messaging between clients and destinations. The benefits include no message loss, ordered message delivery, no duplicate message processing, and reconnection to server following unexpected connection loss. To see it work, subscribe to the destination and you’ll see the numbers being iterated. If you’re on WiFi, turn it off (disconnect your internets) and back on within 30 seconds. Otherwise pull your cord – no sophmoric jokes plz 🙂 – and plug it back in before the 30 seconds is up. Once the numbers start iterating again, click the unsubscribe button, that’ll make things easier to see. When you scroll through each TextArea, you should see a substantial gap in iterated numbers on the right side because that TextArea contains messages sent from the unreliable destination. On the left, the TextArea shows messages from the reliable destination, so it will pick up your Flex client and send the iterated numbers in order as soon as you reconnect to the web.
  • Flex/Spring Remoting
    This sample shows how you can use an LCDS destination to allow remoting directly to a Spring bean from a Flex client. You configure the flex namespace in the Spring xml config, a message-broker tag in your WebApplicationContext xml file, and specify the Java class and you’re ready to access some Spring goodness.
  • Flex/Spring Security
    Both Flex/Spring samples use the web-application-config.xml to configure access to the PlanetService bean or enable Spring security.

Extra thanks to Greg Wilson and Holly Schinsky for the project and their invaluable help throughout! In the near future, I’ll post some more about each sample in more detail. In the meantime, there are tons of new Flex 4, Flex 4.5 (Hero), mobile and LCDS 3.1 samples to check out in Tour de Flex, and more to come!



  1. Daimon

    Hi David,

    I would really like to see those new messaging examples you added, bt it appears that is down.

    Would you be able to have a look into that?


  2. Dave (Post author)

    Hi Daimon,
    No problem, I just rebooted the server. The samples are up and running once again.

  3. Swathi

    Hi David,

    I am eager to see the sample code for reliable messaging. I could not see the samples either in the tour de flex or from the links in the above post. Seems that the server is down. Please let me know.


  4. Dave (Post author)

    Hey Swathi, Just rebooted the server 🙂 enjoy!

  5. RBK

    Hi David,

    Thanks for all your efforts in publishing these training materials.

    I was trying to download the flex/spring security source from flex de tour & the download doesn’t start.

    Appreciate if you can provide the link to download the source project.


  6. Dave (Post author)

    Hi RBK,
    You can download the source here If the samples don’t let you download source at times, click on the Open in Browser button on the top-right of Tour de Flex and then you can right click and view source. Enjoy!

  7. RBK

    Thanks David.

    It worked.


  8. Gay

    I was trying to download the flex/spring security source from flex de tour & the download doesn’t start.

    Appreciate if you can provide the link to download the source project.

  9. Ronald

    Just got a view of the samples you gave. Good thing the server is up and running. So far things are doing great.

  10. Catherine

    I was trying to download the flex/spring security source from flex de tour & the download doesn’t start.

  11. Dave (Post author)

    Here’s the source for the Flex/Spring security sample

Leave a Comment

Your email address will not be published.

Time limit is exhausted. Please reload CAPTCHA.