The goal is to design and implement an application that would gather information about the transaction processing occurring within Narayana transaction manager. Narayana normally runs as part of the WildFly application server but has more integration.
Having a good solution for monitoring can help users to understand and solve issues connected with the transaction processing. Having the universal tool is more important in the present time where Narayana is integrated with many different systems as WildFly, Spring Boot, Camel or Apache Tomcat.
Why to build this?
In current times there is still bigger demand for easy managed system that can be monitored in simple form. However Narayana does not provide an easy way to monitor transaction processing. Especially if the user demands more details about content of the transaction itself. It would be great to find a guy who would do investigation and provide proof-of-concept that could be elaborated more in future and used in the project.
There is a tool NTA (Narayana Transaction Analyser) providing monitoring capabilities for Narayana but in a limited scope. The task would be investigate on the tool, in case rip of some of the functionality (or just get inspiration from that) and provide program that satisfy the new requirements.
The Narayana and WildFly code base will need to be investigated to obtain the desired transaction details. Next part will be to find ways how to present the transaction details in consumable form for the user.
The proof-of-concept application needs to provide the Java API (the fact the Narayana is integrated in different systems needs to be considered and extensibility is expected). The command line tool needs to be provided (as GUI is not always accessible) and if possible a draft of the graphic interface would be nice.
What you will learn?
- All about transaction in Java understanding JTA, transaction recovery, two-phase commit protocol
- What the magic abbreviation ACID means and what’s the impact of it for the application
- How Narayana and WildFly works under the cover
- You will gain experience with GUI in Java
- Creating a testing application which will be able to generate traffic for the transaction manager
- Learning to use bytecode manipulation library (expected Byteman) to be able to experiment with existing deployments
- Implementation details: programming language – possibly Java (could be discussed but a language at JVM is expected)
- Prerequisites: Java
- Expected output: proof-of-concept application
- Difficulty: depending on the final scope of the project. In general I expect the work being mid-difficult. Probably rather a bachelor thesis but the scope could be enhance and master thesis could be defended.
- Language: all materials are in english, it is preferred the thesis will be written in english too
- What is JTA: https://www.infoq.com/minibooks/JTDS
- Two phase commit: https://developer.jboss.org/wiki/TwoPhaseCommit2PC
- Code of the transaction analyser https://github.com/jbosstm/transaction-analyser
- Presentation about NTA https://docs.google.com/presentation/d/1_p_EZPAHX9xH49U6ZjrES3l_QBaexSFmX9dtxvVVopI/edit?usp=sharing
Don’t hesitate to contact me at email@example.com to get detailed information about the project.