Search in sources :

Example 21 with ConfigurationFactory

use of org.apache.openejb.config.ConfigurationFactory in project tomee by apache.

the class StatefulTransactionLockingTest method setUp.

@Override
protected void setUp() throws Exception {
    System.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY, LocalInitialContextFactory.class.getName());
    final ConfigurationFactory config = new ConfigurationFactory();
    final Assembler assembler = new Assembler();
    assembler.createTransactionManager(config.configureService(TransactionServiceInfo.class));
    assembler.createSecurityService(config.configureService(SecurityServiceInfo.class));
    final StatefulSessionContainerInfo statefulContainerInfo = config.configureService(StatefulSessionContainerInfo.class);
    statefulContainerInfo.properties.setProperty("AccessTimeout", "0 milliseconds");
    // containers
    assembler.createContainer(statefulContainerInfo);
    // Setup the descriptor information
    final EjbJar ejbJar = new EjbJar();
    ejbJar.addEnterpriseBean(new StatelessBean(BlueStatelessBean.class));
    ejbJar.addEnterpriseBean(new StatefulBean(RedStatefulBean.class));
    ejbJar.addEnterpriseBean(new StatefulBean(LegacyStatefulBean.class));
    assembler.createApplication(config.configureApplication(ejbJar));
}
Also used : StatefulSessionContainerInfo(org.apache.openejb.assembler.classic.StatefulSessionContainerInfo) TransactionServiceInfo(org.apache.openejb.assembler.classic.TransactionServiceInfo) StatelessBean(org.apache.openejb.jee.StatelessBean) StatefulBean(org.apache.openejb.jee.StatefulBean) ConfigurationFactory(org.apache.openejb.config.ConfigurationFactory) Assembler(org.apache.openejb.assembler.classic.Assembler) LocalInitialContextFactory(org.apache.openejb.core.LocalInitialContextFactory) SecurityServiceInfo(org.apache.openejb.assembler.classic.SecurityServiceInfo) EjbJar(org.apache.openejb.jee.EjbJar)

Example 22 with ConfigurationFactory

use of org.apache.openejb.config.ConfigurationFactory in project tomee by apache.

the class StatelessConstructorInjectionTest method setUp.

protected void setUp() throws Exception {
    super.setUp();
    System.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY, InitContextFactory.class.getName());
    final ConfigurationFactory config = new ConfigurationFactory();
    final Assembler assembler = new Assembler();
    assembler.createProxyFactory(config.configureService(ProxyFactoryInfo.class));
    assembler.createTransactionManager(config.configureService(TransactionServiceInfo.class));
    assembler.createSecurityService(config.configureService(SecurityServiceInfo.class));
    // containers
    final StatelessSessionContainerInfo statelessContainerInfo = config.configureService(StatelessSessionContainerInfo.class);
    assembler.createContainer(statelessContainerInfo);
    // Setup the descriptor information
    final EjbJar ejbJar = new EjbJar();
    ejbJar.addEnterpriseBean(new StatelessBean(FooBean.class));
    final StatelessBean bean = ejbJar.addEnterpriseBean(new StatelessBean(WidgetBean.class));
    bean.getEnvEntry().add(new EnvEntry("count", Integer.class.getName(), "10"));
    assembler.createApplication(config.configureApplication(new EjbModule(ejbJar).withCdi()));
}
Also used : StatelessSessionContainerInfo(org.apache.openejb.assembler.classic.StatelessSessionContainerInfo) EjbModule(org.apache.openejb.config.EjbModule) InitContextFactory(org.apache.openejb.core.ivm.naming.InitContextFactory) ProxyFactoryInfo(org.apache.openejb.assembler.classic.ProxyFactoryInfo) TransactionServiceInfo(org.apache.openejb.assembler.classic.TransactionServiceInfo) StatelessBean(org.apache.openejb.jee.StatelessBean) ConfigurationFactory(org.apache.openejb.config.ConfigurationFactory) Assembler(org.apache.openejb.assembler.classic.Assembler) SecurityServiceInfo(org.apache.openejb.assembler.classic.SecurityServiceInfo) EjbJar(org.apache.openejb.jee.EjbJar) EnvEntry(org.apache.openejb.jee.EnvEntry)

Example 23 with ConfigurationFactory

use of org.apache.openejb.config.ConfigurationFactory in project tomee by apache.

the class StatefulContainerTest method setUp.

protected void setUp() throws Exception {
    super.setUp();
    System.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY, LocalInitialContextFactory.class.getName());
    final ConfigurationFactory config = new ConfigurationFactory();
    final Assembler assembler = new Assembler();
    assembler.createProxyFactory(config.configureService(ProxyFactoryInfo.class));
    assembler.createTransactionManager(config.configureService(TransactionServiceInfo.class));
    assembler.createSecurityService(config.configureService(SecurityServiceInfo.class));
    // containers
    final StatefulSessionContainerInfo statefulContainerInfo = config.configureService(StatefulSessionContainerInfo.class);
    statefulContainerInfo.properties.setProperty("PoolSize", "0");
    statefulContainerInfo.properties.setProperty("BulkPassivate", "1");
    statefulContainerInfo.properties.setProperty("Frequency", "0");
    assembler.createContainer(statefulContainerInfo);
    // Setup the descriptor information
    final EjbJar ejbJar = new EjbJar();
    ejbJar.addEnterpriseBean(new StatefulBean(WidgetBean.class));
    assembler.createApplication(config.configureApplication(ejbJar));
    WidgetBean.lifecycle.clear();
    expectedLifecycle = Arrays.asList(Lifecycle.values());
    inTxExpectedLifecycle = new ArrayList<Lifecycle>();
    for (final Lifecycle lifecycle : Lifecycle.values()) {
        if (!lifecycle.name().startsWith("PRE_PASSIVATE") && !lifecycle.name().startsWith("POST_ACTIVATE")) {
            inTxExpectedLifecycle.add(lifecycle);
        }
    }
}
Also used : StatefulSessionContainerInfo(org.apache.openejb.assembler.classic.StatefulSessionContainerInfo) ProxyFactoryInfo(org.apache.openejb.assembler.classic.ProxyFactoryInfo) TransactionServiceInfo(org.apache.openejb.assembler.classic.TransactionServiceInfo) StatefulBean(org.apache.openejb.jee.StatefulBean) ConfigurationFactory(org.apache.openejb.config.ConfigurationFactory) Assembler(org.apache.openejb.assembler.classic.Assembler) LocalInitialContextFactory(org.apache.openejb.core.LocalInitialContextFactory) SecurityServiceInfo(org.apache.openejb.assembler.classic.SecurityServiceInfo) EjbJar(org.apache.openejb.jee.EjbJar)

Example 24 with ConfigurationFactory

use of org.apache.openejb.config.ConfigurationFactory in project tomee by apache.

the class ApplicationComposers method startContainer.

public void startContainer(final Object instance) throws Exception {
    originalProperties = (Properties) JavaSecurityManagers.getSystemProperties().clone();
    originalLoader = Thread.currentThread().getContextClassLoader();
    fixFakeClassFinder(instance);
    // For the moment we just take the first @Configuration method
    // maybe later we can add something fancy to allow multiple configurations using a qualifier
    // as a sort of altDD/altConfig concept.  Say for example the altDD prefix might be "foo",
    // we can then imagine something like this:
    // @Foo @Configuration public Properties alternateConfig(){...}
    // @Foo @Module  public Properties alternateModule(){...}
    // anyway, one thing at a time ....
    final Properties configuration = new Properties();
    configuration.put(DEPLOYMENTS_CLASSPATH_PROPERTY, "false");
    final EnableServices annotation = testClass.getAnnotation(EnableServices.class);
    if (annotation != null && annotation.httpDebug()) {
        configuration.setProperty("httpejbd.print", "true");
        configuration.setProperty("httpejbd.indent.xml", "true");
        configuration.setProperty("logging.level.OpenEJB.server.http", "FINE");
    }
    final org.apache.openejb.junit.EnableServices annotationOld = testClass.getAnnotation(org.apache.openejb.junit.EnableServices.class);
    if (annotationOld != null && annotationOld.httpDebug()) {
        configuration.setProperty("httpejbd.print", "true");
        configuration.setProperty("httpejbd.indent.xml", "true");
        configuration.setProperty("logging.level.OpenEJB.server.http", "FINE");
    }
    final WebResource webResource = testClass.getAnnotation(WebResource.class);
    if (webResource != null && webResource.value().length > 0) {
        configuration.setProperty("openejb.embedded.http.resources", Join.join(",", webResource.value()));
    }
    Openejb openejb = null;
    final Map<Object, List<Method>> configs = new HashMap<>();
    findAnnotatedMethods(configs, Configuration.class);
    findAnnotatedMethods(configs, org.apache.openejb.junit.Configuration.class);
    for (final Map.Entry<Object, List<Method>> method : configs.entrySet()) {
        for (final Method m : method.getValue()) {
            final Object o = m.invoke(method.getKey());
            if (o instanceof Properties) {
                final Properties properties = (Properties) o;
                configuration.putAll(properties);
            } else if (Openejb.class.isInstance(o)) {
                openejb = Openejb.class.cast(o);
            } else if (String.class.isInstance(o)) {
                final String path = String.class.cast(o);
                final URL url = Thread.currentThread().getContextClassLoader().getResource(path);
                if (url == null) {
                    throw new IllegalArgumentException(o.toString() + " not found");
                }
                final InputStream in = url.openStream();
                try {
                    if (path.endsWith(".json")) {
                        openejb = JSonConfigReader.read(Openejb.class, in);
                    } else {
                        openejb = JaxbOpenejb.readConfig(new InputSource(in));
                    }
                } finally {
                    IO.close(in);
                }
            }
        }
    }
    if (SystemInstance.isInitialized()) {
        SystemInstance.reset();
    }
    Collection<String> propertiesToSetAgain = null;
    final ContainerProperties configAnnot = testClass.getAnnotation(ContainerProperties.class);
    if (configAnnot != null) {
        for (final ContainerProperties.Property p : configAnnot.value()) {
            final String value = p.value();
            if (ContainerProperties.Property.IGNORED.equals(value)) {
                // enforces some clean up since we can't set null in a hash table
                System.clearProperty(p.name());
                continue;
            }
            final String name = p.name();
            configuration.put(name, value);
            if (value.contains("${")) {
                if (propertiesToSetAgain == null) {
                    propertiesToSetAgain = new LinkedList<>();
                }
                propertiesToSetAgain.add(name);
            }
        }
    }
    SystemInstance.init(configuration);
    if (SystemInstance.get().getComponent(ThreadSingletonService.class) == null) {
        CdiBuilder.initializeOWB();
    }
    for (final Map.Entry<Object, ClassFinder> finder : testClassFinders.entrySet()) {
        for (final Field field : finder.getValue().findAnnotatedFields(RandomPort.class)) {
            if (!field.isAccessible()) {
                field.setAccessible(true);
            }
            final String service = field.getAnnotation(RandomPort.class).value();
            final String key = ("http".equals(service) ? "httpejbd" : service) + ".port";
            final String existing = SystemInstance.get().getProperty(key);
            final int random;
            if (existing == null) {
                random = NetworkUtil.getNextAvailablePort();
                SystemInstance.get().setProperty(key, Integer.toString(random));
            } else {
                random = Integer.parseInt(existing);
            }
            if (int.class == field.getType()) {
                field.set(finder.getKey(), random);
            } else if (URL.class == field.getType()) {
                field.set(finder.getKey(), new URL("http://localhost:" + random + "/"));
            }
        }
    }
    for (final Map.Entry<Object, ClassFinder> finder : testClassFinders.entrySet()) {
        if (!finder.getValue().findAnnotatedClasses(SimpleLog.class).isEmpty()) {
            SystemInstance.get().setProperty("openejb.jul.forceReload", "true");
            break;
        }
    }
    final CdiExtensions cdiExtensions = testClass.getAnnotation(CdiExtensions.class);
    if (cdiExtensions != null) {
        SystemInstance.get().setComponent(LoaderService.class, new ExtensionAwareOptimizedLoaderService(cdiExtensions.value()));
    }
    // save the test under test to be able to retrieve it from extensions
    // /!\ has to be done before all other init
    SystemInstance.get().setComponent(TestInstance.class, new TestInstance(testClass, instance));
    // call the mock injector before module method to be able to use mocked classes
    // it will often use the TestInstance so
    final Map<Object, List<Method>> mockInjectors = new HashMap<>();
    findAnnotatedMethods(mockInjectors, MockInjector.class);
    findAnnotatedMethods(mockInjectors, org.apache.openejb.junit.MockInjector.class);
    if (!mockInjectors.isEmpty() && !mockInjectors.values().iterator().next().isEmpty()) {
        final Map.Entry<Object, List<Method>> methods = mockInjectors.entrySet().iterator().next();
        Object o = methods.getValue().iterator().next().invoke(methods.getKey());
        if (o instanceof Class<?>) {
            o = ((Class<?>) o).newInstance();
        }
        if (o instanceof FallbackPropertyInjector) {
            SystemInstance.get().setComponent(FallbackPropertyInjector.class, (FallbackPropertyInjector) o);
        }
    }
    for (final Map.Entry<Object, List<Method>> method : findAnnotatedMethods(new HashMap<Object, List<Method>>(), Component.class).entrySet()) {
        for (final Method m : method.getValue()) {
            setComponent(method.getKey(), m);
        }
    }
    for (final Map.Entry<Object, List<Method>> method : findAnnotatedMethods(new HashMap<Object, List<Method>>(), org.apache.openejb.junit.Component.class).entrySet()) {
        for (final Method m : method.getValue()) {
            setComponent(method.getKey(), m);
        }
    }
    final ConfigurationFactory config = new ConfigurationFactory();
    config.init(SystemInstance.get().getProperties());
    SystemInstance.get().setComponent(ConfigurationFactory.class, config);
    assembler = new Assembler();
    SystemInstance.get().setComponent(Assembler.class, assembler);
    final OpenEjbConfiguration openEjbConfiguration;
    if (openejb != null) {
        openEjbConfiguration = config.getOpenEjbConfiguration(openejb);
    } else {
        openEjbConfiguration = config.getOpenEjbConfiguration();
    }
    assembler.buildContainerSystem(openEjbConfiguration);
    if ("true".equals(configuration.getProperty(OpenEjbContainer.OPENEJB_EMBEDDED_REMOTABLE, "false")) || annotation != null || annotationOld != null) {
        try {
            if (annotation != null) {
                final List<String> value = new ArrayList<>(asList(annotation.value()));
                if (annotation.jaxrs()) {
                    value.add("jaxrs");
                }
                if (annotation.jaxws()) {
                    value.add("jaxws");
                }
                initFilteredServiceManager(value.toArray(new String[value.size()]));
            }
            if (annotationOld != null) {
                initFilteredServiceManager(annotationOld.value());
            }
            serviceManager = new ServiceManagerProxy(false);
            serviceManager.start();
        } catch (final ServiceManagerProxy.AlreadyStartedException e) {
            throw new OpenEJBRuntimeException(e);
        }
    }
    if (propertiesToSetAgain != null) {
        for (final String name : propertiesToSetAgain) {
            final String value = PropertyPlaceHolderHelper.simpleValue(SystemInstance.get().getProperty(name));
            configuration.put(name, value);
            // done lazily to support placeholders so container will not do it here
            JavaSecurityManagers.setSystemProperty(name, value);
        }
        propertiesToSetAgain.clear();
    }
}
Also used : InputSource(org.xml.sax.InputSource) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) Properties(java.util.Properties) URL(java.net.URL) OpenEjbConfiguration(org.apache.openejb.assembler.classic.OpenEjbConfiguration) Field(java.lang.reflect.Field) ClassFinder(org.apache.xbean.finder.ClassFinder) ConfigurationFactory(org.apache.openejb.config.ConfigurationFactory) Arrays.asList(java.util.Arrays.asList) ArrayList(java.util.ArrayList) List(java.util.List) LinkedList(java.util.LinkedList) Openejb(org.apache.openejb.config.sys.Openejb) JaxbOpenejb(org.apache.openejb.config.sys.JaxbOpenejb) InputStream(java.io.InputStream) Method(java.lang.reflect.Method) ThreadSingletonService(org.apache.openejb.cdi.ThreadSingletonService) OpenEJBRuntimeException(org.apache.openejb.OpenEJBRuntimeException) FallbackPropertyInjector(org.apache.openejb.injection.FallbackPropertyInjector) Assembler(org.apache.openejb.assembler.classic.Assembler) Map(java.util.Map) HashMap(java.util.HashMap) ServiceManagerProxy(org.apache.openejb.util.ServiceManagerProxy)

Example 25 with ConfigurationFactory

use of org.apache.openejb.config.ConfigurationFactory in project tomee by apache.

the class ScheduleTest method testSchedule.

public void testSchedule() throws Exception {
    System.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY, LocalInitialContextFactory.class.getName());
    final Assembler assembler = new Assembler();
    final ConfigurationFactory config = new ConfigurationFactory();
    assembler.createProxyFactory(config.configureService(ProxyFactoryInfo.class));
    assembler.createTransactionManager(config.configureService(TransactionServiceInfo.class));
    assembler.createSecurityService(config.configureService(SecurityServiceInfo.class));
    final EjbJar ejbJar = new EjbJar();
    //Configure schedule by deployment plan
    final StatelessBean subBeanA = new StatelessBean(SubBeanA.class);
    final Timer subBeanATimer = new Timer();
    subBeanATimer.setTimeoutMethod(new NamedMethod("subBeanA", "javax.ejb.Timer"));
    final TimerSchedule timerScheduleA = new TimerSchedule();
    timerScheduleA.setSecond("2");
    timerScheduleA.setMinute("*");
    timerScheduleA.setHour("*");
    subBeanATimer.setSchedule(timerScheduleA);
    subBeanATimer.setInfo("SubBeanAInfo");
    subBeanA.getTimer().add(subBeanATimer);
    ejbJar.addEnterpriseBean(subBeanA);
    //Configure schedule by annotation
    final StatelessBean subBeanB = new StatelessBean(SubBeanB.class);
    ejbJar.addEnterpriseBean(subBeanB);
    //Override aroundTimeout annotation by deployment plan
    final StatelessBean subBeanC = new StatelessBean(SubBeanC.class);
    final Timer subBeanCTimer = new Timer();
    subBeanCTimer.setTimeoutMethod(new NamedMethod("subBeanC", "javax.ejb.Timer"));
    final TimerSchedule timerScheduleC = new TimerSchedule();
    timerScheduleC.setSecond("2");
    timerScheduleC.setMinute("*");
    timerScheduleC.setHour("*");
    subBeanCTimer.setSchedule(timerScheduleC);
    subBeanCTimer.setInfo("SubBeanCInfo");
    subBeanC.getTimer().add(subBeanCTimer);
    ejbJar.addEnterpriseBean(subBeanC);
    final StatefulBean subBeanM = new StatefulBean(SubBeanM.class);
    ejbJar.addEnterpriseBean(subBeanM);
    final EjbJarInfo ejbJarInfo = config.configureApplication(ejbJar);
    assembler.createApplication(ejbJarInfo);
    countDownLatch.await(1L, TimeUnit.MINUTES);
    //A better way for validation ?
    int beforeAroundInvocationCount = 0;
    int afterAroundInvocationCount = 0;
    int timeoutInvocationCount = 0;
    final int size;
    synchronized (result) {
        size = result.size();
        for (final Call call : result) {
            switch(call) {
                case BEAN_BEFORE_AROUNDTIMEOUT:
                    beforeAroundInvocationCount++;
                    break;
                case BEAN_AFTER_AROUNDTIMEOUT:
                    afterAroundInvocationCount++;
                    break;
                case TIMEOUT:
                    timeoutInvocationCount++;
                    break;
            }
        }
    }
    assertEquals(3, beforeAroundInvocationCount);
    assertEquals(3, afterAroundInvocationCount);
    assertEquals(3, timeoutInvocationCount);
    assertEquals(9, size);
}
Also used : StatefulBean(org.apache.openejb.jee.StatefulBean) LocalInitialContextFactory(org.apache.openejb.core.LocalInitialContextFactory) NamedMethod(org.apache.openejb.jee.NamedMethod) ProxyFactoryInfo(org.apache.openejb.assembler.classic.ProxyFactoryInfo) TimerSchedule(org.apache.openejb.jee.TimerSchedule) TransactionServiceInfo(org.apache.openejb.assembler.classic.TransactionServiceInfo) StatelessBean(org.apache.openejb.jee.StatelessBean) Timer(org.apache.openejb.jee.Timer) ConfigurationFactory(org.apache.openejb.config.ConfigurationFactory) Assembler(org.apache.openejb.assembler.classic.Assembler) SecurityServiceInfo(org.apache.openejb.assembler.classic.SecurityServiceInfo) EjbJarInfo(org.apache.openejb.assembler.classic.EjbJarInfo) EjbJar(org.apache.openejb.jee.EjbJar)

Aggregations

ConfigurationFactory (org.apache.openejb.config.ConfigurationFactory)98 Assembler (org.apache.openejb.assembler.classic.Assembler)83 EjbJar (org.apache.openejb.jee.EjbJar)75 SecurityServiceInfo (org.apache.openejb.assembler.classic.SecurityServiceInfo)56 TransactionServiceInfo (org.apache.openejb.assembler.classic.TransactionServiceInfo)56 StatelessBean (org.apache.openejb.jee.StatelessBean)44 InitialContext (javax.naming.InitialContext)40 Properties (java.util.Properties)35 ProxyFactoryInfo (org.apache.openejb.assembler.classic.ProxyFactoryInfo)29 EjbModule (org.apache.openejb.config.EjbModule)29 LocalInitialContextFactory (org.apache.openejb.core.LocalInitialContextFactory)29 InitContextFactory (org.apache.openejb.core.ivm.naming.InitContextFactory)20 StatelessSessionContainerInfo (org.apache.openejb.assembler.classic.StatelessSessionContainerInfo)18 SingletonBean (org.apache.openejb.jee.SingletonBean)18 Context (javax.naming.Context)17 StatefulBean (org.apache.openejb.jee.StatefulBean)16 ServerFederation (org.apache.openejb.core.ServerFederation)15 EjbJarInfo (org.apache.openejb.assembler.classic.EjbJarInfo)14 AppModule (org.apache.openejb.config.AppModule)13 ContainerSystem (org.apache.openejb.spi.ContainerSystem)13