EJB-TX-Annotationen an privaten Methoden

Mit erstaunlicher Hartnäckigkeit hält sich ein Phänomen in JavaEE Anwendungen: @TransactionAttribute an privaten Methoden. So nutzlos wie irreführend, dokumentiert es die Unkenntnis des Entwicklers über die Mechanismen eines EJB-Containers:

@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
private void doSomething() {
  // start a new transaction
  ...
}

Diese Code ist überaus suggestiv und wird gerne in Code-Reviews übersehen. Eine neue Container-Transaktion wird dennoch nicht gestartet. Hierfür müsste der Container einen Interzeptor um den Aufruf von „doSomething()“ wickeln. Das wäre einerseits eine große technische Herausforderung und ist andererseits in keiner Weise durch die EJB-Spezifikation gedeckt. weiterlesen