I.はじめに
多くの場合、アドホックネットワークや機密ネットワークで実行政府と企業のプロジェクトは、いくつかのユニットでも2つの物理ネットワークが存在して隔離されます。通常の状況下で、我々は両方のネットワークで同じマップサービスとの依存関係を展開します。しかし、ネットワークの一つは非常に密なサーバリソースが依存関係が表示され、個々のケースを展開することができないではありませんもあります。
第二に、ケースの理由
例:従来のA、B 2は、物理的にネットワークから単離されました。ネットワークの展開とサービスの依存関係のマップ、非常に密なネットワークB、内だけではなく、および依存関係を展開することはできません。
まず転送サービスは、プロセスが表示され、負荷依存性に失敗この場合、フロントエンドC(デュアルLAN、BとA、片方向通信と双方向通信)に使用される設定します。コンソールを表示するために、ネットワーク要求に応じて、Bネットワークのリソース要求IP構成IPセグメント項目JS、ネットワークはCを介してBを引き起こし、init.jsおよび死を書き込むように構成されたdojo.jsの説明を依存関係は適切に要求することはできません関連リソースへ。
第三に、ソリューション
コアは、ホストinit.jsを取得することで、動的なIPアップデート設定項目をdojo.js。この考えに基づき、我々は次のことを試してみました:
1相対パスCIを使用して、 - 失敗
2.ネットワーク構成要素Aがネットワークプロキシ(ArcGISの接合の元IP +ポートパスを使用してプロキシ) - 失敗
IPポートを設定する3. Bネットワーク設定項目 - 失敗
(+接合の元のIPポート転送経路を使用してFEP)4 Aの設定項目ネットワークエージェントマシンC - 失敗
5.マシンエージェントB C CIネットワーク(ネットワーク参加のIP + Bポートパスを転送するように構成されたフロントエンドプロセッサを使用して) - 失敗
設定項目を更新するためのサービス現在のリクエスト、6. IPポートの設定項目 - 10%の成功
問題と解決策6.1経験
現在のサービスに応じて自動的にIPポートを取得し、Bのネットワークに正常init.js呼び出すことができるが、ZH-cn.jsローディングJS関連インフラ再スプライシング経路であろうときを示す、正しくロードに失敗しましたが、今回はBASEURLを取得していません我々は、サービスIPポートの現在のヘッドを変更します。
接合のソースパス、強制的に一貫性のある修飾ヘッドBASEURLに対応する位置を見出すことが必要です。
6.2決済処理
6.2.1取得現在のIPサービスポート
(関数(輸出){ VARのドキュメント= exports.document 、A = {} 、公開 = + 新しい日付() 、rExtractUri = /((?:のhttp | httpsの|ファイル):\ / \ /.* \ / [ ^:] +)(:: \ D +):\ D + /? 、isLtIE8 =( '' + doc.querySelector).indexOf( '[ネイティブコード]')=== -1 ; exports.getCurrAbsPath = 関数( ){ // FF、クロム 場合(doc.currentScript){ リターンdoc.currentScript.src; } VARのスタックと、 トライ{ AB(); } キャッチ(E){ スタック = e.fileName || e.sourceURL || e.stack || e.stacktrace; } // IE10 場合(スタック){ VAR ABSPATH = rExtractUri.exec(スタック)[1 ]。 もし(ABSPATH){ 戻りABSPATH。 } } // IE5-9 ため(VARのスクリプト= doc.scripts、私はscripts.length = - 1、スクリプトと、スクリプト=スクリプト[i-- ];){ もし == script.className(&& script.readyStateを露出! ===「インタラクティブ」){ script.className = 公開します。 // 未満すなわち8あれば、のgetAttribute(SRC、4)により、ABSのパスを取得する必要があります 返す isLtIE8を?script.getAttribute( 'SRC'、4 ):script.src。 } } }(); }(窓));
6.2.2 baseUrlに
getCurrAbsPath.replace( "/" + getCurrAbsPath.split( "/")。ポップ()、 "")+ "/道場" に置き換え、次いで上記部分最上init.jsにコード、および[HOSTNAME_AND_PATH_TO_JSAPI]を検索し、。
6.2.3二スプライス位置を見つけます
ZH-CN検索によると、次の場所を探します。
"*今":機能(Q){ Q([!「道場/ I18N *プリロード* ESRI / NLS / JSAPI * [ "AR"、 "AZ"、 "CA"、 "CS"、 "DA"、「デ-de " "エル"、 "EN-GB"、 "EN-US"、 "ES-ES"、 "FI-Fiの"、 "FR-FR"、 "彼は-IL"、 "HU"、"それを-it」、 "JA-JP"、 "KO-KR"、 "NL-NL"、 "NB"、 "PL"、 "PT-BR"、 "PT-PT"、 "RO"、 "RU"、 "SK"、 "SL"、 "SV"、 "目"、 "TR"、 "ZH-TW"、 "ZH-CN"、 "ROOT"]」]) }
ここでは、スプライスを見つけるために、ライン毎にポイントを破ります。
WA = 関数(A、B、G、D、R、Q、H、K、F、X){ VARのT、Y、W、M。 M = /^\./ .TEST()。 もし!(/(^\/)|(\:)|(\.js$)/.test(a)|| M && b)に 戻り WA(0、0 ); = Vaを(M b.mid + "/../" +? :)。 もし(/^\./ .TEST()) スロー C( "irrationalPath" 、); X || M || !q.star || (W = AA(、q.star [1 ]))。 !&& B && W(W = W(= AA(b.mid、Q))&& AA(、W [1 ]))。 W = + [1] W(&&。 B =(NA = a.match(/^([^\/]+)(\/(.+))?$/))?NA [1]: "" 。 (T = G [B])?A = B + "/" +(Y = NA [3] || t.main):B = "" ; VARのp = 0 ; E(K、関数(B){ VAR C = a.match(B [0 ]); C && 0 <c.length &&(P = L(B [1])a.replace(B [0]、? B [1]):B [1 ]) })。 もし(P) リターン和(P、0 、G、D、R、Q、H、K、F)。 もし(G = D []) 戻り F?WA(g.pid、g.mid、g.pack、g.url):D [A]。=(W = AA(、H))?B:[1] + a.substring(W [3])W?( "/" === t.location.slice(-1)t.location.slice(0、-1):t.location)+ "/" + Y:V( "CONFIG-tlmSiblingOfDojo")?「../」+ :。 デバッガ /(^\/)|(\:)/.test(d)|| (D = R + D)。 console.log(WA(B、T、バージニア州(D + "の.js" ))) 戻り WA(B、T、バージニア州(D + "の.js" )) }
/(^\/)|(\:)/.test(d)||(D = R + d)の発見;スプライシング文を、rは重要な問題です。私たちはrでのデバッガが再割り当てすることができる必要があります。
R = getCurrAbsPath.replace( "/" + getCurrAbsPath.split( "/"))(POP、 "")+ "/道場/"。
6.3テスト
成功Cフロントエンド、アクセスネットワークAマップの依存関係およびマッピングサービスにサービス要求を転送するBネットワーク。これまでのところ問題は解決されます。
IVの概要
これらは解決プロセスに悩まされており、ネットワークを介して、長い時間のためのソリューションが適切にマップリソースの問題を得ることができませんでした。