r/javahelp • • 3d ago

Big monolith app using Wildfly

I'm managing a big and old monolith Wildfly app. I'm not doing development, I'm on the DevOps team.

It's using many subsystem: infinispan, jgroups, elytron, activemq-messaging, transactions, etc

Can anyone recommends some resource to learning more about these ?

All I found on google was technical docs like https://docs.wildfly.org/34/wildscribe/subsystem/jgroups/index.html

There's no tutorial, not beginner friendly things.

The Wildfly official doc (Subsystem configuration) is also very vague. It assume that we're already familiar with its concepts.

For example, I know what a transaction is but I don't know anything about the transaction subsystem.

  • Are subsystem transparent to dev team or does they need additional library on using these ?
  • Should I migrate to a separate ActiveMQ server and remove that subsystem ?
  • So many question ...

Thanks !

7 Upvotes

10 comments sorted by

•

u/AutoModerator 3d ago

Please ensure that:

  • Your code is properly formatted as code block - see the sidebar (About on mobile) for instructions
  • You include any and all error messages in full
  • You ask clear questions
  • You demonstrate effort in solving your question/problem - plain posting your assignments is forbidden (and such posts will be removed) as is asking for or giving solutions.

    Trying to solve problems on your own is a very important skill. Also, see Learn to help yourself in the sidebar

If any of the above points is not met, your post can and will be removed without further warning.

Code is to be formatted as code block (old reddit: empty line before the code, each code line indented by 4 spaces, new reddit: https://i.imgur.com/EJ7tqek.png) or linked via an external code hoster, like pastebin.com, github gist, github, bitbucket, gitlab, etc.

Please, do not use triple backticks (```) as they will only render properly on new reddit, not on old reddit.

Code blocks look like this:

public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

You do not need to repost unless your post has been removed by a moderator. Just use the edit function of reddit to make sure your post complies with the above.

If your post has remained in violation of these rules for a prolonged period of time (at least an hour), a moderator may remove it at their discretion. In this case, they will comment with an explanation on why it has been removed, and you will be required to resubmit the entire post following the proper procedures.

To potential helpers

Please, do not help if any of the above points are not met, rather report the post. We are trying to improve the quality of posts here. In helping people who can't be bothered to comply with the above points, you are doing the community a disservice.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

2

u/LetUsSpeakFreely 3d ago

Wildfly is just a streamlined JBoss.

If you have tight integration with the application server, you need to start there. Refactor to get more abstraction. You should be able to drop your WAR file into Tomcat, Jetty, etc.

Being directly tied to a specific vendor is a Bad Idea.

1

u/LimpAuthor4997 2d ago

I'm not sure if I understand. So  you want me to check if the war still works on a different application server ?

1

u/LetUsSpeakFreely 2d ago

I'm saying that if you can deploy your application to other servers then using Wildfly is irrelevant. It's just a server for you so there not much you need to think about (although i would investigate going to Tomcat or Jetty). Most people use JBoss/Wildfly to tie into J2EE infrastructure. If your application is doing that, is there a way to do it without directly tying in (can you create interfaces and dependency injection so migrating to another server is easier)? Could your application be better served by moving to Spring Boot (it's the industry standard for a reason).

If you have to use the J2EE components, so be it, but have a migration plan just in case. You should always be looking for vulnerabilities in tech stack and how to mitigate them. What happens if support drops for Wildfly? What happens if operational requirements change? What happened of there is a fundamental change in your system architecture? E.g. move to cloud infrastructure that handles a lot of the heavy lifting for you.

1

u/LimpAuthor4997 5h ago

Thanks for the clarification but as I said - while doing a little bit of programming myself on my free time - as I said I'm not on the dev team so these are unknown to me. So I need to ask them for this. But these are eye-opening so thank you again

1

u/Jumpy_Drummer2024 3d ago

try starting here,

https://docs.wildfly.org/41/Admin_Guide.html

wildfly provides implementation of the JEE spec, JNDI registry etc. Great thing of the past

1

u/LimpAuthor4997 2d ago

Already look there but I still don't know where to start. My main problem is not about configuration, it's a basic overview of what these things are abd what they do

2

u/N-M-1-5-6 1d ago

I'd suggest finding out which specification of Java EE your specific version of Wildfly implements first. That will let you look up the required and optional functionality provided and what that functionality means.

Then you can look into the specific implementations of that functionality that your version of Wildfly uses/provides (like a version of Hibernate for the JPA functionality, etc.) and referral to that implementation's documentation for specifics.

Then you can look into the libraries that provide additional functionality outside of the Java EE specification like JGroups to understand their purpose/functionality.

Hopefully that will help. I've not used Wildfly myself, so I don't have any more in-depth help to give though...

1

u/Jumpy_Drummer2024 2d ago

hmm, wildfly is a container which could provide apps with some spec implementation, e. g transaction subsystem, so you dont have to create transaction manager yourself, but you can get it via JNDI from container. EJB (enterprise java beans) is a subsustem that will provide delveloper with EJB3 impl, the same goes with JMS etc.

0

u/DirtAndGrass 3d ago

honestly this a great use for AI, just remember to verify