Adobe LiveCycle Data Services ES2 Version 3 Release Notes
What's new
Adobe® LiveCycle® Data Services 3 simplifies the development of rich Internet applications using Flash and Java. LiveCycle Data Services provides client and server frameworks and tooling to help you write applications that leverage the flexibility and power of the Adobe® Flash® Platform with your existing, as well as new, enterprise Java applications.
Adobe LiveCycle Data Services 3 provides significant new capabilities, including the following:
- Support for model-driven development of Flash applications, which make application development better, faster, and easier
- Secure and scalable connectivity across the demilitarized zone (DMZ) with the Edge Server.
- New capabilities for developers to control and measure the quality of service of enterprise applications
Model-driven development
Adobe application modeling technology brings model-driven development to Flex developers. Developers start by creating an application model from which they go on to develop the Flex user interface and the server business logic. It is now easier and faster to develop Flex applications with Flash Builder 4 and Adobe LiveCycle Data Services 3.
The application modeling technology runtime enables data persistence out of the box. Data management is implicitly supported and does not require developers to create custom assemblers or employ complicated configurations. Without writing any Java or Flex code, developers can develop a functional application prototype.
LiveCycle Data Services 3 also introduces a text and graphical modeling editor that developers use in conjunction with Flash Builder. This tool further simplifies how developers create enterprise-ready Flex applications.
Application modeling technology and the modeling editor help Flex and Java developers to be more productive, and they are designed to be highly extensible to meet the needs of complex enterprise applications.
Connectivity across the DMZ
The Edge Server is a LiveCycle Data Services server specially configured and deployed in an enterprise's demilitarized zone (DMZ), which is the subnetwork that contains and exposes an enterprise's external services to the Internet. The Edge Server is a proxy (relay) for HTTP and RTMP traffic when used through the Java New IO (NIO) endpoints to a LiveCycle Data Services server deployed in your application tier. Hence, enterprises can now deploy business logic securely in the application tier without compromising scalability or performance.
Quality of service
Flex applications running in Adobe Flash Player can cache data, execute business logic, and open network connections. This enables new kinds of web applications that are difficult or impossible to implement with HTML/AJAX.
LiveCycle Data Services 3 adds two new features:
Reliable communications and data throttling. Additionally, LiveCycle Data Services 3 provides a tool for measuring how well applications perform under load.
Reliable communications
Before LiveCycle Data Services 3, the Flash client application and the server application made the best attempt to send requests and obtain responses, but communications were not guaranteed to reach the recipient. LiveCycle Data Services 3 supports an acknowledge capability that enables all communications between Flex-based Flash applications and the LiveCycle Data Services server to be guaranteed. All that you have to do is mark the LiveCycle Data Services server destination as reliable.
This enables new capabilities and enhanced web applications.
Data throttling
Data throttling is an extension of the messaging infrastructure in LiveCycle Data Services 3. Data throttling reduces or increases the amount of data that is streamed based on the speed at which Flash Player processes data.
LiveCycle Data Services 3 supports several options for throttling data, including adaptive throttling. With adaptive throttling, the LiveCycle Data Services server can adjust the data streaming rate automatically without any manual intervention. Because the LiveCycle Data Services server may be able to provide data faster than the client can process, it supports multiple options for developers to control excess data.
Load testing tool
LiveCycle Data Services ships a Java-based load/stress testing tool. Developers can now create thousands of virtual clients to test applications deployed with LiveCycle Data Services. This tool supports all of the protocols supported by LiveCycle Data Services 3, including RTMP and HTTP.
Known issues and API changes
- Data Management Service: The fix for LCDS-876 required a public Java API change. The DataMessage.setUpdateBody method has been renamed as DataMessage.modifyUpdateMessageBody.
- FBR-134 - Model-driven development: Using the same entity backed by the same database table in multiple models is not supported.
- FBR-317 - Model deployment: When deploying a model to the Model Assembler, you cannot have a an entity property named "id" that is not an identity property. This is due to a bug in the Hibernate libraries used in the Model Assembler persistence layer.
- FBR-383 - Model-driven development: When working with RDS, certain types of action queries such as UPDATES or DELETES that result in 0 row counts and upon being successful cause RDS to throw this "RDS: java.sql.SQLException: General error resultset closed". This should be ignored. Also, all DDL statements cause this (for example, ALTER TABLE, etc.).
Depending on the database driver used, you may not be allowed to execute queries. Again, the exception may be ignored and the statement will execute.
- LCDS-408 - JBoss 5 includes Hibernate JAR files that conflict with Hibernate JARs included in in LiveCycle Data Services. The work around is to remove the Hibernate jars included in LiveCycle Data Services in the WEB-INF/lib folder.
- FB-19843 - Data Management destination introspection in Flash Builder does not generate proper fill function for DataService destinations that use the AbstractAssembler approach.
- LCDS-744 - JDK NIO bug (in JDK 1.6 and 1.7) with epoll on Linux distros can cause selector to spin loop burning all available CPU.
- LCDS-816 - Modeler: After losing focus of the model design canvas, the entity selection glow should dim out.
- LCDS-864 - Model Assembler: After an authorization failure, local data change (delete) doesn't roll back if there is only one item in the collection.
- LCDS-895 - Modeler: The Modeler does not preserve comments.
- LCDS-907 - Modeler: Invalid entity creation: same table defined in multiple schemas creates duplicate fields in entity model.
- LCDS-931 - Model Assembler: With shared-backend set to false, the update message triggers EntityUtility LazyInitializationException in a cluster.
- LCDS-966 - Edge Server: When client connected through Edge Server over a single endpoint and subscribed to two destinations in two different application tier servers, consumer are not unsubscribed and disconnected when its MessageClient in the application tier server is invalidated.
- LCDS-1022 - Model-driven development: Deleting an entity from a model does not delete its classes from its package.
- LCDS-1057 - Model-driven development (Scenario Testing): DataGrid should display columns for derived properties.
- LCDS-1076 - Modeler Expression Builder: Cannot use "up" and "down" keyboard arrow keys to scroll through the list of functions or the function categories.
- LCDS-1093 - Modeler: Integer entity of database imported is by default auto-generated and causes a run time error.
- LCDS-1103 - Model-driven form: Adding a model-driven form in Flash Builder design mode takes a long time and causes a flicker. This does not occur when using a Flex form, or if either type of form is added in source mode.
- LCDS-1104 - Model deployment: When deploying a model to the server, application modeling technology fails to deploy a composite entity.
- LCDS-1105 - Model-driven development: Model entity string ID length attribute doesn't get enforced in the created table in the database.
- LCDS-1110 - Modeler: Drag and dropping a datasource from RDS view onto a model in the Modeler design view does nothing. However, cursor shows as 'file with plus sign' indicating it should work.
- LCDS-1113 - Model-driven development: Import incorrect package for service when entity package and service package are different.
- LCDS-1119 - Model-driven form: Using multiple model-driven forms in same application results in issues with unexpected interactions between the forms.
- LCDS-1148 - Modeler: There is a paint issue when dragging and dropping properties into cases of a variant.
- LCDS-1159 - Modeler: When adding new annotations, items and values should leave cursor on field in enter mode.
- LCDS-1167 - Model-driven development: Entity filter using a JPQL pass through query does not work if the destination also uses paging.
- LCDS-1187 - Data Management samples use a deprecated API. New versions of fill methods on the Assembler interface methods take a propertySpecifier as an argument, but the samples and a code sample in the documentation use a deprecated fill method defined on the AbstractAssembler class, which does not take a propertySpecifier as an argument: public Collection fill(List fillParameters).
Fixed issues
- BLZ-100 - AMF serialization from Java to ActionScript not working correctly for Map types.
- BLZ-134 - Adding the ability to set headers for Cache-Control and Expires for the AMF response.
- BLZ-190 - LoginManager.start()/stop() methods should call LoginCommand.start()/stop() methods.
- BLZ-214 - Map instances with enum keys return null values.
- BLZ-251 - Destination.stop() and Service.stop() methods do not do anything.
- BLZ-282 - Amf3Input instance does not correctly generate property names for AmfTrace (debug).
- BLZ-301 - Selector expressions are not cleaned up properly on unsubscribe.
- BLZ-311 - Non-RFC-2109-compliant cookies are ignored due to default HTTPClient CookiePolicy.
- BLZ-340 - The 'destination' property does not support a binding expression in MXML because it throws an RTE for null value assignment.
- BLZ-345 - AMFConnection instances do not set Content-Type header correctly.
- BLZ-376 - BlazeDS creates duplicate session cookies (JSESSIONID).
- BLZ-378 - Streaming AMF and polling AMF do not work with Internet Explorer 6 or 8.
- BLZ-379 - When no properties are defined in the channel-definition for a streaming endpoint, the default user-agent settings are not applied.
- BLZ-384 - The proxy service does not return response body for HTTP PUT and DELETE requests.
- BLZ-419 - A NullPointerException is thrown in EnumDecoder when an ActionScript String is null.
- BLZ-64 - LoginCommand.logout() method is not called when executing the RemoteObject.logout() method.
- LCDS-325 - DocumentReference instances that contain inline XML cannot be round-tripped to LiveCycle.
- LCDS-361 Dataservice.commitRequired property is false when there are changes to be committed in the cache of an AIR application.
- LCDS-368 - Infinite paging loop with paged-collection="true". Paged fill style paging when pageSize is a multiple of collection size.
- LCDS-464 - Unable to parse property class when using the Data Mapping Editor for Assembler DSCs.
- LCDS-465 - "Fill Method for Paging is not defined" exception is generated in the Data Mapping Editor for Assembler DSCs.
- LCDS-504 - GenericFlexPortlet processAction() function set mode to EDIT when it should not be.
- LCDS-541 - Channel failover doesn't work (at least for the count method) in DataService.
- LCDS-571 - RTMP logout followed by login over the same connection fails.
- LCDS-576 - RTMP connection writes stall under heavy load.
- LCDS-585 - Data management is not ignoring property change events where oldValue !=== newValue but where the properties have the same logical value (for example,. Dates with the same time).
- LCDS-626 - Removing the last item from collection using hierarchical values loses change.
- LCDS-639 - removeItemWithIdFromCollectionProperty() method does not send the deleted item to the subscriber with pagedUpdate.
- LCDS-642 - Load-on-demand tag causes an invalid collection "replace" event, which causes duplicate rows in a Tree component.
- LCDS-720 - DataService.revertChanges() method does not undo changes for managed association (using Hibernate Annotations).