Java EE 7 technologies

Java EE Standards my foot

One of the major advantages of Java EE is standards support, Unfortunately, let’s face it, the reality of implementations out there especially the ones that are in the “free for casual development” zone are piss poor.

I wrote up a Java EE application that tries to test as many standards as possible to see how well the following servers will fare:

  • Glassfish
  • Payara
  • WebSphere Classic
  • WebSphere Liberty Profile
  • WildFly

What have I tested?

  • CDI
    • @Produces
  • EJB
    • Stateless Session Bean
    • Singleton with startup
    • @Scheduled
    • Used for X-Forwarded-User HTTP header authentication. The concept can be applied to reverse proxy authentication systems such as Entrust TruePass or SiteMinder.
  • JPA
    • With automatic integration tests with Eclipse Link
    • Redundant check with Hibernate (which has some issues with it’s JPQL implementation)
    • Automatic schema generation
    • @MappedSuperClass
  • JDBC
    • Raw JDBC is used for really large LOBs using InputStreams to improve performance.
    • MariaDB and H2 are supported.
  • Bean Validation
    • Canadian Postal Code validation
    • Canadian SIN validation
    • WS-Addressing
    • MTOM
    • Code first (Java to WSDL)
    • Contract first (WSDL + Schema -> Java)
  • RESTful API
  • JavaScript project integration
    • Yarn
    • ReactJS
    • Webpack
  • JSF
    • PrimeFaces for UI
    • OmniFaces for some common JSF utilities
    • Bean validation integration
    • Simple CRUD application integrating with JPA.

TL;DR on the fall out

Only WebSphere Liberty Profile and WebSphere Classic (with a little code level tweak) can handle it.