public ConfigurationFactory(final boolean offline, final Chain deployerChain, final OpenEjbConfiguration configuration) { this.offline = offline; this.deploymentLoader = new DeploymentLoader(); this.deployer = deployerChain; this.sys = configuration; this.serviceTypeIsAdjustable = true; }
@Deprecated // use load(File, ExternalConfiguration) public AppModule load(final File jarFile) throws OpenEJBException { return load(jarFile, null); }
private Map<String, URL> getDescriptors(final ClassLoader classLoader, final URL pathToScanDescriptors) throws IOException { final ResourceFinder finder = new ResourceFinder("", classLoader, pathToScanDescriptors); return altDDSources(mapDescriptors(finder), false); }
public void addWebModule(final AppModule appModule, final URL warUrl, final ClassLoader parentClassLoader, final String contextRoot, final String moduleName) throws OpenEJBException { final WebModule webModule = createWebModule(appModule.getJarLocation(), URLs.toFilePath(warUrl), parentClassLoader, contextRoot, moduleName, null); addWebModule(webModule, appModule); }
public static void addWebModuleDescriptors(final URL baseUrl, final WebModule webModule, final AppModule appModule) throws OpenEJBException { final Map<String, Object> otherDD = new HashMap<String, Object>(); final List<URL> urls = webModule.getScannableUrls(); final ResourceFinder finder = new ResourceFinder("", urls.toArray(new URL[urls.size()])); otherDD.putAll(getDescriptors(finder, false)); // "persistence.xml" is done separately since we manage a list of url and not s single url try { final List<URL> persistenceXmls = finder.findAll(ddDir + "persistence.xml"); if (persistenceXmls.size() >= 1) { final URL old = (URL) otherDD.get("persistence.xml"); if (old != null && !persistenceXmls.contains(old)) { persistenceXmls.add(old); } otherDD.put("persistence.xml", persistenceXmls); } } catch (final IOException e) { // ignored } addConnectorModules(appModule, webModule); addWebPersistenceDD("persistence.xml", otherDD, appModule); addWebPersistenceDD("persistence-fragment.xml", otherDD, appModule); addPersistenceUnits(appModule, baseUrl); addWebFragments(webModule, urls); }
final URL baseUrl = getFileUrl(jarFile); doNotUseClassLoader = ClassLoaderUtil.createClassLoader(jarPath, new URL[]{baseUrl}, getOpenEJBClassLoader()); moduleClass = discoverModuleType(baseUrl, ClassLoaderUtil.createTempClassLoader(doNotUseClassLoader), true); } catch (final Exception e) { throw new UnknownModuleTypeException("Unable to determine module type for jar: " + baseUrl.toExternalForm(), e); return createAppModule(jarFile, jarPath); final ClassLoader classLoader = ClassLoaderUtil.createTempClassLoader(jarPath, urls, getOpenEJBClassLoader()); final EjbModule ejbModule = createEjbModule(baseUrl, jarPath, classLoader); addPersistenceUnits(appModule, baseUrl); final ClientModule clientModule = createClientModule(baseUrl, jarLocation, getOpenEJBClassLoader(), null); final ConnectorModule connectorModule = createConnectorModule(jarLocation, jarLocation, getOpenEJBClassLoader(), null); if (aliases != null) { for (final String alias : aliases.split(",")) { final ConnectorModule aliasModule = createConnectorModule(jarLocation, jarLocation, getOpenEJBClassLoader(), alias); connectorModules.add(aliasModule); final WebModule webModule = createWebModule(file.getAbsolutePath(), baseUrl, getOpenEJBClassLoader(), getContextRoot(), getModuleName(), config); addWebModule(webModule, appModule); otherDD.putAll(getDescriptors(finder, false));
protected AppModule createAppModule(final File jarFile, final String jarPath) throws OpenEJBException { File appDir = unpack(jarFile); try { appDir = appDir.getCanonicalFile(); final URL appUrl = getFileUrl(appDir); final ClassLoader tmpClassLoader = ClassLoaderUtil.createTempClassLoader(appId, new URL[]{appUrl}, getOpenEJBClassLoader()); final Map<String, URL> appDescriptors = getDescriptors(finder); application = unmarshal(applicationXmlUrl); for (final Module module : application.getModule()) { try { application = new Application(); final HashMap<String, URL> files = new HashMap<String, URL>(); scanDir(appDir, files, "", false); files.remove("META-INF/MANIFEST.MF"); createApplicationFromFiles(appId, tmpClassLoader, ejbModules, clientModules, resouceModules, webModules, files); for (final URL url : configurer.additionalURLs()) { try { detectAndAddModuleToApplication(appId, tmpClassLoader, ejbModules, clientModules, resouceModules, webModules, new ImmutablePair<String, URL>(URLs.toFile(url).getAbsolutePath(), url)); rarFile = unpack(rarFile); entry.setValue(rarFile.toURI().toURL());
final URL baseUrl = getFileUrl(jarFile); doNotUseClassLoader = ClassLoaderUtil.createClassLoader(jarPath, new URL[]{baseUrl}, getOpenEJBClassLoader()); moduleClass = discoverModuleType(baseUrl, ClassLoaderUtil.createTempClassLoader(doNotUseClassLoader), true); } catch (final Exception e) { throw new UnknownModuleTypeException("Unable to determine module type for jar: " + baseUrl.toExternalForm(), e); return createAppModule(jarFile, jarPath); final ClassLoader classLoader = ClassLoaderUtil.createTempClassLoader(jarPath, urls, getOpenEJBClassLoader()); final EjbModule ejbModule = createEjbModule(baseUrl, jarPath, classLoader); addPersistenceUnits(appModule, baseUrl); final ClientModule clientModule = createClientModule(baseUrl, jarLocation, getOpenEJBClassLoader(), null); final ConnectorModule connectorModule = createConnectorModule(jarLocation, jarLocation, getOpenEJBClassLoader(), null); if (connectorModule != null) { final List<ConnectorModule> connectorModules = new ArrayList<ConnectorModule>(); if (aliases != null) { for (final String alias : aliases.split(",")) { final ConnectorModule aliasModule = createConnectorModule(jarLocation, jarLocation, getOpenEJBClassLoader(), alias); connectorModules.add(aliasModule); final WebModule webModule = createWebModule(file.getAbsolutePath(), baseUrl, getOpenEJBClassLoader(), getContextRoot(), getModuleName(), config); addWebModule(webModule, appModule);
protected static AppModule createAppModule(File jarFile, String jarPath) throws OpenEJBException { File appDir = unpack(jarFile); try { appDir = appDir.getCanonicalFile(); URL appUrl = getFileUrl(appDir); Map<String, URL> appDescriptors = getDescriptors(finder); application = unmarshal(Application.class, "application.xml", applicationXmlUrl); for (Module module : application.getModule()) { try { application = new Application(); HashMap<String, URL> files = new HashMap<String, URL>(); scanDir(appDir, files, ""); files.remove("META-INF/MANIFEST.MF"); for (Map.Entry<String, URL> entry : files.entrySet()) { Class moduleType = discoverModuleType(entry.getValue(), moduleClassLoader, true); if (EjbModule.class.equals(moduleType)) { ejbModules.put(entry.getKey(), entry.getValue()); rarFile = unpack(rarFile); entry.setValue(rarFile.toURI().toURL()); scanDir(appDir, rarLibs, ""); } catch (MalformedURLException e) { throw new OpenEJBException("Malformed URL to app. " + e.getMessage(), e);
public WebModule createWebModule(final String appId, final String warPath, final ClassLoader parentClassLoader, final String contextRoot, final String moduleName, final ExternalConfiguration config) throws OpenEJBException { File warFile = new File(warPath); if (!warFile.isDirectory()) { warFile = unpack(warFile); descriptors = getWebDescriptors(warFile); } catch (final IOException e) { throw new OpenEJBException("Unable to collect descriptors in web module: " + contextRoot, e); ensureContainerUrls(); webUrls.addAll(containerUrls); final Map<String, URL[]> urls = getWebappUrlsAndRars(warFile); webUrls.addAll(Arrays.asList(urls.get(URLS_KEY))); final File[] files = unpack(URLs.toFile(url)).listFiles(); if (files != null) { for (final File f : files) { final List<URL> scannableUrls = filterWebappUrls(webUrlsArray, config == null ? null : config.customerFilter, descriptors.get(NewLoaderLogic.EXCLUSION_FILE)); addTagLibraries(webModule); addWebservices(webModule); addFacesConfigs(webModule); addBeansXmls(webModule);
URL baseUrl = getFileUrl(jarFile); moduleClass = discoverModuleType(tempURL, ClassLoaderUtil.createTempClassLoader(doNotUseClassLoader), true); } catch (Exception e) { throw new UnknownModuleTypeException("Unable to determine module type for jar: " + baseUrl.toExternalForm(), e); return createAppModule(jarFile, jarPath); EjbModule ejbModule = createEjbModule(baseUrl, jarPath, classLoader, null); addPersistenceUnits(appModule, baseUrl); ClientModule clientModule = createClientModule(baseUrl, jarLocation, OpenEJB.class.getClassLoader(), null); } else if (ConnectorModule.class.equals(moduleClass)) { String jarLocation = URLs.toFilePath(baseUrl); ConnectorModule connectorModule = createConnectorModule(jarLocation, jarLocation, OpenEJB.class.getClassLoader(), null); addWebModule(appModule, warPath, OpenEJB.class.getClassLoader(), null, moduleId); return appModule; } else if (PersistenceModule.class.equals(moduleClass)) { addPersistenceUnits(appModule, baseUrl);
protected static ConnectorModule createConnectorModule(String appId, String rarPath, ClassLoader parentClassLoader, String moduleId) throws OpenEJBException { rarFile = unpack(rarFile); baseUrl = getFileUrl(rarFile); Map<String, URL> descriptors = getDescriptors(baseUrl); Connector connector = null; URL rarXmlUrl = descriptors.get("ra.xml"); scanDir(rarFile, rarLibs, ""); for (Iterator<Map.Entry<String, URL>> iterator = rarLibs.entrySet().iterator(); iterator.hasNext();) {
protected static WebModule createWebModule(String appId, String warPath, ClassLoader parentClassLoader, String contextRoot, String moduleName) throws OpenEJBException { File warFile = new File(warPath); warFile = unpack(warFile); descriptors = getWebDescriptors(warFile); } catch (IOException e) { throw new OpenEJBException("Unable to determine descriptors in jar.", e); URL[] webUrls = getWebappUrls(warFile); ClassLoader warClassLoader = ClassLoaderUtil.createTempClassLoader(appId, webUrls, parentClassLoader); addTagLibraries(webModule); addWebservices(webModule); addFacesConfigs(webModule); return webModule;
DeploymentLoader deploymentLoader = new DeploymentLoader(); String module = (String) obj; File file = new File(module); AppModule appModule = deploymentLoader.load(file); validator.validate(appModule);
protected static void addWebModule(AppModule appModule, String warPath, ClassLoader parentClassLoader, String contextRoot, String moduleName) throws OpenEJBException { WebModule webModule = createWebModule(appModule.getJarLocation(), warPath, parentClassLoader, contextRoot, moduleName); appModule.getWebModules().add(webModule); Class moduleType = DeploymentLoader.discoverModuleType(ejbUrl, webClassLoader, true); if (EjbModule.class.isAssignableFrom(moduleType)) { File ejbFile = toFile(ejbUrl); String absolutePath = ejbFile.getAbsolutePath(); EjbModule ejbModule = createEjbModule(ejbUrl, absolutePath, webClassLoader, null); addPersistenceUnits(appModule);
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; }
final DeploymentLoader deploymentLoader = new DeploymentLoader(); final Class<? extends DeploymentModule> moduleType = deploymentLoader.discoverModuleType(url, classLoader, requireDescriptors); if (AppModule.class.isAssignableFrom(moduleType) || EjbModule.class.isAssignableFrom(moduleType) ||
Map<String, URL> descriptors = altDDSources(finder.getResourcesMap("META-INF/"), false); Map<String, URL> webDescriptors = getWebDescriptors(getFile(baseUrl)); if (webDescriptors.containsKey("web.xml") || path.endsWith(".war")) { return WebModule.class;
fillEjbJar(webModule, webEjbModule); if (isMetadataComplete(webModule, webEjbModule)) { final IAnnotationFinder finder = new org.apache.xbean.finder.AnnotationFinder(new ClassesArchive()); webModule.setFinder(finder); addWebservices(webEjbModule);
public static Class<? extends DeploymentModule> discoverModuleType(URL baseUrl, ClassLoader classLoader, boolean searchForDescriptorlessApplications) throws IOException, UnknownModuleTypeException { Set<RequireDescriptors> search = new HashSet<RequireDescriptors>(); if (!searchForDescriptorlessApplications) search.addAll(Arrays.asList(RequireDescriptors.values())); return discoverModuleType(baseUrl, classLoader, search); }