Business-ready architecture. Work with an open source leader.
Try Payara Enterprise
Luxury German Vehicle Manufacturer Migrates from GlassFish to Payara Server
Download BMW Case Study PDF
I am working as a Java Team Leader, developer, analytic and also do customer support at ICZ, a.s.
My curiosity and urge to make things work better. It’s universal.
I work on a project that started in 2003 as a J2EE application, poorly designed and really badly implemented. I came to this project in 2007 and started writing first tests, but that was not possible with SJAS7, so I tried to migrate to SJAS9 and use tools of these days (f.e. EJB3Unit). It worked well and finally we migrated officially. All these years we refactored, wrote tests, and made things better… Then we finally moved to GlassFish 4 and JDK 8, but we found some fatal bugs in the app server. I created a patch but Oracle was somehow lazy – nothing for days, weeks, months… so I found a contact to Steve and the patch for Payara Server was accepted the next day, which was really surprising!
We have several clustered and non-clustered Payara Server instances in several domains with several EAR applications on them, but still no Payara Micro. Biggest and oldest application has nearly half million lines of code, some parts are Java EE 7/8 compliant, some “evil and old” J2EE, but that is not problem in runtime, only in development phase (badly designed, untestable code and lack of architecture of old code). But even those old parts can use Hazelcast, for example, and it makes them much more readable, step by step.
Yes, the project can live much longer and be both mature and new, because with its evolution we have more and more ideas to make it more effective and everything is possible. There are also some plans to rewrite unrefactorable code, and this code is smaller and smaller part of the application. Some ideas are about splitting UI and services into separated applications with perfect API and running “clouds” – there would be much more space for the “micro” and other variants. But the decision on the future of the project also depends on a customer and our managers…
We use Embedded Payara Server with Arquillian in integration tests – the most useful feature is full application server as a test dependency with full support of features of the target platform. And also possibility to “hack” them, for example to use mocks partially or to turn some service down and up in a running test and watch if the application would stand or crash.
In production it is verbose logging, monitoring, management of resources, instances, clusters, etc. via GUI and asadmin, for which we have another “scripting machine” using property files, used to share parts of configuration between developer’s, test and production environments, and to override what differs. It is much cheaper to maintain several property files than domain.xml or manual for some people… It can be run automatically and properties can be filtered – so we can start domain in Docker with some concrete version of the application in 5 minutes.
It should be more tested, it has similar technical debt in tests as our application had (but different inherited from GlassFish and you do what you can and I will try to help … soon 😉 .
I am little bit afraid of adding features to a software with bugs, but I love adding features to a software without any known bugs – Payara team and community are perfect in killing its bugs!
If you really need an application server and tools and services it offers, do that and select Payara Server! And if you have a profit, be fair and pay for support you really get. Or support dies, and then you will have problems and will be forced to pay much more to someone else – and maybe you even know how their support works ;-). This is an investment!