0

私は、XML ファイルを更新する 1 つの Java クラスを呼び出し、その更新された XML ファイルの内容を表示する JSP に要求をリダイレクトする Web プロジェクトを開発しています。しかし、その XML ファイルを含むフォルダーを手動で更新するまで、更新された XML 値は表示されません。

私のコードのテンプレートは..

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    String instanceName=request.getParameter("instanceName");
    int no_of_days=Integer.parseInt(request.getParameter("days"));

               CopyOfUpdateXmlLicenses obj2=new CopyOfUpdateXmlLicenses(instanceName,     new_free_lic);
    obj2.updateXML_Licesnes();
               long time=new Date().getTime();
    response.sendRedirect("Licenses.jsp?ms="+time); 
}
4

3 に答える 3

4

あなたは重大な設計ミスを犯しています。以下の主な理由により、webapp は実行時に deploy フォルダーに書き込みを行うべきではありません。

  • WAR を再デプロイするかサーバーを再起動すると、すべての変更が失われます。それらの変更が(元の)WARに含まれていないという理由だけです。

  • 一部のサーバーは、WAR をディスクではなくメモリに展開します。はgetRealPath()を返しnull、ファイルを書き込むことができなくなります。

具体的な問題は、IDE で webapp をデプロイして実行しているためです。IDE は、外部で行われたプロジェクトのフォルダー構造の変更をすぐには認識しません。ただし、IDE はサーバーではなく、運用環境では実行されないことに注意してください。IDE は単なる開発ツールです。

代わりに、デプロイ フォルダー外の固定パスにファイルを書き込む必要があります。

于 2012-04-19T16:14:57.090 に答える
1

私の質問に時間を割いていただき、ありがとうございます。上記の問題の根本原因を見つけました。

Eclipse IDE ではなく、コードに問題はありません。IDE がワークスペースの内容を更新するには、しばらく時間がかかります。そのため、プログラムがワークスペースにあるファイルの内容を読み取ろうとすると、変更がすぐに反映されない場合があります。そのため、Web アプリケーションを tomcat にデプロイして確認してみてください。

Eclipse IDE で実行する場合は、[ウィンドウ] - > [設定] -> [一般] -> [ワークスペース] に移動し、[自動的に更新] オプションを選択します。

于 2012-04-21T10:12:32.980 に答える
1

Licenses.java というサーブレットを作成し、ページを新しい時間のライセンスにリダイレクトするか、ロード時にサーブレットに新しい時間を生成させて、古い時間と比較します。次に、サーブレットにロジックを実行させ、ページを licenses.jsp に転送します。

于 2012-04-19T14:45:55.933 に答える