1

CloudBees にデプロイするプロジェクトがあり、cloudbees-web.xml ファイル内にいくつかのパラメーター名を定義しました。Java アプリケーションからこれらにアクセスしたいのですが、System.getProperty(),(String)env.lookup("email.user.name") を試してみましたが、うまくいきませんでした。

Java内からこれらにアクセスするにはどうすればよいですか?

以下は、WEB-INF の下にある私の cloudbees-web.xml ファイルです。

            <?xml version="1.0"?>
            <cloudbees-web-app xmlns="http://www.cloudbees.com/xml/webapp/1">
              <!-- Changed for Privacy -->
              <appid>CB_ACCOUNT/APPNAME</appid>

              <!-- Extra context parameters -->
              <context-param>
                <param-name>email.user.name</param-name>
                <param-value>test@gmail.com</param-value>
              </context-param>
            </cloudbees-web-app>
4

1 に答える 1

0

で定義された任意のコンテキスト パラメータにアクセスできるのと同じように、これらのコンテキスト パラメータにアクセスできますWEB-INF/web.xml。つまり、次のようになります。

getServletContext().getInitParameter("email.user.name")

にアクセスできるクラス インスタンスにいる必要があることに注意してくださいServletContext。または、ServletContextアクセスできるクラスから を渡す必要があります。

通常、リクエストはサーブレットまたは JSP ページによって処理されます... または、使用しているフレームワークがコンテキストにアクセスする手段を提供します (たとえば、Java Server Faces は外部コンテキストの概念を提供します。JSF は両方をサポートしているため、これは aServletContextまたは a のいずれかです)。PortletContextコンテナー) したがって、そのような場合は、サーブレットからパラメーターにアクセスするだけの問題です。

作業を行うためにバックグラウンド スレッドを開始している場合 (これはサーブレット仕様に厳密に違反しているか、少なくとも範囲外です)、これらのスレッドを開始 (および停止 - 停止することを忘れないでください) する必要ServletContextListenerがあります。これも供給されServletContextます...大胆な人で、クラスの静的初期化子からバックグラウンドスレッドを開始する場合...まあ、唯一の解決策は、構成をServletContextListenerプルしてバックグラウンドスレッドに渡すことです...その時点でからトレッドを開始することをお勧めしますServletContextListener(同じファイルから複数のコンテキストをロードする.war問題も解決します... RUN@cloudでそれを行うわけではありません)

于 2013-08-30T08:50:17.917 に答える