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);
        }
Exemple #2
0
        protected virtual AppServerMetadata GetBootstrapMetadata()
        {
            var metadata = new AppServerMetadata();

            metadata.Name         = "[Bootstrap]";
            metadata.StatusFields = StatusInfoAttribute.GetFromType(this.GetType()).ToArray();
            return(metadata);
        }
Exemple #3
0
 public AppServerMetadata GetServerTypeMetadata(string typeName)
 {
     try
     {
         return(AppServerMetadata.GetAppServerMetadata(Type.GetType(typeName, false)));
     }
     catch
     {
         return(null);
     }
 }
Exemple #4
0
        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
            });
        }
Exemple #5
0
        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);
        }
Exemple #7
0
        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);
 }
Exemple #9
0
 /// <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)
 {
 }
Exemple #10
0
 public ProcessApp(AppServerMetadata metadata, string startupConfigFile)
     : base(metadata, startupConfigFile)
 {
 }
Exemple #11
0
 protected override IManagedApp CreateAppInstanceByMetadata(AppServerMetadata metadata)
 {
     return(new AppDomainApp(metadata, ConfigFilePath));
 }
Exemple #12
0
 protected abstract IManagedApp CreateAppInstanceByMetadata(AppServerMetadata metadata);
Exemple #13
0
 public AppDomainApp(AppServerMetadata metadata, string startupConfigFile)
     : base(metadata, startupConfigFile)
 {
 }
Exemple #14
0
 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)
 {
 }