2016-12-28 3 views
2

Apache Igniteを初めて使用し、IIS WebサイトおよびWCFサービスでIgniteを使用しようとしています。私のテストケースでは、1台のPCに2つのIISホストWCFテストサービスが含まれています。私は、2つのIISアプリケーションのいずれかでIgniteをインスタンス化してから、もう一方のIISアプリケーションにアクセスしようとしています。これまでのところこれはうまくいきませんでした。 1つのIISアプリケーションでIgniteを起動すると、他のアプリケーションから「既定のグリッドインスタンスが既に開始されています」が表示されますが、他のアプリケーションは既存の既定のグリッドインスタンスのハンドルを取得できません。2つ以上のIISアプリケーションからApache Igniteを使用する方法

私は両方のIISテストアプリケーションのGlobal.asax Application_Startから以下のコードを実行しています。誰かが洞察力を与え、正しい方向に向けることができます。

Random random = new Random(); 
short startCounter = 0; 
Stopwatch sw = new Stopwatch(); 
sw.Start(); 
do 
{ 
    Thread.Sleep(1000 * random.Next(10, 20)); 
    IgniteEngine = Ignition.TryGetIgnite(); 
    startCounter++; 
    if (null == IgniteEngine) 
    { 
     LogHelper.Write("{0}: CacheManager.InitializeCache attempt {1} to get a new ignite instance failed.".InvariantFormat(CommonSystemInfo.MachineName, startCounter), "TraceLogger"); 
    } 

    if (null == IgniteEngine) 
    { 
     try 
     { 
      IgniteEngine = Ignition.Start(new IgniteConfiguration 
      { 
       JvmClasspath = System.IO.Directory.GetFiles(System.Web.HttpContext.Current.Server.MapPath(@"~\bin\libs")).Aggregate((x, y) => x + ";" + y) 
      }); 
      if (null != IgniteEngine) 
      { 
       LogHelper.Write("{0}: CacheManager.InitializeCache success starting ignite after {1} attempts and {2} seconds".InvariantFormat(CommonSystemInfo.MachineName, startCounter, sw.Elapsed.TotalSeconds), "TraceLogger"); 
      } 
     } 
     catch (Exception ex2) 
     { 
      LogHelper.Write("{0}: CacheManager.InitializeCache error while trying to start a new ignite instance. {1}".InvariantFormat(CommonSystemInfo.MachineName, ex2.GetAllMessages()), "TraceLogger"); 
     } 
    } 
} 
while (null == IgniteEngine && sw.Elapsed.TotalMinutes <= 2); 

答えて

1

サービスが1つのプロセスと異なるアプリケーションドメイン内で実行されているように見えます。これは、プロセス内に単一のJVMがあり、エラーDefault grid instance has already been startedが発生することを意味します。

あなたのオプションは以下のとおりです。

  • 使用異なるIgniteConfiguration.GridName
  • TryGetIgnite作品ように実行]のいずれかのサービス
  • に1つのアプリケーション内の両方のサービスを別のIISアプリケーションプールを割り当て、あなたがする必要はありません二度発火してください
+0

パベル、ガイダンスのおかげで。私は上記の最初の2つのポイントを取ったが、それは醜い発見の後でのみ働いた。私はhttps://apacheignite-net.readme.io/docs/deployment#aspnet-deploymentでasp.netデプロイメントのポストビルドステップを使用します。 jarファイルをbinに入れます。問題は、nugetを1.7から1.8に更新した後に開始されました。 * .1.7 jarファイルはbinフォルダにコピーされ、更新後も残りました。その後のパブリケーションでは、1.7と1.8の両方のファイルがデプロイメントフォルダにコピーされました。 1.7から1.8のジャーが混在すると問題が生じました。ポストビルドには、以前のファイルを消去するためのプリビルドが必要です。 –

+0

可能なビルド前のステップは次のとおりです。 –

+0

cd $(TargetDir)Libs del * .jar –

関連する問題