protected static EjbModule createEjbModule(URL baseUrl, String jarPath, ClassLoader classLoader, String moduleId) throws OpenEJBException { // read the ejb-jar.xml file Map<String, URL> descriptors = getDescriptors(baseUrl); EjbJar ejbJar = null; URL ejbJarXmlUrl = descriptors.get("ejb-jar.xml"); if (ejbJarXmlUrl != null){ ejbJar = ReadDescriptors.readEjbJar(ejbJarXmlUrl); } // create the EJB Module EjbModule ejbModule = new EjbModule(classLoader, moduleId, jarPath, ejbJar, null); ejbModule.getAltDDs().putAll(descriptors); ejbModule.getWatchedResources().add(jarPath); if (ejbJarXmlUrl != null && "file".equals(ejbJarXmlUrl.getProtocol())) { ejbModule.getWatchedResources().add(URLs.toFilePath(ejbJarXmlUrl)); } ejbModule.setClientModule(createClientModule(baseUrl, jarPath, classLoader, null, false)); // load webservices descriptor addWebservices(ejbModule); return ejbModule; }
public ClassLoader getClassLoader() { return ejbModule.getClassLoader(); }
private void readEjbJar(EjbModule ejbModule, AppModule appModule) throws OpenEJBException { if (ejbModule.getEjbJar() != null) return; Object data = ejbModule.getAltDDs().get("ejb-jar.xml"); if (data instanceof EjbJar) { ejbModule.setEjbJar((EjbJar) data); } else if (data instanceof URL) { URL url = (URL) data; EjbJar ejbJar = readEjbJar(url); ejbModule.setEjbJar(ejbJar); } else { DeploymentLoader.logger.debug("No ejb-jar.xml found assuming annotated beans present: " + appModule.getJarLocation() + ", module: " + ejbModule.getModuleId()); ejbModule.setEjbJar(new EjbJar()); } }
public void validate(final EjbModule ejbModule) { if (ejbModule.getFinder() == null || ejbModule.getProperties().containsKey("openejb.cdi.activated")) { return; } if (ejbModule.getBeans() == null && hasAtInject(ejbModule.getFinder())) { warn(ejbModule.getModuleId(), "cdi.notEnabled", ejbModule.getModuleId()); } }
public void setClassLoader(ClassLoader classLoader) { ejbModule.setClassLoader(classLoader); if (ejbModule.getClientModule() != null) { ejbModule.getClientModule().setClassLoader(classLoader); } }
public EjbModule deploy(final EjbModule ejbModule) throws OpenEJBException { if (ejbModule.getEjbJar() != null && ejbModule.getEjbJar().isMetadataComplete()) { return ejbModule; if (ejbModule.getFinder() == null) { ejbModule.setFinder(FinderFactory.createFinder(ejbModule)); startupLogger.warning("startup.scrapeFailedForModule", ejbModule.getJarLocation()); return ejbModule; } catch (final Exception e) { final IAnnotationFinder finder = ejbModule.getFinder(); for (final EnterpriseBean bean : ejbModule.getEjbJar().getEnterpriseBeans()) { if (!(bean instanceof SessionBean)) { continue; final Class<?> clazz = ejbModule.getClassLoader().loadClass(bean.getEjbClass()); sessionBean.setSessionType(getSessionType(clazz)); } catch (final Throwable handledInValidation) { for (final EnterpriseBean bean : ejbModule.getEjbJar().getEnterpriseBeans()) { if (bean.getEjbClass() == null) { continue; ejbModule.getEjbJar().removeEnterpriseBean(bean.getEjbName()); try { final Class<?> clazz = ejbModule.getClassLoader().loadClass(bean.getEjbClass()); final String ejbName = getEjbName(bean, clazz); bean.setEjbName(ejbName);
final EjbModule earCdiModule = new EjbModule(appModule.getClassLoader(), DeploymentLoader.EAR_SCOPED_CDI_BEANS + appModule.getModuleId(), new EjbJar(), new OpenejbJar()); earCdiModule.setBeans(earBeans); earCdiModule.setFinder(earLibFinder); earCdiModule.setEjbJar(ejbJar); // EmptyEjbJar would prevent to add scanned EJBs but this is *here* an aggregator so we need to be able to do so appModule.getEjbModules().add(earCdiModule); final EjbModule ejbModule = new EjbModule(webLoader, webModule.getModuleId(), null, webEjbJar, new OpenejbJar()); ejbModule.setBeans(webAppBeansXml); ejbModule.getAltDDs().putAll(webAltDD); ejbModule.getAltDDs().put("beans.xml", webAppBeansXml); ejbModule.setFinder(finder); ejbModule.setClassLoader(webLoader); ejbModule.setWebapp(true); if (javaClass != null) { final EjbModule testEjbModule = addTestClassAsManagedBean(javaClass, tempClassLoader, appModule); testDD = testEjbModule.getAltDDs(); } else { testDD = new HashMap<>(); // ignore final EjbModule ejbModule = new EjbModule(ejbJar); ejbModule.setClassLoader(tempClassLoader); ejbModule.setFinder(finder); ejbModule.setBeans(earBeans); ejbModule.getAltDDs().put("beans.xml", earBeans); appModule.getWebModules().iterator().next().setFinder(ejbModule.getFinder());
EjbModule ejbModule = new EjbModule(webModule.getClassLoader(), getEjbModuleId(standardContext),file.getAbsolutePath(), null, null); ejbModule.setClientModule(new ClientModule(null, ejbModule.getClassLoader(), ejbModule.getJarLocation(), null, ejbModule.getModuleId())); Map<String, URL> descriptors = ejbResourceFinder.getResourcesMap("META-INF/"); descriptors = DeploymentLoader.altDDSources(descriptors, true); ejbModule.getAltDDs().putAll(descriptors); ejbModule.getClientModule().getAltDDs().putAll(descriptors); } catch (IOException e) { logger.error("Unable to determine descriptors in jar.", e);
final EjbModule webEjbModule = new EjbModule(webModule.getClassLoader(), webModule.getModuleId(), webModule.getJarLocation(), null, null); webEjbModule.setWebapp(true); webEjbModule.getAltDDs().putAll(webModule.getAltDDs()); appModule.getEjbModules().add(webEjbModule); final IAnnotationFinder finder = new org.apache.xbean.finder.AnnotationFinder(new ClassesArchive()); webModule.setFinder(finder); webEjbModule.setFinder(finder); } else { final IAnnotationFinder finder = FinderFactory.createFinder(webModule); webModule.setFinder(finder); webEjbModule.setFinder(finder); } else if (webEjbModule.getFinder() == null) { webEjbModule.setFinder(webModule.getFinder());
final EjbDeployment ejbDeployment = openejbJar.addEjbDeployment(bean); ejbDeployment.setDeploymentId(ejbName); final EjbModule e = new EjbModule(ejbJar, openejbJar); e.setClassLoader(tempClassLoader); appModule.getEjbModules().add(e); final EjbModule ejbModule = new EjbModule(ejbJar); ejbModule.setClassLoader(tempClassLoader); ejbModule.getAltDDs().put(BEANS_XML, new AssetSource(beansXml.getAsset())); ejbModule.setFinder(new FinderFactory.ModuleLimitedFinder(new FinderFactory.OpenEJBAnnotationFinder(finderArchive))); if (appModule.isWebapp()) { // war appModule.getWebModules().iterator().next().setFinder(ejbModule.getFinder()); ejbModule.getAltDDs().put(OPENEJB_JAR_XML, new AssetSource(openejbJarXml.getAsset())); ejbModule.getAltDDs().put(VALIDATION_XML, new AssetSource(validationXml.getAsset())); ejbModule.getAltDDs().put(RESOURCES_XML, new AssetSource(resourcesXml.getAsset())); is = envEntriesProperties.getAsset().openStream(); properties.load(is); ejbModule.getAltDDs().put(ENV_ENTRIES_PROPERTIES, properties); appModule.getEjbModules().iterator().next().getAltDDs().put(ENV_ENTRIES_PROPERTIES, properties); } catch (final Exception e) { LOGGER.log(Level.SEVERE, "can't read env-entries.properties", e);
public AppModule deploy(AppModule appModule) { for (EjbModule ejbModule : appModule.getEjbModules()) { Object altDD = getOpenejbJarType(ejbModule); if (altDD instanceof OpenejbJarType) { convertEjbRefs(ejbModule.getEjbJar(), ejbModule.getOpenejbJar(), (OpenejbJarType) altDD); convertMdbConfigs(ejbModule.getEjbJar(), (OpenejbJarType) altDD); mergeEntityMappings(ejbModule.getModuleId(), appModule.getCmpMappings(), ejbModule.getOpenejbJar(), (OpenejbJarType) altDD); } } return appModule; }
public static EjbModule getSystemModule() { final EjbModule module = new EjbModule(new EjbJar("openejb"), new OpenejbJar()); final OpenejbJar openejbJar = module.getOpenejbJar(); final EjbJar ejbJar = module.getEjbJar(); ejbJar.addEnterpriseBean(new StatelessBean(null, DeployerEjb.class)); ejbJar.addEnterpriseBean(new StatelessBean(null, ConfigurationInfoEjb.class)); ejbJar.addEnterpriseBean(new StatelessBean(null, MEJBBean.class)); ejbJar.addInterceptor(new Interceptor(InternalSecurityInterceptor.class)); ejbJar.getAssemblyDescriptor().addInterceptorBinding(new InterceptorBinding("*", InternalSecurityInterceptor.class.getName())); module.getMbeans().add(JMXDeployer.class.getName()); final String className = "org.apache.tomee.catalina.deployer.WebappDeployer"; if (exists(className)) { final SingletonBean bean = ejbJar.addEnterpriseBean(new SingletonBean("openejb/WebappDeployer", className)); final EjbDeployment deployment = openejbJar.addEjbDeployment(bean); deployment.getProperties().put("openejb.jndiname.format", "{deploymentId}{interfaceType.annotationName}"); final SingletonBean exceptionManager = ejbJar.addEnterpriseBean(new SingletonBean("openejb/ExceptionManagerFacade", "org.apache.tomee.catalina.facade.ExceptionManagerFacadeBean")); final EjbDeployment exceptionMgr = openejbJar.addEjbDeployment(exceptionManager); exceptionMgr.getProperties().put("openejb.jndiname.format", "{deploymentId}{interfaceType.annotationName}"); } openejbJar.getProperties().put("openejb.deploymentId.format", "{ejbName}"); openejbJar.getProperties().put("openejb.jndiname.format", "{deploymentId}{interfaceType.openejbLegacyName}"); return module; }
openejbJar.getProperties().put("openejb.deploymentId.format", "{appId}/{ejbName}"); final EjbModule module = new EjbModule(new EjbJar("tribestream-container"), openejbJar); module.setBeans(new Beans()); module.setClassLoader(new ClassLoader(loader) { }); enableJCache(module.getBeans()); Filters.packages("com.tomitribe.tribestream.container"))) .link(); module.setFinder(finder);
private AppModule createTribestreamNotificationCoreModule() { final ClassLoader loader = ParentClassLoaderFinder.Helper.get(); final EjbModule module = new EjbModule(new EjbJar(moduleName), new OpenejbJar()); // activate CDI final Beans beans = new Beans(); beans.addManagedClass(AlterPersisterObserver.class); module.setBeans(beans); // find all from current jar final File jar = JarLocation.jarLocation(Installer.class); try { module.setFinder(new AnnotationFinder( new FilteredArchive( jar.isDirectory() ? new FileArchive(loader, jar) : new JarArchive(loader, jar.toURI().toURL()), Filters.packages("com.tomitribe.tribestream.notifications.core"))) .link()); } catch (final MalformedURLException e) { throw new IllegalStateException(e); } // add unit for persistence final PersistenceUnit unit = new PersistenceUnit(unitName); unit.setJtaDataSource(dataSourceName); unit.setNonJtaDataSource(dataSourceName + "NonJta"); unit.addClass(Alert.class); unit.setExcludeUnlistedClasses(true); unit.setProperty("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=true)"); // here we are, assemble eveything final AppModule appModule = new AppModule(module); appModule.addPersistenceModule(new PersistenceModule("", new Persistence(unit))); return appModule; }
private EntityMappings getUserEntityMappings(final EjbModule ejbModule) { final Object o = ejbModule.getAltDDs().get("openejb-cmp-orm.xml"); if (o instanceof EntityMappings) { return (EntityMappings) o; } return new EntityMappings(); }
private void writeGeronimoOpenejb(EjbModule ejbModule) { try { GeronimoEjbJarType geronimoEjbJarType = (GeronimoEjbJarType) ejbModule.getAltDDs().get("geronimo-openejb.xml"); if (geronimoEjbJarType == null) return; File tempFile = File.createTempFile("geronimo-openejb-", ejbModule.getModuleId() + ".xml"); FileOutputStream fout = new FileOutputStream(tempFile); BufferedOutputStream out = new BufferedOutputStream(fout); try { JaxbOpenejbJar2.marshal(GeronimoEjbJarType.class, geronimoEjbJarType, out); logger.info("Dumping Generated geronimo-openejb.xml to: " + tempFile.getAbsolutePath()); } catch (JAXBException e) { } finally { out.close(); } } catch (Exception e) { } }
private static EjbModule addTestClassAsManagedBean(Class<?> javaClass, URLClassLoader tempClassLoader, AppModule appModule) { final EjbJar ejbJar = new EjbJar(); final OpenejbJar openejbJar = new OpenejbJar(); final String ejbName = appModule.getModuleId() + "_" + javaClass.getName(); final ManagedBean bean = ejbJar.addEnterpriseBean(new ManagedBean(ejbName, javaClass.getName(), true)); bean.localBean(); bean.setTransactionType(TransactionType.BEAN); final EjbDeployment ejbDeployment = openejbJar.addEjbDeployment(bean); ejbDeployment.setDeploymentId(ejbName); final EjbModule e = new EjbModule(ejbJar, openejbJar); e.getProperties().setProperty("openejb.cdi.activated", "false"); e.getProperties().setProperty("openejb.test.module", "true"); e.setBeans(new Beans()); e.setClassLoader(tempClassLoader); appModule.getEjbModules().add(e); return e; }
ejbModule.getProperties().put(CdiScanner.OPENEJB_CDI_FILTER_CLASSLOADER, "false"); if (isCdi(cdi, cdiInterceptors, cdiAlternatives, cdiStereotypes, cdiDecorators)) { ejbModule.setBeans(beans(new Beans(), cdiDecorators, cdiInterceptors, cdiAlternatives, cdiStereotypes)); ejbModule.setFinder(webModule.getFinder()); if (providersClasses != null) { OpenejbJar openejbJar = ejbModule.getOpenejbJar(); if (openejbJar == null) { openejbJar = new OpenejbJar(); ejbModule.setOpenejbJar(openejbJar);