forked from atomikos/transactions-essentials
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 115834e
Showing
480 changed files
with
47,169 additions
and
0 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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._ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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..._ | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
private/ | ||
specs/ | ||
target/ | ||
.hg/ | ||
.settings/ | ||
.classpath | ||
.hgignore | ||
.hgtags | ||
.project |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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: | ||
- guy@atomikos.com | ||
- pascal.leclercq@gmail.com |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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!_ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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' | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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..._ |
Oops, something went wrong.