Note that "Java EE" is now called "Jakarta EE".

Eclipse MicroProfile (not part of Jakarta EE, but used in enterprise Java)


EJB home page

What's new in EJB 3.1? part 1 - part 2 - part3 - part 4 - part 5 - A Significant Step Towards Maturity

What's new in EJB 3.2?


Home page, FAQ (very extensive)

Extensive tutorial with many code examples

Using delivery status notifications

Using encryption: The JavaMail-Crypto API project is rather dated, but it purports to add S/MIME and OpenPGP support to JavaMail

Using DKIM: This java-utils-mail-dkim library implements DKIM

Third party extensions, e.g. local store implementations

James is an open source SMTP, POP3 and NNTP server written in Java by the good folks at Apache. Its Mailet API enables automatic processing of emails, kind of what servlets do for HTTP requests. Introductory article part 1, part 2

Aspirin is an embeddable Java SMTP server. While useful mostly for send-only situations, it has some provisions to receive mails as well (to handle bounces and such). While it's functional as it is, without setting up at least SPF and DKIM the results will likely be unsatisfactory.

Q: I'm marking my mails as SEEN, but next time I access the INBOX, they're once again presented as unread. What gives?

From the FAQ : Just because a flag exists doesn't mean the flag is supported by all mail servers/providers. For instance, besides deleting messages, the POP protocol supports none of them. ... To find out what flags are supported, ask the folder with getPermanentFlags().

Q: I'm having trouble connecting to Gmail using JavaMail; something about "starttls". What gives?

This, too, is covered in the FAQ: How do I access Gmail with JavaMail?

Q: How can I access the SMTP response code?

The Transport object can be cast to JavaDoc:com.sun.mail.smtp.SMTPTransport which has the getLastServerResponse and getLastReturnCode methods available.

Java Message Service (JMS)

Introduction and tutorial

Specification and javadocs

open source JMS implementations: ActiveMQ - OpenMQ

Java Naming and Directory Interface (JNDI)


How to go about ObtainingRemoteJndiContext ?

Introductory articles on JavaWorld? - 1) Naming Services 2) Directory Services 3) Advanced JNDI 4) Example Application

LDAP: Specification Introduction JNDI Tutorial Chapter on LDAP

Some software for using LDAP:

  • OpenLDAP - open source Java LDAP server
  • LdapTemplate - Java library that simplifies working with the JNDI/LDAP APIs

Java Management Extension (JMX)

Home page


JmxExample - code for an application making MBeans available for monitoring

Best Practices

JConsole and VisualVM are tools that can be used to access local or remove JVMs via JMX.