私は支払いゲートウェイからの返信URLを持つ変数を1つ持っています。リスナーのHttpServletRequestオブジェクトへのアクセス
private static String response_url = "http://1.1.1.1:8001/abc/xyz.html";
// private static String response_url = "http://www.something.com/xyz.html";
最初の変数はローカルサーバー用であり、2番目の変数は本番環境のものです。環境に応じてコメントを付けてコメントを外し、コメントを解除してコメントを外します。
<action name="viewResponseFile" class="controller.RAction" method="viewResponseFile">
<result name="success">somepage.jsp</result>
</action>
コントローラは、xyz.html
上にマッピングされ、それはpayment gateway
からの戻りURLです。今私は一般的にしたいです。
私は、その変数を既存のListenerクラスに設定することを計画しています。
<listener>
<listener-class>in.com.Initializer</listener-class>
</listener>
私はRequestURI
を取得するためにServletRequestAware
を使用してHttpServletRequest
を作成しようとしましたが、まったく成功していません。
public class Initializer implements ServletContextListener
{
ServletContext context;
public Initializer()
{
}
public void contextInitialized(ServletContextEvent contextEvent)
{
// set-up code
}
public void contextDestroyed(ServletContextEvent contextEvent)
{
}
}
どのようにこれらの要件を達成できますか?
環境変数のアプローチの場合、N個のサーバーに環境を設定する必要があります。 DBアプローチの場合、単一URL用テーブルを作成することは実現不可能です。 Listenerクラスの 'localhost:8080 \ project_name \'(動的ホスト名)を選択する方法はありませんか? – piechuckerr
通常、Webアプリケーションには、dev環境とprod環境の設定が異なり、環境間でも同じですが、将来変更される可能性があります。そのため、テーブルやenv変数でパラメータ化されています。ところで、単一URLの場合、相対リクエストのヘッダから* referer *を読み取ることはできませんか? –