QueTwo's Blog

thouoghts on telecommunications, programming, education and technology

Tag Archives: LiveCycle DS

Connecting your Flex application to BlazeDS or LiveCycle DS

If you have ever attended one of my presentations on BlazeDS, LiveCycle DS, or Flex/ColdFusion, you have heard me talk about how bad the data-connectivity wizards are in ALL of the IDEs available for the Flex SDK.  Even the new Flash Builder 4.5 dosen’t address the white-hot mess they call the data connectivity wizards that they started including in 4.0 (Side note:  I love most of the features in Flash Builder — I use it every day, but some of the wizards they included to make life easier really don’t).

Even including the services-config.xml document as a configuration option in your application will often lead you to troubles in the long-run.  This is included for you when you tell Flash Builder that you want to use ColdFusion or Java as your server model.  When you do this, the compiler inspects your services-config.xml configuration document on your server, and builds a table of the channels (endpoints) and destinations that are configured on the server.  You can then call the destination by name in theortags and not have to worry about how your client actually connects back to the server…

… untill you need to move your application…

… or you need connect your AIR application to your server…

… or you have a mobile or television application that needs resources on your server…

… or your server’s configuration changes.

Read more of this post

Destination properties available at runtime

In my last blog post I mentioned that there were various properties available when you create your own BlazeDS / LiveCycle DS destination at runtime.  The properties available to you are based on which type of adapter you are using.

Each set of properties is baked into a ConfigMap instance that you pass to the initialize() method of the adapter.  In my research, I’ve found that there are some adapters that fire up ok without any properties defined (these tend to be the open-source ones), and some which cause all sorts of issues unless you have certain magical properties defined (these tend to be the closed-source ones).

In addition to the regular properties, there are also “ServerSettings” and “NetworkProperties”, which are not covered here.  By not setting those properties, your destination will assume the defaults.

So, what are the available properties that you can set?  Below is a list of the service/adapter/properties:

  • remoting-service    (used for Flash Remoting, Remote Object connections, and “AMF” connections)
    • ColdFusionAdapter “cf-object”   (used to connect AMF messages to CFCs)
      • access  (as ConfigMap)
        • use-mappings    (true/false) ***
        • method-access-level   (“public”/”remote”) ***
      • property-case  (as ConfigMap)
        • force-cfc-lowercase   (true/false)
        • force-query-lowercase  (true/false)
      • use-accessors (true/false)
      • use-structs (true/false)
    • Java Adapter “java-object”   (used to connect AMF messages to Java classes)
      • include-methods (if defined, this is the list of methods that are allowed to be called)
      • exclude-methods (a list of methods that are blocked from being called. do not use with include-methods)
      • method
      • name
  • messaging-service   (used for realtime messaging applications)
    • cfgateway  (used to have ColdFusion mediate messages on the destination)
      • gatewayid  (the dot-location to the cfc that will handle the message) ***
      • gatewayhost  (used to define which host is hosting the cfcs, if it is not localhost — for example if your BlazeDS server is different from your CF server)
      • allowedIPs (which servers are allowed send data onto the destination back to the clients)
      • remote-username  (bakes in this username into all the packets sent to CF)
      • remote-password  (bakes in this password into all the packets sent to CF)
    • actionscript
      • (there are no properties for ActionScript.  Send in an empty ConfigMap)
    • jms
      • jms (as ConfigMap)
        • destination-type
        • message-type
        • connection-factory
        • destination-jndi-name
        • delivery-mode
        • message-priority
        • preserve-jms-headers
        • acknowledge-mode
        • max-producers

There are also services for proxying and data-management, however I’ve never used them (well, I have used data-management a lot, but since the licensing changes to LCDS, it’s pretty much dead to me).  I don’t know much about the jms adapter, so I can’t really say what all the properties mean, but I do know they are there. 

I have marked some properties with a ***.  If you see that, you need to include it, or you will get varied results in creating the destination at runtime (most likely, it will fail the first time you send data to it, rather when you create it).

Creating runtime remoting destinations in BlazeDS and LiveCycle Data Services

Ok, lets dive right into a really geeky topic… destinations in BlazeDS and LiveCycle Data Services.

For one of my customers, I was given the requirement to create a runtime destination in BlazeDS.  BlazeDS, along with its bigger brother LiveCycle allow you to create destinations in one of two ways — via the configuration XML files (services-config.xml, and related files), or via Java calls.  I won’t talk about the XML file method because it is extremely well documented.  However, the biggest disadvantage of the XML file method of creating destinations is that you usually have to reload or reboot your server in order for the changes to take affect. 

Runtime Destinations are not permanent — they do not persist during restarts.  They are also not magically added to the XML documents either.  Their creation is also often blocked on shared hosting servers as well.  But besides that, they act and smell just like ones created by the XML documents.  Why would you want to use them?   There are quite a few reasons for wanting them — for example to help secure your server by only exposing your destinations on demand, or by providing private destinations to clients so there is no way that data can be shared (in that case you COULD use subtopics, but that is controlled by the client).  In my case I was asked to provide a solution where the client would not have to change any configuration files when they installed our application.  We were using ColdFusion 9 as our back-end server, but these techniques work for Java based solutions too (you would just have to change the Syntax a bit).

I’ll start off by saying that the documentation is extremely poor (I wish Adobe would make this stuff clearer one day!), but with the help of two people, Sven Ramuschkat and Marko Simic, I was able to get to the point where reading the source code made sense.

The first step in creating the dynamic destination was getting the instance of the Message Broker.  The Message Broker in BlazeDS/LCDS is the guy who does all the work for remoting, messaging, data services and proxying.  You can access it in ColdFusion with the following commands

this.blazeDSClass = createObject("java", "flex.messaging.MessageBroker");
this.blazeDS = this.blazeDSClass.getMessageBroker(javacast("null", ""));

Read more of this post

Adobe MAX Wrap-Up

Photo Courtsy of Dee Sadler - http://www.flickr.com/photos/deesadler/So, I’m back from LA, and the Adobe MAX 2009 conference. Just like the MAX tagline of “Connect, Discover, Inspire,” I truly able to accomplish all of those.  This year’s conference packed in a lot of announcements, and gave everybody a good idea of where Adobe is heading in the marketplace.  All of the keynotes and sessions were recorded, so make sure to check them out on Adobe TV!

So, lets first talk about some of the major announcements:

  • ColdFusion 9 was released.  This has been in the works for about a year and a half, and offers a bunch of new features.  Some of the new things that are most compelling include the ability to work directly with Microsoft Office documents, ORM, integration with Sharepoint, and certain features pre-packaged as a service. 
  • LiveCycle ES2 was released.  I’m sure this effects all of 20 people on earth, but this product is just plain awesome.  LiveCycle ES is a workflow management applications (for those of you who only deal with consumer applications, think of the process that your paperwork has to go through when you hire somebody new.  You have multiple interviews, background checks, etc. that all belong in a workflow.  This allows you to manage that process, and make sure nothing is missed).  With it, a bunch of new Flex components have been released that allow you to integrate your applications with these workflows.  Yet another important part of this suite is the “LiveCycle Collaboration Suite,” formerly known as Cocomo.  This suite allows you to make your own interactive / collaboration services.
  • Mobile Devices.  So, there was lots of fanfare about Adobe’s push to make mobile devices 1st class citizens in the computing landscape.  21 of the top 22 device manufactures have signed on with Adobe including RIM, Symbian, Google, Microsoft, etc.  The only one that is missing is Apple, of course, but Adobe didn’t waste time shooting a warning shot over their bow. Adobe announced that in CS5, they expect to be able to publish full-fledged iPhone/iPod Touch applications that can be published on the iTunes store.  This does not mean that the Flash Player will be available for the iPhone, but simply that you can publish applications that were created in Flash/Flex/Catalyst.

A few things that were not released, but were talked about:

  • Flash Builder 4 - This looks like it was delayed until Q1 of next year.  It’s a shame, because a lot of the Adobe tooling is based on it now (interesting thought), so many of those applications have to wait too.  This included some ES2 apps, etc.  Adobe did release Beta 2 to allow people to refresh their builds, and play with things a bit more.
  • ColdFusion Builder – This also looks like it was delayed until Q1 of next year.  It is a LOT closer than people have been anticipating, and, personally I really like it. They have really done a lot of research on the workflow model, and I think they will win over a lot of developers who have been using Allaire ColdFusion Builder, Dreamweaver and all the other products.
  • Codename Stratus – This project allows users to build truly P2P applications with the Flash Player or AIR.  It allows IP Multicast or some sort of “home” server to point copies of FP together an allow them to communicate without the use of a server.  This saves bandwidth for the server, and makes the experience better if the users are geographically near by. The shear thought of being able to use IP Multicast in FP is a huge win for me.  This will require FP 10.1.
  • LiveCycle Data Services 3 – It is coming, and very soon.  This brings a whole slew of new features to the LCDS package that will make huge data applications faster and will allow data to flow better.  One of the coolest things about LCDS3 is the data modeler.  It brings the features of a UML designer, and allows you to both deploy databases via your model, or to build the skels of your applications via the model!  This, to me, is one of the coolest things I saw at the show.  How much was an LCDS server again?
  • Adobe Connect for Mobile – So, this one blew me away, but only a peep was said at the conference. During the Day 1 keynote, they showed the iPhone, among other devices using a mobile version of Adobe connect to join meetings!  This, to me, is one of the features that has the potential to keep Adobe Connect ahead of all the other web conferencing suites out there.  They said that we can expect the iPhone, RIM, Android and Microsoft connect clients to come out “soon”. 
  • Flash Player 10.1 – Lots of neat stuff coming in this one.  FP 10.1 will be smaller, meaner, and mobile ready.  It will feature lots of stuff like the Stratus support, and hopefully will make my bed and pour me a beer.  Make sure to check out the online sessions on this one :)

I also had the chance to catch up with a lot of the evangelists, and talk shop with a lot of the people I usually only communicate with online.  It was great to see everybody, oh, and yeah, I went to a lot of sessions and labs too.  I’m hoping to go through all my notes from the action-packed week from my labs and get cracking on some new apps I have floating in my head (yes, I was inspired).

Speaking at the Queensland CFUG tomorrow

I will be doing a remote usergroup meeting for the Queensland CFUG, out of Brisbane City, in Austrilia tomorrow (4/8 @ 5:30 am EST..  I forget what time that is in upside-down land…) on LiveCycle Data Services (LCDS). 

If you want to join along, email me at nick@theflexgroup.org — This will be broadcast live via Breeze, so anybody with an internet connection will be able to view it.

Presentation and samples will be posted here.

Follow

Get every new post delivered to your Inbox.

Join 27 other followers