hi again ok, I give up :S
I'm trying run this simple REST test with embedded OpenEjb but I can bang my head against the table and it just doesn't want to pick up my @LocalClient and rest services. I have other projects with similar code where it works sort of but I can't spot the difference. As you will see I tried everything :( git clone https://github.com/amanica/tomee-embedded-trial.git mvn clean test -Dtest=PingRSEmbeddedOpenEjbTest org.apache.openejb.OpenEjbContainer$NoModulesFoundException: No modules found to deploy. 1)Maybe descriptors are placed in incorrect location. Descriptors could go under: <base-dir>/META-INF or <base-dir>/WEB-INF but not directly under <base-dir> Check 'Application Discovery via the Classpath' docs page for more info 2)Maybe no modules are present in the classpath. Is 'openejb.base' system property pointing to the intended location? at org.apache.openejb.util.Exceptions.newNoModulesFoundException(Exceptions.java:98) at org.apache.openejb.OpenEjbContainer$Provider.load(OpenEjbContainer.java:549) at org.apache.openejb.OpenEjbContainer$Provider.createEJBContainer(OpenEjbContainer.java:354) at javax.ejb.embeddable.EJBContainer.createEJBContainer(EJBContainer.java:56) at com.example.AOpenEjbTest.getContext(AOpenEjbTest.java:74) at com.example.AOpenEjbTest.inject(AOpenEjbTest.java:51) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) $ find -iname "*.xml" ./src/main/webapp/WEB-INF/web.xml ./src/main/webapp/META-INF/context.xml ./src/main/resources/META-INF/ejb-jar.xml ./src/main/resources/META-INF/persistence.xml ./src/test/resources/META-INF/application-client.xml ./src/test/resources/META-INF/ejb-jar.xml ./target/classes/META-INF/ejb-jar.xml ./target/classes/META-INF/persistence.xml ./target/test-classes/META-INF/application-client.xml ./target/test-classes/META-INF/ejb-jar.xml ./target/m2e-wtp/web-resources/META-INF/maven/za.co.enerweb/tomee-embedded-trial/pom.xml ./target/surefire-reports/TEST-com.example.PingRSEmbeddedOpenEjbTest.xml ./pom.xml @LocalClient public class PingRSEmbeddedOpenEjbTest extends AOpenEjbTest { @EJB private Movies movies; protected void setProperties(Properties properties) { super.setProperties(properties); properties.setProperty("openejb.validation.output.level", "VERBOSE"); properties.setProperty("openejb.embedded.remotable", "true"); properties.setProperty("openejb.log.factory", "slf4j"); properties.setProperty("openejb.tempclassloader.skip", "annotations"); properties.setProperty( "openejb.deployments.classpath.require.descriptor", "NONE"); properties.setProperty(EJBContainer.APP_NAME, "appName"); properties.put("movieDatabase", "new://Resource?type=DataSource"); properties.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver"); properties.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb"); } @Test public void ping() { final String message = WebClient.create("http://localhost:8080").path( // "/" + getClass().getSimpleName() + "/tomee-embedded-trial/MyRestApplication" + "/ping") .get(String.class); System.out.println("got message: " + message); assertEquals("pong", message); } } public abstract class AOpenEjbTest { private Context context; @Before public final void setupAOpenEjbTest() throws Exception { // needed here for users of our subclasses setUpBeforeInjection(); injectContext(); setUpAfterInjection(); } private void injectContext() throws Exception { if (context == null) { context = inject(this); } } private Context inject(final Object target) throws NamingException { Properties properties = new Properties(); setProperties(properties); Context context = getContext(properties); try { context.bind("inject", target); } catch (NamingException e) { System.out.println("Could not load context."); e.printStackTrace(); } return context; } protected Context getContext(Properties properties) { return EJBContainer.createEJBContainer(properties).getContext(); } protected void setProperties(Properties properties) { properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory"); properties.setProperty("openejb.embedded.remotable", "true"); } } Any pointers? thanks marius
