Skip to content

Commit

Permalink
latest dev to github
Browse files Browse the repository at this point in the history
  • Loading branch information
GuyPardon committed Mar 12, 2024
0 parents commit 115834e
Show file tree
Hide file tree
Showing 480 changed files with 47,169 additions and 0 deletions.
Binary file added .github/Atomikos_Logo_Background.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
21 changes: 21 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
name: Bug report
about: Create a report to help us improve our next community release!

---

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:

1. What you were doing (or trying to do)
1. What happened
1. What you expected to happen instead
1. What TransactionsEssentials version you are using

**Additional context**
Add any other context about the problem here.

_I understand that this project is not intended for support - because bug reports may or may not be considered for inclusion some day (in a future release). If this is issue is important to me then I can go to https://www.atomikos.com/Main/SupportOverview and arrange a paid support subscription._
17 changes: 17 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
name: Feature request
about: Suggest an idea for this project

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.
Binary file added .github/atomikos_horizontal_logo.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/inconsistency.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
_Write your description here. BTW we're really honoured to receive your help, but please understand that some pull requests may be rejected for several reasons - in particular because it might conflict with the commercial offerings of Atomikos. Without making money on something, we would not have been able to give TransactionsEssentials for free in the first place! Thanks for understanding..._


9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
private/
specs/
target/
.hg/
.settings/
.classpath
.hgignore
.hgtags
.project
14 changes: 14 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
language: java

jdk:
- openjdk6

install: mvn install -DskipTests=true -Popensource

script: mvn clean test -Popensource


notifications:
email:
- [email protected]
- [email protected]
12 changes: 12 additions & 0 deletions CODE-OF-CONDUCT.MD
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Our Code of Conduct

We try to manage this community with 2 simple rules:

1. Focus on improving TransactionsEssentials and its user-friendliness.
1. Intend no harm towards fellow members.

Let these rules guide everything you say and do here.

## Reporting Violations

If you suspect any violations then let us know by emailing to webmaster at atomikos dot com.
62 changes: 62 additions & 0 deletions CONTRIBUTING.MD
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# Contributing to Atomikos TransactionsEssentials

Thank you very much for considering a contribution to our project!

Please follow the guidelines on this page to make things go smooth...

## Most Wanted

We're happy with all the help we can get (and you want to give), but we think that the following would be the most useful contributions:

- Vote on existing feature requests you need most - so we know which ones are priority for the community.
- Give feedback on planned features before we build them - so we can avoid implementing useless things.
- Report on missing features so we can make our product better for you. Better still: send us a PR with the implementation.
- Did you already fork and make changes for yourself? Why not send us a PR to check if we can use this, too.
- Report bugs - so we can maximize stability (or even better if you can: send us a PR with a fix).
- Create some visibility by starring the project, blogging about it, ...

## How to Request a Feature

You can request a new feature by opening an issue and choosing the feature request template.

## How to Report a Bug

You can report bugs by opening an issue and choosing the bug report template.

## How to Contribute Code (Features or Fixes)

1. If you need inspiration: check our open issues with contribution labels (i.e., ["good first issue"](https://github.com/atomikos/transactions-essentials/labels/good%20first%20issue) or ["help wanted"](https://github.com/atomikos/transactions-essentials/labels/help%20wanted))...
1. Implement a minimal set of changes in your fork of our sources.
1. Create a pull request for us to merge.
1. As part of the pull request, you will be asked to accept our contributor license terms.


## Other Ways to Contribute

1. Vote on issues you find useful - this will help us prioritize work for the future releases!
1. Give feedback on planned features before we build them - so we can do them the right way.
1. Help us grow this community by [recommending us](https://www.atomikos.com/Main/RecommendUs) or starring this repository.
1. Feel free to share bug reports, usage problems or clarity issues...
1. Help us learn: [share your story](https://www.surveymonkey.com/r/XMS5987) so we can use your insight to improve the project.
1. Share configuration examples (or other useful documentation) on our [documentation wiki](https://www.atomikos.com/Documentation).
1. Write a blog post about how you use this project.
1. Request a new feature if you find that useful functionality is missing.
1. Consider getting a paid subscription so we (Atomikos) can continue working full-time on this technology :-)

## How Pull Requests Can Get Accepted

- We review every pull request, although it may take a while.
- Please respond to any questions why might have - so we can accept your pull request.
- Issues for which we had questions but receive no answer within 2 weeks will likely be closed without being incorporated.
- Accepted pull requests require post-processing on our end, because we typically add the required tests to our test suites. We'll probably also change the code here and there to match our design style.

## What If... My Pull Request Is Rejected?

It happens, don't take it personally:

- Our open source work is only sustainable because of the money we make on commercial support and power features, so we may reject pull requests that we believe to be in conflict with our commercial distribution. Otherwise, there would not be this open source code base to contribute to in the first place...
- We try to keep the product scope focused so we may also reject pull requests that we feel are not aligned with our long-term vision.

You can also look at it in a positive way: here on github it is easy to fork and modify whatever you like, so the project fits your specific needs. In some cases, those needs overlap with our vision and that's the perfect pull request. In other cases, there is not much overlap - but then you still have your fork with your custom changes. That's a lot better than in the past, when we did not have a public repository at all.

_Thanks for your understanding!_
17 changes: 17 additions & 0 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
pipeline {
agent any
tools {
maven 'maven-3.6.0'
}
// Use the pomfix tool to validate that bundle dependencies are properly declared
stage('Build') {
steps {
retry(3) {
checkout scm
}
withMaven(maven: 'maven-3.6.0', jdk: 'jdk8-latest', mavenOpts: '-Xmx1024m -Xms512m') {
sh 'mvn clean install'
}
}
}
}
4 changes: 4 additions & 0 deletions LICENSE.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
LICENSE CONDITIONS

See http://www.atomikos.com/Main/WhichLicenseApplies for details.

133 changes: 133 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
<p align="center"><font size="+2"><strong>Atomikos TransactionsEssentials: light-weight distributed transactions
</strong></font></p>


<p align="center"><img src=".github/Atomikos_Logo_Background.png" width="360" height="270" alt="Atomikos Logo"></p>

<p align="center"><em>Community development "mirror" of <a href="https://www.atomikos.com/Main/TransactionsEssentials">atomikos.com/Main/TransactionsEssentials</a>.</em></p>

<p align="center"><font size="+1"><em><strong>New contributors welcome - help us shape transactions for the cloud!</strong></em></font></p>

<p align="center"><em>Please <a href="https://github.com/atomikos/transactions-essentials/stargazers">star this project</a> to help us grow. Thanks in advance!</em></p>




## Highlights

* **Distributed transaction management for Java** - so your Java application gets **instant reliability** without design efforts in your code.
* **Microservices support** - so you can have one global transaction spanning several services.
* **JEE compatible** - so it integrates effortlessly in your **Spring** or **Tomcat** configuration.
* **Javax and JakartaEE compatible** - so you can use the latest greatest ecosystem if you want to.
* **Light-weight** - so your **microservices** can use it, too.
* **Embeddable in your code** - so you can **test everything in the IDE** and avoid late integration issues at deployment time.
* **OSGi support** - so you can use OSGi containers also.
* **Connection pooling for JDBC and JMS** - so you get maximum **performance**.
* **Built-in support for Hibernate and JPA** - so you can use your favorite persistence framework.
* **Automatic crash / restart recovery** - so your incomplete **distributed transactions are cleaned up** and your data returns to a consistent state.
* **Cloud-native design** - so your applications are ready for **deployment to your cloud**.
* **Commercial support available** - if you're serious about transactions in your business.

## NEW: JakartaEE support

Relevant jars are transformed into jakarta equivalents so we support both Javax and Jakarta.

## NEW: Microservice Support

With microservices, the typical monolith ACID transaction becomes split into 2 or more local transactions, one in each microservice. This can quickly lead to inconsistencies - for instance if there are network timeouts or other failures:

<p align="center"><img src=".github/inconsistency.jpg" alt="Inconsistent Microservices"></p>

Some concrete examples of possible inconsistencies:

* For network timeouts, microservice 1 does not see the difference between a failure/rollback of microservice 2 and a commit at microservice 2. The global system state (and consistency) is undefined.
* For retries (when microservice 1 calls microservice 2 a number of times until it does succeed) we depend on microservice 2 offering a correct implementation of an idempotent consumer. This is hard and error-prone.
* Also for retries, microservice 1 has to remember that it needs to retry at microservice 2. This adds technical complexity to an otherwise simple scenario.
* For failures when invoking microservice 2 there is no easy alternative but to retry (due to the above). This means you can't have microservice 1 forget about microservice 2 and try an equivalent "competing" implementation. Why? Because it just might be that the invocation of microservice 2 did actually commit.

We allow 1 global transaction, even across separate microservices and you don't have to code anything for that. In the example shown, a failed call means rollback at microservice 2, and if you want then you can safely try an alternative microservice instead (even within the same global transaction).

Working samples are included in our <a href="https://www.atomikos.com/Main/TransactionsEssentials">official download</a>. This enables safer retries (if you do want to retry - that is your choice) plus the notion of a global commit.

For more information on how to fine-tune microservice transactions: check out our <a href="https://atomikos.teachable.com/p/microservice-transaction-patterns">online course</a>.

## Using TransactionsEssentials

### Getting Started

See [Getting Started](http://www.atomikos.com/Documentation/GettingStarted) for general documentation.

### Documentation

See documentation at [www.atomikos.com/Documentation](http://www.atomikos.com/Documentation/)

### Code Samples

Register and download from [www.atomikos.com](http://www.atomikos.com/)

### Releases

Register and download from [www.atomikos.com](http://www.atomikos.com/) and get documentation plus working sample applications

Or check [Maven Central (without the samples or documentation)](http://search.maven.org)


## Governance & Participating

### Joining

See our [Community Page](http://www.atomikos.com/Main/AtomikosCommunity) for how to join us.

### Building From Source

Pull latest from repo `git pull origin master` and try `mvn clean install -Popensource`.

### Contributing

The fastest way to contribute is by starring this project. Thank you :-)

See our [contributor guidelines](CONTRIBUTING.MD) for inspiration and guidance.

### Code of conduct

See our [code of conduct](CODE-OF-CONDUCT.MD) for details and how to report violations.

### About This Repository

This GitHub project is merged with - and updated regularly from - our internal development repository to work towards our next open source release (note: stable maintenance releases and our commercial power features are managed outside GitHub).

IMPORTANT: we (Atomikos) don't develop on GitHub ourselves (yet) so you won't see a lot of our commits here - only refreshes when we merge + push to GitHub. That is because at least initially, the sole purpose of this project is to allow interested GitHub community members to fork and contribute useful features to what we have.

Activities here are probably higher when:

- we prepare a new community release (milestone), and
- the 3 months of stabilization period after that (during which we publish lots of bug fixes)
- (check the milestones page with due dates to get an impression...)

After that, we are busy upgrading our customers and on-boarding new customers so you will see less activity here. That's because most customer work is done in our private repositories.

## Special Thanks / Featured Contributors

You know how it goes, one always forgets to mention someone - but the following fine people have all delivered memorable technical contributions to this project in one way or another.

So: **thank you!** (and apologies to the superstars not mentioned here):

- [@pascalleclercq](https://github.com/pascalleclercq)
- [@tkrah](https://github.com/tkrah)
- [@dpocock](https://github.com/dpocock)
- [@lorban](https://github.com/lorban)
- [@dandiep](https://github.com/dandiep)
- [@gregw](https://github.com/gregw)
- [@janbartel](https://github.com/janbartel)
- [@Fungrim](https://github.com/Fungrim)


## License

See our [license policy page](http://www.atomikos.com/Main/WhichLicenseApplies).

## Feedback Wanted!

Do you think something's missing on this page? Please open an issue to let us know!

_Copyright (c) 2000-2023, Atomikos - all rights reserved. Visit [www.atomikos.com](http://www.atomikos.com/) for more..._
Loading

0 comments on commit 115834e

Please sign in to comment.