narayana-geode-core

Provides a seamless integration of Geode/Gemfire and the Narayana standalone JTA server. Geode/Gemfire can be run as Last Resource Commit Optimization. The narayana-geode-core keeps minimal dependencies only on Geode/Gemfire and Narayana only.

License

License

Categories

Categories

Data Narayana Application Layer Libs Distributed Transactions Geo Business Logic Libraries Geospatial
GroupId

GroupId

io.datalake.geode.jta
ArtifactId

ArtifactId

narayana-geode-core
Last Version

Last Version

0.1.11
Release Date

Release Date

Type

Type

jar
Description

Description

narayana-geode-core
Provides a seamless integration of Geode/Gemfire and the Narayana standalone JTA server. Geode/Gemfire can be run as Last Resource Commit Optimization. The narayana-geode-core keeps minimal dependencies only on Geode/Gemfire and Narayana only.
Project URL

Project URL

https://github.com/tzolov/narayana-jta-geode-support

Download narayana-geode-core

How to add to project

<!-- https://jarcasting.com/artifacts/io.datalake.geode.jta/narayana-geode-core/ -->
<dependency>
    <groupId>io.datalake.geode.jta</groupId>
    <artifactId>narayana-geode-core</artifactId>
    <version>0.1.11</version>
</dependency>
// https://jarcasting.com/artifacts/io.datalake.geode.jta/narayana-geode-core/
implementation 'io.datalake.geode.jta:narayana-geode-core:0.1.11'
// https://jarcasting.com/artifacts/io.datalake.geode.jta/narayana-geode-core/
implementation ("io.datalake.geode.jta:narayana-geode-core:0.1.11")
'io.datalake.geode.jta:narayana-geode-core:jar:0.1.11'
<dependency org="io.datalake.geode.jta" name="narayana-geode-core" rev="0.1.11">
  <artifact name="narayana-geode-core" type="jar" />
</dependency>
@Grapes(
@Grab(group='io.datalake.geode.jta', module='narayana-geode-core', version='0.1.11')
)
libraryDependencies += "io.datalake.geode.jta" % "narayana-geode-core" % "0.1.11"
[io.datalake.geode.jta/narayana-geode-core "0.1.11"]

Dependencies

compile (2)

Group / Artifact Type Version
org.jboss.naming » jnpserver jar 5.0.3.GA
org.jboss.logging : jboss-logging jar 3.3.1.Final

provided (2)

Group / Artifact Type Version
org.jboss.narayana.jta : narayana-jta jar 5.6.2.Final
org.jboss : jboss-transaction-spi jar 7.5.2.Final

test (1)

Group / Artifact Type Version
junit : junit jar 4.11

Project Modules

There are no modules declared in this project.

Narayana (e.g. JBoss) JTA with Geode/GemFire

Download

Use Narayana JTA provider as global transaction manager to coordinate Geode/GemFire cache transactions along with JPA/JDBC and/or JMS resources.

Narayana is light-weight (e.g. out-of-container), embeddable global transaction manager. Narayana is JTA compliant and can be integrated with Geode/GemFire to perform XA transaction across Geode, JPA/JDBC and JMS operations.

Also Narayana supports Last Resource Commit Optiomization allowing with Geode/GemFire transactions to be run as last resources.

The narayana-geode extends the existing Geode JTA support by integrating a standalone (open-source) JTA provider and enabling LRCO for transaction-atomicity and data-consistency. The utility includes two sub-projects:

The Apache Geode(GemFire) + Narayana JTA = Global Transactions with Last-Resource Optimization explains the problem, the implemented solution and provides some how-use tips.

Narayana Geode/Gemfire Core

The narayana-geode-core library uses minimal external dependencies. Only Narayana and the Apache Geode/Gemfire APIs are needed (e.g. no dependencies on Spring or Spring Data Gemfire and so.) The narayana-geode-core README explains how to use the core utility.

Narayana Geode/Gemfire SpringBoot

The narayana-geode-springboot library extends narayana-geode-core to provide seamless integration with Spring Boot and Spring Data Gemfire (SDG).

The narayana-geode-springboot README explains how to use the core utility.

Quick Start

Show how to bootstrap a Spring Boot application that uses Narayana to manage global transactions between JPA and Gemfire (8.2.x).

  • Use the start.spring.io link to generate new Spring Boot application, pre-configured with Narayana, JPA, H2 and Gemfire 8.2.x starters.

  • Add narayana-gemfire82-springboot to the POM to enable the Narayana/Gemfire 8.2.x integration. The dependency are resolved from Maven Central

<dependency>
   <groupId>io.datalake.geode.jta</groupId>
   <artifactId>narayana-gemfire82-springboot</artifactId>
   <version>0.1.11</version>
</dependency>
  • Enable the Transaction Management and Geode Narayana JTA.
 @SpringBootApplication
 @EnableGeodeNarayanaJta
 @EnableTransactionManagement(order = 1)
 public class SampleNarayanaApplication implements CommandLineRunner {   ... }
  • Use the Spring Data idioms to create and configure JPA and Geode repositories.
public interface MyJpaRepository extends CrudRepository<JpaCustomer, Long> {...}
public interface MyGeodeRepository extends CrudRepository<GeodeCustomer, Long> {...}
@SpringBootApplication
@EnableJpaRepositories(basePackageClasses = JpaCustomer.class)
@EnableGemfireRepositories(basePackageClasses = GeodeCustomer.class)
...
  • Use the @Transactional Spring idioms to participate in a distributed transactions
@Transactional
public void addNewCustomer(String firstName, String lastName) {
   jpaRepository.save(new JpaCustomer(firstName, lastName));
   geodeRepository.save(new GeodeCustomer(666L, firstName, lastName));
}

POM dependencies

All narayana-geode dependencies can be resolved from Maven Central: io.datalake.geode.jta

Currently narayana-geode support Gemfire 8.2.x, Gemfire 9.0.x and Geode 1.1.x. See matrix for details:

POM Group POM Artifact POM Version Compatible Apache Geode/Gemfire Versions
io.datalake.geode.jta narayana-geode-core 0.1.11+ Apache Geode 1.1.x or newer, Gemfire 9.0.4 or newer
io.datalake.geode.jta narayana-geode-springboot 0.1.11+ Apache Geode 1.1.x or newer, Gemfire 9.0.4 or newer, SpringBoot 1.5.4 or newer. No SDG GA for this Geode/Gemfire version yet.
io.datalake.geode.jta narayana-gemfire82-core 0.1.11+ Gemfire 8.2.x
io.datalake.geode.jta narayana-gemfire82-springboot 0.1.11+ Gemfire 8.2.x, SpringBoot 1.5.4 or newer, Spring Data Gemfire 1.9.4

Build

To build the projects run

./mvn clean install

Versions

Version
0.1.11
0.1.10
0.1.9