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

Reply via email to