|
|
 | Summary: New features and important changes in GigaSpaces XAP 6.0.
|
Open Spaces
- Open Spaces is primarily designed to enable scaling out of stateful applications in a simple way using Spring. It is shipped as an opensource initiative from GigaSpaces that support the GigaSpaces Space Based Architecture model out of the box.
Open Spaces is useful for Spring users, SOA/EDA developers, transactional applications, real time analytics, and Web2 applications.
- It is possible to deploy an Open Spaces processing unit through a
Unknown macro: {overlib} that has been added to the GigaSpaces Management Center Deployment Wizard, and to view the deployment details Unknown macro: {overlib} .
- Spring Modules deprecation - GigaSpaces Spring Modules is no longer part of the GigaSpaces distribution, since it has been replaced by Open Spaces.
Examples
- Some GigaSpaces examples (JavaSpaces, Data Grid, JMS, and persistency examples) have been removed, as they are not supported anymore. OpenSpaces, benchmark examples, and tutorials remain under the <GigaSpaces Root>\examples folder. .NET and C++ examples exist under the <GigaSpaces Root>\dotnet\examples and <GigaSpaces Root>\cpp\examples folders (unzip the zip file and open the examples folder).
IMDG
- READ_COMMITTED Modifier – read-committed is the isolation-level in which a read operation (under a transaction or a null transaction) cannot see changes made by other transactions until they are committed. This modifier is available at the proxy level as well as at the operation level.
- Enhanced External Data Source integration - an external data source has been developed to replace the CacheLoader/CacheStore with simplified, space-like APIs. This allows seamless conversion of the space data format to a user format.
- The query mechanism of this feature uses a SQLQuery that is passed to the data source with its parameters, using the query.getParameters() method.
- When using the External Data Source and active election takes place, recovery is done from the primary space instead of the database, which is more reliable.
- Clustered Lease - in previous versions, trying to renew or cancel a lease in a replicated clustered space threw an UnknownLeaseException. You can now call lease.renew or lease.cancel on the backup space after the primary space failed, or even on the primary space in the event of its failure, and the cancel/renew are still successful.
- When using writeMultiple, updateMultiple, clear, and takeMultiple with synchronous replication, it is possible to split the Entries into smaller batches, thus providing better memory usage, stability, and scalability. For more details, see Splitting Large Batches.
- Enhanced mirror data replication - In GigaSpaces 6.0, the mirror uses an asynchronous replicated space redo-log to play back missing packets that were not sent via the source space in case it failed. Sync-replicated spaces perform a handshake to ensure consistency when data is replicated to the mirror in asynchronous manner.
- Partition ID - in previous versions, when using a partitioned space and initializing the ManageDataSource (CacheLoader), all of the data was loaded into the space, and the space filtered out the data that was irrelevant to that specific partition. In GigaSpaces 6.0, it is now possible to get the number of the partitioned space, and the overall number of partitions. This enables you to load only the data you need for that specific partition.
Messaging
- The session based messaging API is a new client API replacing the old NotifyDelegator. It was designed with the following objectives:
- Simple and unified interfaces - the current state involves three different classes: NotifyDelegator, NotifyDelegatorMultiplexer, and MulticastNotifyDelegator. These classes have no common interface and no common usage pattern.
- Single entry point - users should access all the event-related services from a single entry point.
- Extensibility - allows simple extensions for other types of event services, as well as other configuration parameters.
- Backward support - coexists with the existing API in a way that allows a deprecation period without duplicating the code.
- Support for spring bean creation/configuration.
- JMS enhancements:
- Low Latency SOA with Mule Integration - the GigaSpaces-Mule integration package has been added, including examples. Mule is based on a strong event handling paradigm. When applied to Javaspaces, it allows services to subscribe to events in the space and to publish events to a space. For more details and to download the package, see GigaSpaces-Mule Integration Package.
Manageability
- Unified Management console - the Service Grid and GigaSpaces have been integrated into one coherent product. This includes several important changes:
- One config, lib, bin, and examples directory under <GigaSpaces Root>.
- One CLI - Service Grid CLI is default, and the GigaSpaces CLI is now deprecated. This includes the removal of the gsServer shell. This change improves quality, as well as increasing the user experience and EOU.
- One Javadoc - Service Grid and GigaSpaces Javadoc now reside in the same directory.
- One logging infrastructure based on the GigaSpaces java.logging only. All Service Grid logs are now redirected to the <GigaSpaces Root>/logs directory.
- Several changes to environment variables - removal of the RIO_JARS variable, modification to the JSpaces.jar manifest classpath entry, and more.
- One UI - new UI called the GigaSpaces Management Center, merging the standalone GigaSpaces Browser and Service Grid UI.
- UI Look and Feel upgrade
- New 3D-style look and feel - enhanced look and feel of dialogs, messages, and tabs.
- Docking options added to the UI - the ability to drag different areas of the screen outside the screen, or to undock them - the specified area becomes
Unknown macro: {overlib} .
- Information regarding all connected/disconnected space proxies is now exposed in all management components (GigaSpaces Management Center, JMX, CLI):
- Client IP/ports.
- Connection time and status.
- Disconnection time, an indication and description of its cause.
- Which remote methods are executed - appears only when the proper logger is turned on.
- Which exporter is used - appears only when the proper logger is turned on.
- Information regarding pending notify templates is now exposed in all management components (UI, JMX, CLI):
- Number of pending templates in the space.
- Number of pending templates in the space per class.
- FIFO indication.
- Expiration date.
- In case the template is blocked by a specific UID, the UID is shown.
- The ability to drill in and open the notify template in the Object Inspector.
- Primary-backup indication - the GigaSpaces Management Center
Unknown macro: {overlib} , Unknown macro: {overlib} , Unknown macro: {overlib} , and CLI now show whether the space is primary or backup.
- In the GigaSpaces Management Center Cluster View, you can now
Unknown macro: {overlib} .
- The actual path from which the space/cluster/container schemas were loaded is now shown in the GigaSpaces Management Center.
- GS_INSTALL_DIR/GenericJDBCProperties can now be overridden in runtime using the SpaceFinder property object - better control when using multiple database in the same machine. For more details, see Persistency Configuration Files.
- A [flat file structure] is now supported – configuration files, (properties files, schema files, POJO mapping files, etc.) can be organized directly under the <GigaSpaces Root> folder, or under their main folder without having sub-folders.
.NET Modifications
- API changes – in GigaSpaces XAP 6.0, the .NET API has been completely refactored. Many defaults and overloads have been introduced, and the API is now aligned with the technology's standard naming conventions.
- GsSerializer.dll has been replaced with GigaSpaces.Core.dll. GsSerializer.dll is currently the only reference that is required for development.
- Event Session support – the NotifyDelegator-based event mechanism of the .NET API has been replaced with the improved Event Session mechanism.
- Metadata naming and functionality – the properties used to define metadata for .NET objects have been renamed and improved to be aligned with the GigaSpaces Java API annotations.
- Metadata inheritence – metadata definitions now support inheritence.
- gs.xml support – the ability to define space annotations using an XML file.
- Properties are supported as usable space fields. PONO objects can store data to the space using not only public fields but also properties. A specific type can define its exposure to the space for members and properties separately.
- The GUID type can be stored/read directly in/from the space and viewed in the space browser (as uuid).
- Enums: can be stored/read directly in/from the space. Using the space browsed an Enum displayed as the primitive value it represents.
- A new .NET wrapper is available for Space Local View creation.
- A new .NET wrapper is available for the GSIterator. For more details, see Space-Based .NET API.
- A new .NET wrapper is available for SQL queries. For more details, see Space-Based .NET API.
- SqlQuery functionality change – the .NET SqlQuery object functionality is now aligned with the Java object, regarding null query behavior.
Previously, a null query and string query with zero length were handled in the same way. The two queries behaved like a wild card, meaning all instances of the type sent with the query were matched by the query.
The functionality is now split into two different behaviors. A zero length string query behaves the same (described above). A null query on the other hand uses the template provided with the query for matching. SqlQuery constructors that take no template for an argument instantiate objects of the given type in the query and use it as a template.
- Default serialization mode is now Direct. For more details, see DIRECT and STANDARD mode.
- GigaSpaces XAP .NET components now use the tracing mechanism for logging/tracing, built-in with the .NET framework. This gives the user control over tracing behaviour using the standard .NET configuration schema. For more details, see Logging and Tracing.
Get more details and a full explanation of what is new in .NET.
Configuration and Environment Modifications
- The JSpaces-dl.jar has been removed - reducing codebase size, having the JSpaces-dl.jar in the same folder as the JSpaces.jar caused problems and confused users. the JSpaces.jar is the jar file that should be added into the java.rmi.server.codebase system property.
- The JSpaces-ui.jar has been added - containing all GigSpaces Mangement Center (formerly named GigaSpaces Browser) related files.
- Overwriting the java.rmi.server.codebase - setting the -Djava.rmi.server.codebase is completely user-defined, significantly minimizing overhead. (In GigaSpaces 5.2, JSpaces platform jar files were appended to the java.rmi.server.codebase, even when explicitly setting the java.rmi.server.codebase.)
- Overriding the Webster current anonymous port - it is now possible to define the port number, which can be useful when loading a few spaces with an embedded Webster, or when the specified default port 9813 is used. (In GigaSpaces 5.2, the port number was always defined dynamically, with no option to set it yourself - which caused a problem when wanting to set the java.rmi.server.codebase explicitly.)
- Running an embedded Mahalo when a container is started - a Mahalo, Reggie, Webster and a space can now run collocated, and can be set with same codebase (same httpd port).
- External Space Filter - the ability to provide an ISpaceFilter implementation including its different characteristics (priority, enabled, etc.) externally when constructing an embedded space has been added. The new FilterProvider set as part of the Java Properties class (used when calling the SpaceFinder) wraps the ISpaceFilter implementation and all of its characteristics.
SQLQuery Enhancements
- RegexQuery has been merged into SQLQuery
- It is now possible to perform Regular Expression Queries through SQLQuery, using the new rlike option.
- SQLQuery and regular template performance is identical when the SQLQuery can be executed using a regular template.
- The primary API when accessing the space is now SQLQuery - you don't need to use regular templates for simple matching and SQLQuery for complex queries.
- The SQLQuery has been enhanced to have better dynamic query support - you can replace the parameters values (assigned using ? as part of the SQL statement) via the setParameter() method. The setParameter() method lifts the limitation previous versions regarding the inability to use the same field several times as part of the SQL statement, when using the template value to fill in the parameters values.
- New SQLQuery methods have been added:
- boolean hasParameters()
- boolean hasWhereClause()
- setParameter(int, Object)
- setParameters(Object...)
JCA Revival
- Reviving the JCA connector - including updated JCA and ReplicatedSession examples and its wiki documentation for:
|