Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 3 years ago.
Improve this question
I am writing a distributed system in which jobs (processes) will be run on multiple nodes (LINUX machines).
I want to be able to launch job on these machines, terminate a job (kill), monitor what is running on each machine.
I am looking for a framework (preferably in Java) which I can use to implement this solution.
I have looked at using the underlying components that frameworks like Hadoop or Akka use but have not come up with anything satisfactory.
A few additional constraints on what I'm looking for:
It should have reasonable proliferation into production grade projects
It should allow me to launch UNIX processes written in arbitrary languages
It should be open source
It should be lightweight -- An answerer has suggested I look at agent based frameworks -- though these satisfy the requirements I've posted -- I've found them to be very heavy weight. I'm looking for something that really fulfills the stated requirements and does not require me to adopt a more comprehensive methodology.
Thanks.
It's called multi-agent system and there are several frameworks available that you can use:
JADE
Janus
Ascape
Cougar
JIAC
Boris
Swarm
Related
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I have used Spring state machine with some basic Spring MVC application. I have to admit, it is pretty easy to configure and use.
But it has many limitations as well, mainly because of it being in very early stages of development.
I also came across some workflow engines like Activiti which is an open-source workflow engine written in Java and stateless4j which is a Lightweight Java State Machine. They look much more polished and sophisticated.
I wanted to know what is the difference between these and Spring State Machine (Advantages or disadvantages).
I would say so a Workflow Engine is a subset of State Machine. With a State Machine you can do much more things and you can think a Workflow Engine like a library for a State Machine, with use cases that are pre-configured but when you want something out of ordinary then you have to make your hands dirty again with a State Machine.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
My system setup is like: Application A takes requests from outside world and communicates with the backend REST apis. REST api also communicates with mysql database.
My requirement is to have a tool from which I can just monitor the resource usage and may be the performance of the web server. I want to have graphs for the resource usage which means I need historical data otherwise I would have just used the windows task manager to see the resource usage.
This means I do not need any load generator(that will be done by the Application A) just a resource monitor.
I googled and found tools like appdynamics, Nagios, munin but not sure if they are what I need. I haven't done performance testing earlier so there's lot of confusion.
Just looking for some guidance.
Thanks
If we are talking about "run tool-get result" the best option - Java Mission Control. It's free in test environment. You need to pay only for some features in production. It's much better than old VisualVM.
You can write a data to file using Flight Recorder. You can setup start point and duration. You just need to start your application like this:
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=duration=60s,filename=myrecording.jfr
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
How can i make a Java program which can update itself. I make this program for use within small team. I do not need any advanced features. I just need a simple and minimal solution.
Java Web Start is meant specifically for this. You ship one jnlp file, and java takes care of fetching the newest version from a server.
Apart from that, you can download updated classes and replace them at runtime.
What do you mean by self-updating ?
If you mean that it changes its behavior at runtime (which is rare), you could create code that writes java code, compiles it, and loads it from within a running program. I've seen that done.
The more common scenario is to have a core program with plug-ins, where the plug-ins themselves can be updated at runtime. The simplest way to do this is simply to use interfaces for these services and then load instantiations of these types at runtime. However, writing a fully robust plug-in framework is usually reinventing the wheel. There are many existing architectures such as OSGi.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
There are a number of questions related to profiling a java application, but I'm wondering if these recommendations also apply to profiling a web-based (tomcat) java application?
Are there specific tools that a better than others? Or is the assumption that most java applications these days are web-based, and the existing questions/recommendations apply to web based applications?
You can start with jvisualvm in the Sun 6 JDK which allows you to attach to a running JVM and gather basic memory and cpu profiling data. This allows you to get a rough idea of what is going on, and if better profiilng tools are necessary.
I have used JProfiler, JProbe, and DynaTrace. DynaTrace is the most expensive choice but I found it as the most useful one so far. They also have a DynaTrace Ajax Client that's free and lets you profile on the front end side (java script execution, ajax calls, rendering time, etc). You can also use Fiddler to capture execution times.
I've tried JAMon, App Dynamics Lite, and JavaMelody and found JavaMelody to be the best and most compatible of each of them. It is easy to install and provides all the data you need to find the slow web requests, jsp pages, errors, and sql queries. It provides great summary data and charts. It also has very little overhead so it could be used in production instances. It will show you your cpu, ram, and thread utilization. You can't drill down to the nitty gritty per-line profiling like other tools, but it can point you in the right direction to find bottlenecks.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
Java process control is notoriously bad - primarily due to inadequate support by the Java VM/JDK classes (e.g. java.lang.Process).
I am wondering, are there any good open source libraries out there that are reliable.
The requirements would be:
OSS
Start/Stop processes
Manage STDIN and STDOUT
cross platform (at least Linux,
Windows, Solaris, HP, and IBM in
that order)
(optional) restartable
(desirable) mature
How about Apache Commons Exec?
Java Service Wrapper might be what you're looking for. It's cross-platform, can be used to start things as a Windows service, capture IO, and generally completely manage any java app. It's very light weight and well designed. Atlassian uses it to wrap their products (Jira, Bamboo, etc), so it's battle tested.
One more requirement... cross platform support for killing of an orphaned process. With java.lang.Process (and Apache Commons Exec), there is no way to kill external processes when the Java application does a hard stop (kill -9). I'd really like to find a library that can handle the problem better.
One solution may be to store PIDs in some resource on disk, and then kill the processes on restart of the Java application. Of course, this would be platform dependent, so good a cross platform library would be fantastic.