How do I implement a logging system in my beans?
Created May 4, 2012
Richard Monson-Haefel
Using java.io is prohibited
Using the java.io package from within a bean is prohibited. The EJB 1.1 Specification, section 18.1.2 (Programming Restrictions) states the following:An enterprise bean must not use the java.io package to attempt to access files and directories in the file system. The file system APIs are not well-suited for business components to access data. Business components should use a resource manager API, such as JDBC API, to store data.
The EJB 1.1 specification is available for download from http://java.sun.com/products/ejb/docs.html
Alternative Solutions
To perform logging operations you must you a resource connection supported by the EJB programming model. EJB servers may support several resource connection options, which can be used to log events as shown below:
- JDBC (javax.sql.DataSource) : Write log events in to a relational database.
- URL (java.net.URL) : Write log events to a custom logging server or post them to a web server.
- JavaMail (javax.mail.Session) : E-mail log events to a special account
- JMS (javax.jms.QueueConnectionFactory | javax.jms.TopicConnectionFactory) : Send the log events as messages.