2012-03-12 17 views
0

私たちの開発環境では、私たちは桟橋を使用しています。javascriptからサーバのバージョンを確認してください

私たちはjavascriptを使用していますが、jettyやtomcatを使用するにはいくつかのハードコードされた場所があります。

2つのサーバーバージョンを使用するのはちょっと変わっていますが、それはちょうどその方法です。

これでアプリケーションをビルドするときに、javascriptファイルのサーバーバージョンを変更することを忘れることがあります。

サーバーがjavascriptのjettyかtomcatかどうかを自動的に確認する方法はありますか?

私はtomcatのルートにtxtファイルを置いて、それが存在するかどうかをチェックさせようと考えていましたが、もっとネイティブに行う方法があるかもしれません。

答えて

1

あなたのサーバーの一方または両方がServer HTTPヘッダーを送信していると仮定すると(通常はJettyが行いますが、簡単に構成できます)、XMLHttpRequestを使用して応答ヘッダーを調べることができます。

もっとここで読む:Accessing the web page's HTTP Headers in JavaScript

しかし、私はあなたが1つのJavaScriptファイルにサーバ間で変化するコードの断片を抽出することを示唆しています。例:

/* server_info.js */ 
locations = { 
    file1 : "/some/path", 
    file2 : "/another/path" 
}; 

このファイルをすべてのページに含めると、<script>となります。
次に、JettyとTomcatがそれぞれ異なるバージョンのファイルを使用できるようにすることができます。サーブレット(またはフィルタ、アクション、またはフレームワークに存在するもの)をサーバーの種類を調べ、適切なファイルを処理するのは簡単です。

それはあまりにも多くのなら、あなたは同じことを行うことができますが、単に持っている:

/* server_info.js */ 
server_type = "tomcat"; 

とサーバによって、そのファイルを変更(あなたは簡単にそのJSP内のファイル、または類似した何かを生成することがありました)

警告警告:私はあなたが知っているように、devとprodで異なるサーバーを使用することは、このような理由から素晴らしい考えではありません。この問題の解決策を実装したら、tomcatコードがどのように動作するのかを知りますか?
Jettyはプロダクションサーバー以上の能力を備えており、Tomcatは開発の面で優れた仕事をすることができます。私は、(チームとして)あなたが本当にすべきであるよりも自分のために多くの仕事をしていると思っています。

+0

また、あなたのjettyサーバーはサーバーオブジェクトで 'sendServerVersion'を有効にすることができ、Jettyサーバーとそのバージョンであるという情報を含むヘッダーが返されます。 –

1

サーバーにajaxリクエストを行い、それぞれが独自の方法で応答する場合は、どちらがどちらであるかを知ることができます。特定のファイルに異なるファイルや異なるコンテンツが存在するかどうかに関わらず、サーバーがクライアントに差別化する方法はたくさんあります。

関連する問題