protected AppServerMetadata GetServerTypeMetadata(string serviceTypeName) { AppDomain validateDomain = null; AppServerMetadata metadata = null; try { validateDomain = AppDomain.CreateDomain("ValidationDomain", AppDomain.CurrentDomain.Evidence, AppDomain.CurrentDomain.BaseDirectory, string.Empty, false); AssemblyImport.RegisterAssembplyImport(validateDomain); var validatorType = typeof(TypeValidator); var validator = (TypeValidator)validateDomain.CreateInstanceAndUnwrap(validatorType.Assembly.FullName, validatorType.FullName); metadata = validator.GetServerTypeMetadata(serviceTypeName); } finally { if (validateDomain != null) { AppDomain.Unload(validateDomain); } } return(metadata); }
protected virtual AppServerMetadata GetBootstrapMetadata() { var metadata = new AppServerMetadata(); metadata.Name = "[Bootstrap]"; metadata.StatusFields = StatusInfoAttribute.GetFromType(this.GetType()).ToArray(); return(metadata); }
public AppServerMetadata GetServerTypeMetadata(string typeName) { try { return(AppServerMetadata.GetAppServerMetadata(Type.GetType(typeName, false))); } catch { return(null); } }
public RemoteTypeLoadResult <AppServerMetadata> GetServerMetadata(string serverTypeName) { Lazy <IAppServer, IAppServerMetadata> lazyServerFactory = null; try { lazyServerFactory = m_ExportProvider.GetExports <IAppServer, IAppServerMetadata>() .FirstOrDefault(f => f.Metadata.Name.Equals(serverTypeName, StringComparison.OrdinalIgnoreCase)); } catch (ReflectionTypeLoadException e) { var msg = e.Message; foreach (var le in e.LoaderExceptions) { msg += Environment.NewLine + le.Message; } return(new RemoteTypeLoadResult <AppServerMetadata> { Message = msg }); } AppServerMetadata metadata = null; try { if (lazyServerFactory != null) { metadata = new AppServerMetadata(lazyServerFactory.Metadata, lazyServerFactory.GetExportType()); } else { metadata = AppServerMetadata.GetAppServerMetadata(Type.GetType(serverTypeName, true, true)); } } catch (Exception e) { return(new RemoteTypeLoadResult <AppServerMetadata> { Message = e.Message + Environment.NewLine + e.StackTrace }); } return(new RemoteTypeLoadResult <AppServerMetadata> { Result = true, Value = metadata }); }
protected IsolationApp(AppServerMetadata metadata, string startupConfigFile) { State = ServerState.NotInitialized; m_Metadata = metadata; var isolationStatusFields = StatusInfoAttribute.GetFromType(this.GetType()); if (isolationStatusFields.Any()) { if (m_Metadata.StatusFields != null && m_Metadata.StatusFields.Any()) { m_Metadata.StatusFields = m_Metadata.StatusFields.Union(isolationStatusFields).ToArray(); } else { m_Metadata.StatusFields = isolationStatusFields.ToArray(); } } StartupConfigFile = startupConfigFile; }
private AppServerMetadata PrepareStatusMetadata(AppServerMetadata serverMetadata) { if (!StatusMetadataExtended) { return(serverMetadata); } var additionalAttrs = this.GetType() .GetCustomAttributes(typeof(StatusInfoAttribute), true) .OfType <StatusInfoAttribute>() .ToArray(); if (additionalAttrs.Length == 0) { return(serverMetadata); } var list = serverMetadata.StatusFields.ToList(); list.AddRange(additionalAttrs); serverMetadata.StatusFields = list.ToArray(); return(serverMetadata); }
protected override AppServerMetadata GetAppServerMetadata(IServerConfig serverConfig) { AppDomain validateDomain = null; AppServerMetadata metadata = null; try { validateDomain = AppDomain.CreateDomain("ValidationDomain", AppDomain.CurrentDomain.Evidence, IsolationApp.GetAppWorkingDir(serverConfig.Name), string.Empty, false); AssemblyImport.RegisterAssembplyImport(validateDomain); validateDomain.SetData(typeof(IsolationMode).Name, ConfigSource.Isolation); var validatorType = typeof(RemoteAppTypeValidator); var validator = (RemoteAppTypeValidator)validateDomain.CreateInstanceAndUnwrap(validatorType.Assembly.FullName, validatorType.FullName); var result = validator.GetServerMetadata(serverConfig.Type); if (!result.Result) { Logger.Error(result.Message); return(null); } metadata = result.Value; } finally { if (validateDomain != null) { AppDomain.Unload(validateDomain); } } return(metadata); }
protected IsolationAppServer(string serverTypeName, AppServerMetadata serverMetadata) { State = ServerState.NotInitialized; ServerTypeName = serverTypeName; m_ServerMetadata = PrepareStatusMetadata(serverMetadata); }
/// <summary> /// Initializes a new instance of the <see cref="ProcessAppServer" /> class. /// </summary> /// <param name="serverTypeName">Name of the server type.</param> /// <param name="serverMetadata">The server metadata.</param> public ProcessAppServer(string serverTypeName, AppServerMetadata serverMetadata) : base(serverTypeName, serverMetadata) { }
public ProcessApp(AppServerMetadata metadata, string startupConfigFile) : base(metadata, startupConfigFile) { }
protected override IManagedApp CreateAppInstanceByMetadata(AppServerMetadata metadata) { return(new AppDomainApp(metadata, ConfigFilePath)); }
protected abstract IManagedApp CreateAppInstanceByMetadata(AppServerMetadata metadata);
public AppDomainApp(AppServerMetadata metadata, string startupConfigFile) : base(metadata, startupConfigFile) { }
protected override IManagedApp CreateAppInstanceByMetadata(AppServerMetadata metadata) { return((IManagedApp)Activator.CreateInstance(Type.GetType(metadata.AppType, true, true))); }
/// <summary> /// Initializes a new instance of the <see cref="AppDomainAppServer" /> class. /// </summary> /// <param name="serverTypeName">Name of the server type.</param> /// <param name="serverMetadata">The server metadata.</param> public AppDomainAppServer(string serverTypeName, AppServerMetadata serverMetadata) : base(serverTypeName, serverMetadata) { }