Contents
What's new
Adobe LiveCycle Data Services 3 simplifies the development of rich Internet applications using Flash and Java. LiveCycle Data Services provides tooling and client and server frameworks 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:
- Support for model-driven development of rich media applications, which makes application development better, faster, and easier
- Secure and scalable connectivity across the 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 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 with Flash Builder. This tool further simplifies how developers create enterprise-ready applications built with Flex.
Application modeling technology and the modeling editor help Flex and Java developers to be more productive. These tools 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 the DMZ. It provides secure and scalable real-time and near-real-time connectivity across the DMZ. The Edge Server forwards authenticated client requests and messages that require sensitive handling, such as database inserts, updates, and deletes, to a LiveCycle Data Services server in the secure application tier (internal network) behind the DMZ.
The Edge Server also lets you optimize application performance by configuring destinations to operate at the Edge Server tier instead of in a LiveCycle Data Services server behind the DMZ. This feature is useful for applications that use high-throughput read-only auto-synced Data Management Service destinations or subscribe-only Messaging Service destinations. These destinations can connect directly to data sources from within the DMZ rather than connect indirectly through a backing LiveCycle Data Services server. This capability removes network hops and lowers the average latency for pushing updates through these destinations to subscribed clients.
Quality of service
Applications built with Flex running in Adobe Flash Player can cache data, execute business logic, and open network connections. This feature 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 feature 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 sometimes provides 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 an entity property named "id" that is not an identity property. This restriction 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 message: "RDS: java.sql.SQLException: General error resultset closed". Ignore this message. Also, all DDL statements cause this exception (for example, ALTER TABLE, and so on). Depending on the database driver used, you sometimes are not allowed to execute queries. Again, ignore the exception and the statement executes.
- LCDS-408 - JBoss 5 includes Hibernate JAR files that conflict with Hibernate JARs included in LiveCycle Data Services. The workaround is to remove the Hibernate JAR files 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 is designed to 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 is 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 is designed to 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 runtime 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 issue does not occur when using a form application built with Flex, 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 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.
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).