OpenEJB is a simple, lightweight Enterprise JavaBeans (EJB) container and server. You can embed OpenEJB in your own applications, or in a Web application server like Tomcat, or run it as a standalone EJB server. It supports EJB 3.0, 2.1, 2.0, and 1.1, and has partial support for EJB 3.1.
P6Spy is an open source framework for applications to intercept and log database statements. The P6Spy distribution includes P6Log, which intercepts and logs the database statements of any application that uses JDBC. This application is particularly useful for developers to monitor the SQL statements produced by EJB servers, enabling the developer to write code that achieves maximum efficiency on the server. P6Spy is designed to be installed in minutes and requires no code changes.
Log4php is a PHP port of Log4j, the most popular Java logging framework. It supports configuration through XML and properties files (with the same structure as log4j) and custom Configurators. File, RollingFile, DailyFile, Echo, Console, Mail, PEAR::Db, PHP error, Syslog or NT events, and socket appenders are supported. Simple, TTCC, Pattern, Html, and Xml Layouts are supported. It also supports Filters, custom Levels, and Loggers. Internal debugging can be switched on and off. Log4php can be used inside a class or inside a main/sub function.
JAM (JavaGen Ant Modules) allows Java/J2EE developers to create robust, test-driven build environments with just a few lines of Ant script. Builds are simplified with a standard set of commands that you customize for your project. The Maven-to-Ant bridge manages classpaths, dependencies, versioning, and resource downloads automatically. JAM modules support JBoss, Tomcat 5, Resin, Oracle OC4J, JUnit, Cactus, XDoclet, CVS, Axis, Castor, JMX EJBs, and Hibernate.
XMLImportDB provides an easy-to-use interface that allows developers to create a baseline database environment that can be embedded in their source code for use in jUnit test cases. The database environment can be described in a separate file in the same package as the tests, in a hard coded string in the test case classes, or in any other location for which a java.io.Reader can be created at runtime.