LiveCycle Data Services ES Release Notes

Last updated: July 23, 2007, added list of fixed bugs for LiveCycle Data Services 2.5.1 update.

Welcome to Adobe® LiveCycle™ Data Services ES. LiveCycle Data Services ES is the next generation of Flex Data Services. The name change reflects an important expansion in the use of these valuable services. In addition to serving the needs of both Flex and Ajax developers, LiveCycle Data Services ES provides enhanced integration with Adobe's other LiveCycle server products for document and process management, enabling business to create new ways to engage and reach customers.

Note: LiveCycle Data Services ES requires a minimum of Flex SDK 2.0.1 Hot Fix 2, which is included as part of the install. To use Flex Builder with LiveCycle Data Services ES, you must use Flex Builder 2.0.1 Hot Fix 2, which is available from the Adobe web site.

These release notes includes the following sections:

Related topics:

What's new

The following list describes some of the major new features and changes for LiveCycle Data Services ES. For more information on new features, samples, and examples, see the LiveCycle Developer Center:

Features

  • A new Flex SDK (released as part of LiveCycle Data Services ES), which includes updates to the client-side Web Services library.
  • Server-side PDF generation capabilities for RIA applications.
  • Runtime configuration of destinations, services, and adapters in Data Services.
  • Support for WSRP portal deployment of Flex applications.
  • Per Client Messaging quality of service (QoS) lets Flex clients select custom data access policies for real- time data.
  • Ajax Data Services enabling Ajax applications to take advantage of the data management and messaging capabilities available in Data Services.
  • The Flex-Ajax Bridge (FABridge), which is a small library that can be inserted into a Flex application, a Flex component, or even an empty SWF file to expose it to scripting in the browser without any additional coding.
  • Improved off-line message caching for Flex applications, which lets Flex applications using Data Services queue outbound messages locally when the client is offline and manage exactly what is sent to the server upon reconnect.
  • RTMP tunneling (RTMPT), which allows the use of the RTMP protocol in Data Services applications to traverse firewalls and proxies that currently prevent direct RTMP client connections to the server.
  • A SQL assembler, which simplifies the development of database driven
  • applications using data management services.
  • A new JSP Tag Library that lets you embed MXML and ActionScript code into a JSP page, providing an easier entry for J2EE developers to Flex programming.
  • Integration with LiveCycle ES through LiveCycle Remoting (described in the LiveCycle ES documentation).
  • Several important enhancements to core Data Services performance and scalability.

Changes and enhancements

General

  • Web Services classes have been moved to the Flex framework.
  • The default installation directories are now C:\lcds (Windows), and /opt/lcds (Unix and Linux).
  • The Flex SDK is now located in the install_root/resources/flex_sdk directory in a ZIP file. This ZIP file also contains installers for the Flash Debug Player.
  • In the services configuration:
    • The channel-definition's endpoint property has deprecated the "uri" attribute and a new attribute "url" is preferred going forward.
    • The messageTypes property has been eliminated from our services and unique destination ids across all services restriction has been introduced.

Web.xml entries

The following webtier entries were updated:

  • For the servlet FlexMxmlServlet, the servlet.class init-param has been updated:
    <init-param>
        <param-name>servlet.class</param-name>
        <param-value>flex.webtier.server.j2ee.MxmlServlet</param-value>
    </init-param>
  • For the servlet FlexSwfServlet, the servlet.class init-param has been updated:
    <init-param>
        <param-name>servlet.class</param-name>
        <param-value>flex.webtier.server.j2ee.SwfServlet</param-value>
    </init-param>
  • For the servlet FlexForbiddenServlet, the servlet.class init-param has been updated:
    <init-param>
        <param-name>servlet.class</param-name>
        <param-value>flex.webtier.server.j2ee.ForbiddenServlet</param-value>
    </init-param>
  • For the servlet FlexInternalServlet, the servlet.class init-param has been updated:
    <init-param>
        <param-name>servlet.class</param-name>
        <param-value>flex.webtier.server.j2ee.filemanager.FileManagerServlet</param-value>
    </init-param>

Messaging

New configuration attribute for messaging destinations to set the "cluster-message-routing" attribute (see resources/config/messaging-config.xml for more information)

The new "server-to-server" cluster-messaging-mode is now set as the default. This involved modifications to the publish/subscribe messaging engine with the following changes:

  • Subscriptions are now stored per selector, per subtopic with wildcards broken out as a separate set so most subtopic subscriptions are evaluated via a hashtable lookup.
  • The server can now store multiple subscriptions per client id (though Consumer on the client is still one subscription per component).

For information on features in the previous release, see the Flex Data Services 2 Release Notes.

Known issues

LiveCycle Data Services ES

  • In the services configuration:
    • The channel-definition's endpoint property has deprecated the "uri" attribute and a new attribute "url" is preferred going forward.
    • The messageTypes property has been eliminated from our services and unique destination ids across all services restriction has been introduced.
  • Bug 201935 - Oracle's OC4J web application server ships with its own implementation of javax.xml.parsers.SAXParserFactory which is not compatible with PDF Generation (specifically, XFA datasets fail to be updated in the generated PDF). To work around this problem you can copy another implementation, such as Apache Xerces, to your /WEB-INF/lib directory and set the following java.lang.System property at runtime in your RemoteObject class:

    System.setProperty("javax.xml.parsers.SAXParserFactory", "org.apache.xerces.jaxp.SAXParserFactoryImpl");

    You must recompile your RemoteObject class and restart the web application server for this change to be picked up.

    (Also note that a copy of Apache Xerces ships with the webtier compiler in /WEB-INF/flex/jars).

  • On SAP Netweaver 6.4 and 7.0 you must place a JMX implementation in /WEB-INF/lib in each web application. You can download an open source implementation of the Java(TM) Management Extensions (JMX) from http://mx4j.sourceforge.net/.
  • Hibernate 3 and BEA Weblogic Issues:

    Hibernate 3 does not work with BEA Weblogic. Refer to the following url for more information: http://www.hibernate.org/250.html#A25 Hibernate3 uses ANTLR for the new query parser. However, BEA Weblogic includes a version of ANTLR in the system classpath which will be loaded before any application libraries and, because Weblogic doesn't seem to support proper class loader isolation, will not see the Hibernate classes in the application's context. BEA seems to solve this issue by prefixing package names, but the distributed ANTLR doesn't have this prefix. Another source for this issue is the usage of Class.forName() in ANTLR itself.

    Until both parties have solved these issues we can only provide workarounds: Place all your Hibernate and dependent libraries on the application server's boot classpath or use the old query parser as described above.

    The Hibernate Team has sent a fix for this issue to the ANTLR developers, and it should be included in the next release. The Data Services team will distribute this new version with a minor release of Hibernate in the upcoming months. For now LiveCycle Data Services ES contains a patched version of ANTLR with Hibernate 3.0 which uses the context classloader instead of Class.forName().

    If WebLogic developers have more questions, they should contact their BEA support representative. ANTLR is used in Weblogic for the EJB-QL parser, so if you do not use their CMP engine, you're safe to use the new ANTLR version.

  • Bug 203208: PropertyChangeEvents are not sent when you add or remove an item in an ArrayCollection property which is part of a managed association. As a workaround, you can listen for CollectionEvents on these properties. They provide more detail as to the precise nature of the change anyway and so can alert your code when the property changes.
  • Bug 202167: The use of the [Managed] metadata causes propagation of hierarchical property change events through more than one level. If you have an object "a" which has a property "b" whose value has a property "c", this allows "a" to receive change events for changes to "c". This is used with FDMS to implement the "hierarchical values" approach to detecting changes for a tree of objects. Unfortunately this has a serious performance side-effect when you have a cycle in your object graph. If for example using the "a.b.c" case above, if "b" also has a property "d" which refers back to instance "a", a change to any property in the tree will end up notifying any other object. A large number of change events are fired and processing of this cycle graph can be prohibitively slow. In general, you should not use the "hierarchical values" approach for cyclic properties like this. Instead you define an association tag for this property so FDMS knows it does not have to follow change events over that value. This gets around this problem for any managed instance of FDMS. If however you are using an instance which has yet to be managed, you can still run into this problem. For any given object instance, FDMS does not know what destination it will be managed until you manage it by calling createItem, or adding it to another managed object.

    If you need to get or set any properties of this instance before it is managed, you can still encounter this performance problem. To workaround this, you can set a property in the mx.core.mx_internal namespace called "destination" to the string name of the destination. For example, if I have an instance called "foo" which is a member of the "bar" destination that has an association property called "parent", you do something like this:

      import mx.core.mx_internal;
      foo.mx_internal::destination = "bar";
      // now it is safe to use parent without hierarchical event listeners being used
      foo.parent = ....
    
  • Bug 200748: PDF generation makes use of a custom CharsetProvider which is set through /META-INF/services/java.nio.charset.spi.CharsetProvider. This may conflict with other NIO based drivers, such as Sybase JConnect6. A work around is to delete /WEB-INF/lib/acrobat-core-charset.jar from your application if you experience java.lang.NoClassDefFoundErrors while using such drivers and generating PDFs.
  • Bug 192305: When you have an assembler with cache-items=true (the default) which has references to other managed items, if you delete a referenced item without first having updated the property of the referenced item, the cache can hold a stale reference to that item. If this item is also cached on a client, the client automatically creates an update to remove the referenced item before the delete is applied. This can workaround this problem in many cases, but not all. If items have not yet been paged in by any clients, we'll fail to include updates for those items. In general, if you are removing an item which is referenced by other items, it is a good idea to first update the referencing items so they no longer remove the item being referenced.
  • Bug 175519: If you delete an item on the client, and that item is referenced by other items managed on that client, Data Management Services will automatically queue up changes for the referenced items to clear those references. If you subsequently revert changes for just the item you deleted, it is added back in but the references are not automatically reverted. If you revert all changes on the dataStore which is used by the DataServices involved, it will revert all of the changes including the references which were cleared to the deletedItem.
  • Bug 174538: Calling DataService.release() will always clear out all managed collections in addition to releasing them. If you wish to release without clearing you must use DataService.releaseCollection().
  • Bug 168162: Updates to a data collection object's identity column(s) is not supported but it is allowed. The result is a message that the assembler will likely not be able to handle.
  • Bug 160813: Paging of nested collection only works when using lazy loading. When not using lazy loading the entire nested collections are sent to the client.
  • When using LiveCycle Data Services ES in offline mode this issue will prevent the list controls from operating properly when there is data missing from the local cache. This may occur when paging or lazy loading is enabled and an application is operating in offline mode (or cannot establish a connection to the remote destination). See SDK bug 203479.
  • Bug 198783: Clustering failover fails with a clustered destination using an AMF channel in Firefox. This is due to player bug 199133.
  • The Java APIs used to create and start services, destinations, and adapters were reworked in 2.5 for the Runtime Configuration feature. If your code depended upon any apis not published in our javadocs, you may need to make changes to your code to get this code working in 2.5. We have also expanded the set of apis we are supporting so these techniques will be supported in a compatible way in future releases. See the updated javadocs for more information. Specifically, components can implement the ComponentLifecycle interface to have initialize, start and stop methods called on their classes.
  • Bug 193912: Setting custom paging to true will only enable the use of the paged-fill method when the auto-sync-enabled property is set to false. If custom paging is set to true with auto-sync-enabled set to true, the regular fill method will be used.
  • Messaging destinations using the JMS adapter will respect the <durable> configuration option, but simple ActionScript adapter based messaging destinations do not support durable behavior. The configuration settings for the deprecated file store from 2.0/2.0.1 are ignored in LiveCycle Data Services ES:
    <durable-store-manager>flex.messaging.durability.FileStoreManager</durable-store-manager>
    <!--   Properties for durable file store manager, all optional   -->
    <!--   Location for storing durable message files -->
      <file-store-root>/whereever</file-store-root>
    <!--   Maximum file size in kilobytes for durable message files   -->
      <max-file-size>200K</max-file-size>
    <!--   Number of durable message files to write in each batch   -->
      <batch-write-size>10</batch-write-size>
    

Flex Builder 2.0.1 Hot Fix 2

  • Flex Builder 2.0.1 Hotfix 2 has been updated to support the updated Flex 2 SDK Hotfix 2. This is an update installer to an existing Flex Builder 2.0.1 installation. This hotfix is supported with Flex Builder 2.0.1 only.
  • Flex Builder 2.0.1 Hotfix 2 Updater Installer is only available for English versions of Flex Builder. For Japanese versions of Flex Builder, please follow these manual steps:
    1. Apply the Hotfix 2 Japanese language pack to your Japanese Flex Builder 2.0.1.
    2. Download the Hotfix 2 version of the Flex 2 SDK.
    3. Quit Flex Builder if it’s running.
    4. Make a backup copy of the Flex Builder SDK folder (e.g. C:\Program files\Adobe\Flex Builder 2\Flex SDK 2\).
    5. Copy the contents of the Hotfix 2 Flex SDK folder and paste them into the Flex Builder SDK folder (e.g. C:\Program files\Adobe\Flex Builder 2\Flex SDK 2\). The Flex Builder SDK folder must be named Flex SDK 2.
    6. Make a copy of the Flex Builder lib folder that has all the jars that are used for compilation. The lib folder is in C:\Program Files\Adobe\Flex Builder 2\plugins\com.adobe.flexbuilder.flex_2.0.155577\ (or if you’re using plugin version of FB then it’s in the plugins folder of your Eclipse installation).
    7. Copy the lib folder from the SDK into the Flex Builder plugin folder C:\Program Files\Adobe\Flex Builder 2\plugins\com.adobe.flexbuilder.flex_2.0.155577\.
    8. From the lib folder copy you made in step 6, copy the flex-compiler-oem.jar and paste it into the new lib folder you created in step 7.

Flex 2.0.1 SDK Hot Fix 2

  • WebService only supports WSDL 1.1, SOAP 1.1 and XML Schema 1.0.
  • WebService should support document-literal style, both wrapped and bare styles, however, operations that make use of unbounded or nilable elements for the individual wrapped parameters themselves may not function correctly and is a known issue (bugs 203991, 203989 and 203890).
  • Bug 203479: List classes ignore "fault" from ItemPendingError and stop functioning when client loses connectivity

Flex Automated Testing known issues

This section describes known issues for the Flex Automation Testing feature.

  • You must manually add "MouseMove" to the QTP script when an object becomes visible due to MouseOver of some other object. This issue occurs when recording tests with the FlexStore sample application. To avoid this issue, perform the following steps:
    1. Open the FlexStore application and start recording a test.
    2. Click the "Add to Cart" button for the Nokia 6010 product which is made visible when you dispatch a MouseOver event.
    3. Stop recording.
    4. Edit the script in Expert view and add following before the click event in the script:
<browser>.FlexApplication("flexstore_swf").FlexPanel("Browse").FlexCanvas("products").FlexCanvas("Nokia 6010").MouseMove
  • Bitmap checkpoints do not work for the Accordion control.
  • While using bitmap checkpoints with any component, you must ensure that components are not selected and do not have focus (there is no blue rectangle around the component).
  • Replaying a test hangs if you record the use of a ContextMenu control while recording actions with TextArea or TextInput controls.
  • If you create a checkpoint with a null value, this can cause an error during playback if there is still a null value.
  • The MenuBar control's operations do not replay when you record interaction with the control by using only the keyboard.
  • Installing the QTP 9.2 Patch 1701 for Smart Identification support, after installing the Flex plug-in causes the environment name to go blank in Object Identification dialog. To prevent this problem install the Flex plug-in after installing the QTP 9.2 Patch 1701. If you do encounter the problem, re-registering the library TEAPluginQTP.dll should resolve the issue.

Fixed bugs

LiveCycle Data Services 2.5.1

  • 205964 - AMF channel with wait-interval-millis can hang RPC requests that are batched with the poll.
  • 204408 - DataStore initialization problems with many data types.
  • 205020 - Paging off and cache-items false creates an RTE.
  • 205903 - Nested associations are not removed when calling deleteItem on the client.
  • 203915 - Record not saved to cache with autoSaveCache enabled when inserting via collection.
  • 205902 - Serialization errors kill RTMP connections.
  • 205767 - Channel that was specified by client not being used by DataService destinations.
  • 205645 - Recieved both Fault and ResultEvents.
  • 205646 - Failed to reLogon as another user after logout.
  • 203860 - Warnings to stdout on WAS 5.1 -->>WARNING: Cannot set header. Response already committed.
  • 205566 - Get deliveryInDoubt error when data conflicts with server in nested destination using DataSource.
  • 195553 - Logout when using RTMPT leads to "delivery in doubt" error on next rpc after logout.
  • 205751 - Dynamic Desitnation headers test failed.
  • 205071 - JMS Adapter does not retain JMS message headers in pushed Flex messages.
  • 204817 - Error should be thrown when an RTMP channel is defined without specifying any port
  • 204597 - [RTMPS] When a channel connection is rejected, faultString needs to be more descriptive.
  • 204348 - SQLAssembler doesn't warn the user that associations are ignored.
  • 205673 - Messaging/Data management <subscription-timeout-minutes> config property is not working.
  • 204249 - Security only work on Message producer.
  • 204348 - SQLAssembler doesn't warn the user that associations are ignored.
  • 204665 - ConfigurationException is thrown, at startup, if there are more than one rtmp channels with endpoint URLs ending with slash("/").
  • 204249 - Security only work on Message producer.
  • 205584 - Channel fallback from HTTPS to HTTP fails.
  • 204664 - RemoteObject with bad credentials does not fault calls for RTMP channel using security constraint.
  • 205588 - RemoteObject becomes blocked if its initial connect attempt fails with 404.
  • 205589 - Producer configured to reconnect doesn't honor the 'rejected' property on ChannelFaultEvents.
  • 205401 - Simple off-by-one for REMOVE_FROM_FILL method.
  • 204385 - DataService.channelSet not bindable.
  • 204987 - Dangling index entry, integrity error when changing single-valued association.
  • 204200 - CurrentDataTransaction didn't update the submitter.
  • 204328 - Exceptions swallowed when error occurs committing batch of changes in Hibernate.
  • 204619 - Page messages bypass declarative security constraints.
  • 204620 - ItemPendingErrors adding nested associations with bi-directional relationships on the client.
  • 204621 - Reordering of sequences on the server can cause lost subscriptions.
  • 204567 - HibernateAssembler is not properly pre-fetching lazily loaded objects.
  • 204408 - DataStore initialization problems with certain data types.
  • 204663 - Applying a security constraint to an AMF or HTTP endpoint prevents authentication.
  • 204221 - SecureRTMPEndpoint does not reject connections from swfs loaded via HTTP rather than HTTPS.
  • 204519 - Rejecting an RTMP connect attempt triggers an RTE on the client.
  • 204529 - ChannelFaultEvent does not support 'connected' or 'rejected' arguments in its constructor or static factory method.
  • 203544 - Transparently recovering authentication state across server session expiration.
  • 204034 - get sequence id message in fetch identity case does not set destination.
  • 204204 - [WebSphere only] idle-timeout does not work for RTMP/RTMPT channels.
  • 204119 - createListener is not called.

Flex SDK 2.0.1 Hot Fix 3

  • JIRA - SDK-11185 - Bug with Security information is not passed through the SOAP-ENV:Header.
  • JIRA - SDK-11194 - Setting a secure WSDL URL switches useProxy to true which breaks flex applications.
  • 205500 - Player throwing an unexpected IOErrorEvent.
  • 203989 - Add support for optional wrapped-style document-literal parameters.
  • 203890 - Add support for wrapped-style document literal parameters that make use of maxOccurs, etc.
  • 203991 - Passing null to an optional document-literal wrapped-style param causes an NPE.
  • 204556 - WSDL operations without output message cause an NPE.
  • 204554 - HTTPChannel doesn't ignore property error.
  • 204810 - Change SOAPDecoder.supportGenericCompoundTypes to false by default.
  • 205599 - Change in format for WebService results for Arrays with maxOccurs > 1 but only one item returned.
  • 205703 - ArrayCollections passed to special ArrayOfSomeType complexType are not handled correctly.
  • 204808 - Empty elements corresponding to a complexType cause runtime errors.
  • 203892 - Add a null check in SOAPDecoder to handle invalid XML for SOAP responses.

Flex SDK 2.0.1 Hot Fix 2

  • 199175 - Flex Builder and the Flex debugger (fdb) to function correctly when running or debugging with Flash Player 9 (9.0.45.0) in the Mozilla browser. Included in tech note kb401493 (AS Debugger)
  • 198353 - make the uri attribute for <component> in catalog.xml an optional attribute Included in tech note kb401493 SWC Generation (compc)
  • 197305 - Fix LineStyle2 and ButtonRecord2 Included in tech note kb401493 SWC Generation (Flash Authoring)
  • 189395 - Add Linux support for ASDoc Tool (ASDoc Tool)
  • 198053 - Running asdoc from a folder other than the sdk/bin will always give an error (Mac and Linux) (ASDoc Tool)
  • 192015 - Memory leak in Accordion. (Component: Accordion)
  • 194813 - [customer] [Backwards compatibility] RTE from ListBase when mouseclick on datagrid item changes state (Component: DataGrid)
  • 196885 If you hide and show the last column in a DataGrid it could mess up the horizontal scrolling Component: DataGrid
  • 199251 - Make unscaledWidth/unscaledHeight public, and read/write (Component: General)
  • 199523 - Clicking a scroll track doesn't work if the track is skinned. (Component: General)
  • 203075 - EWI: Remove ExcludeClass metadata from AbstractWebService (Component: General)
  • 192870 - [customer]when horizontal and vertical scrollbar are showing, tweening nodes show through square area where scrollbars intersect (Component: Tree)
  • 195602 - Tree renders data incorrectly after a node is deleted (Component: Tree)
  • 196601 - [customer][new] long labels are clipped if they tween through area where vertical scrollbar and horizontal scrollbar intersect [old]long label is chopped off (Component: Tree)
  • 196570 - [customer] ViewStack containers are not Garbage Collected, memory leak. (Performance: App Model)
  • 166728 - change compc to use SourceList SWC Generation (compc)
  • 198353 - EWI: make the uri attribute for <component> in catalog.xml an optional attribute SWC Generation (compc)
  • 197305 - SWFKit EWI: Fix LineStyle2 and ButtonRecord2 SWC Generation (Flash Authoring)

 

Flex Automation

  • Bug 196860: The Flex AT plugin is not listed under QTP’s list of installed plugins.
  • Bug 193006: The automation.swc file should not have any dependencies on the automation_agent_rb.swc file.
  • Bug 192587: The Select event is not recorded on DataGrid controls when the editable property is set to true on the entire DataGrid, but set to false on some columns.
  • Bug 192400: You can now use syntax like automationIndex:=index:2 to select items in list-based components. Previously, you could only select an item from a list-based control by its text.
  • Bug 177833: Selecting items in list-based controls is not recorded if the item's label property is not set.
  • Bug 191684: The combination of "Insert + Space" does not replay correctly in the TextInput and TextArea controls.
  • Bug 191687: The time required to complete a tween effect in ComboBox controls is not considered while playing back some keys such as "HOME", "ESCAPE" , and "END".

 


Take a survey