/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * <p/> * http://www.apache.org/licenses/LICENSE-2.0 * <p/> * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.superbiz.troubleshooting; import junit.framework.TestCase; import javax.annotation.Resource; import javax.ejb.EJB; import javax.ejb.embeddable.EJBContainer; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.transaction.UserTransaction; import java.util.List; import java.util.Properties; //START SNIPPET: code public class MoviesTest extends TestCase { @EJB private Movies movies; @Resource private UserTransaction userTransaction; @PersistenceContext private EntityManager entityManager; public void setUp() throws Exception { Properties p = new Properties(); p.put("movieDatabase", "new://Resource?type=DataSource"); p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver"); // These two debug levels will get you the basic log information // on the deployment of applications. Good first step in troubleshooting. p.put("log4j.category.OpenEJB.startup", "debug"); p.put("log4j.category.OpenEJB.startup.config", "debug"); // This log category is a good way to see what "openejb.foo" options // and flags are available and what their default values are p.put("log4j.category.OpenEJB.options", "debug"); // This will output the full configuration of all containers // resources and other openejb.xml configurable items. A good // way to see what the final configuration looks like after all // overriding has been applied. p.put("log4j.category.OpenEJB.startup.service", "debug"); // Will output a generated ejb-jar.xml file that represents // 100% of the annotations used in the code. This is a great // way to figure out how to do something in xml for overriding // or just to "see" all your application meta-data in one place. // Look for log lines like this "Dumping Generated ejb-jar.xml to" p.put("openejb.descriptors.output", "true"); // Setting the validation output level to verbose results in // validation messages that attempt to provide explanations // and information on what steps can be taken to remedy failures. // A great tool for those learning EJB. p.put("openejb.validation.output.level", "verbose"); EJBContainer.createEJBContainer(p).getContext().bind("inject", this); } public void test() throws Exception { userTransaction.begin(); try { entityManager.persist(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992)); entityManager.persist(new Movie("Joel Coen", "Fargo", 1996)); entityManager.persist(new Movie("Joel Coen", "The Big Lebowski", 1998)); List<Movie> list = movies.getMovies(); assertEquals("List.size()", 3, list.size()); } finally { userTransaction.commit(); } // Transaction was committed List<Movie> list = movies.getMovies(); assertEquals("List.size()", 3, list.size()); } } //END SNIPPET: code