2011-11-10 4 views
0

私は、いくつかの認証資格証明の検証のためにSOAP-ServiceにアクセスしているJSPベースのWebappを持っています。 SOAP-callsに簡単に渡すことができるように、このサービスURLをアプリケーションスコープ変数に入れたいと思います。これを行うにはどうすればよいでしょうか?それをinit-paramに入れて、それをinitのapplication.wsdlurlに渡しますか?アプリケーションのスコープ付き変数を初期化する

+0

ご質問は混乱しています。あなたはタイトルとタグでJSPを言及しましたが、あなたはサーブレットについて話しています。 JSPは最終的にサーブレットとしてコンパイルされますが、JSPはサーブレットと同じではありません。 – BalusC

+0

お粗末な質問には申し訳ありません。私はJSPベースの認証サイトを持っています。 Auth-BackendはSOAP(JAX-WS)を介してアクセスします。このアプリケーションのインスタンスは複数存在します。したがって、Auth-URLは環境ごとに設定可能である必要があります。私はgetInitParameter()とURLへのアプリケーション全体のアクセスのためのアプリケーションの範囲について読んでいます。しかし、どこでそれを定義しますか? もう一度おねがいします! – AlessandroEmm

+0

実際にはinit-paramを使用するだけです。私は例を用いて答えを掲示した。 – BalusC

答えて

1

web.xmlのサーブレットの定義で<init-param>と定義する必要があります。

<servlet> 
    <servlet-name>yourServlet</servlet-name> 
    <servlet-class>com.example.YourServlet</servlet-class> 
    <init-param> 
     <param-name>wsdlurl</param-name> 
     <param-value>http://...</param-value> 
    </init-param> 
</servlet> 

次のようにあなたは、サーブレットのインスタンス変数として割り当てることができます。

public class YourServlet extends HttpServlet { 

    private String wsdlurl; 

    @Override 
    public void init() throws ServletException { 
     wsdlurl = getServletContext().getInitParameter("wsdlurl"); 
     // Do if necessary some validation. 
     // E.g., if null, then throw ServletException. 
    } 

    // ... 
} 
+0

ありがとうございました!これは初心者に聞こえるかもしれませんが、私はwebapps /(root)に必要なすべてのフロントエンドロジックを使ってアプリケーションを構築しました。より複雑なauth-soap部分は、クラス(WEB-INF/classes/$ packages)でラップされます。私はこれが実際に "ベストプラクティス"とはみなされていないが、本当の欠点(afaik)なしで仕事をすることを知っている。フロントエンド(/ ..)とバックエンド(クラス)がこれらのパラメータにアクセスできるようにするにはどうすればよいですか? – AlessandroEmm

+0

「ServletContext」にアクセスできる場合は、その属性として設定できます。しかし、そうでない場合は、init-paramの方法を忘れてプロパティファイルを代わりに使用し、静的にロードして保持するクラスを作成する必要があります。 – BalusC

+0

私の知る限り、 " com.example.YourServlet"ディレクティブを使ってアクセス権を与えると、/*.jspの設定はどのようになりますか? – AlessandroEmm

関連する問題