2

私はJavaが初めてなので、私の不自由な質問を許してください:)

Java NetBeans 6.1 で Web サービスを構築しようとしていますが、構成パラメーター (.net の .settings など) に問題があります。

Java Web サービスでそのような設定を保存してアクセスする正しい方法は何ですか。

Web メソッドで web.xml からコンテキスト パラメータを読み取る方法はありますか?

いいえの場合、パス名などの構成変数を保存するための代替手段は何ですか?

ありがとうございました

4

4 に答える 4

4

Webメソッドでweb.xmlからコンテキストパラメータを読み取る方法はありますか?

いいえ、これはすぐに使用できるものを使用して簡単に行うことはできません。Webサービスシステム(JAX-WS)は、サーブレットエンジン(Tomcat)の認識が最小限です。それらは分離されるように設計されています。

コンテキストパラメータを使用する場合は、WebサービスクラスでServletContextListenerを実装し、初期化パラメータで目的のパラメータを取得する(または後で使用するためにコンテキストを保存する)必要があります。サーブレットエンジンとJAX-WSはそれぞれオブジェクトの異なるインスタンスを持っているため、静的メンバーに値を保存する必要があります。

Larsが述べたように、Properties APIまたはJNDIは、Javaに含まれており、オプションを取得するためのかなりよく知られた方法であるため、最善の策です。Classloader.getResource()を使用して、Webコンテキストでプロパティを取得します。

于 2008-09-24T15:04:34.730 に答える
3

サーブレットを使用している場合は、web.xml でパラメーターを構成できます。

<servlet>
  <servlet-name>jsp</servlet-name>
  <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
      <param-name>fork</param-name>
      <param-value>false</param-value>
     </init-param>
</servlet>

これらのプロパティは、ServletConfig オブジェクトでサーブレットの「init」メソッドに渡されます。

別の方法は、システムの環境変数を読み取ることです

System.getProperty(String name);

ただし、これは小さなプログラムやテスト以外にはお勧めできません。

「.properties」ファイルを使用する場合は、Properties API もあります。 http://java.sun.com/javase/6/docs/api/java/util/Properties.html

最後に、最新の Web サービス アプリケーションを開発する場合、JNDI を使用して構成を検索することはかなり一般的だと思います。ググってください。

于 2008-09-24T08:03:35.617 に答える
1
MessageContext ctx = MessageContext.getCurrentThreadsContext();       
Servlet wsServlet = (Servlet) ctx.getProperty(HTTPConstants.MC_HTTP_SERVLET);         
ServletConfig wsServletConfig = wsServlet.getServletConfig();                 
ServletContext wsContext = wsServletConfig.getServletContext();   
于 2011-10-12T05:50:52.120 に答える
0

正解は・・・相変わらず・・・「場合による」と思います。単一のサーバーで小規模な実装を実行している場合は、使用する WS テクノロジに大きく依存します。サーブレット コンテキストと context-params に簡単にアクセスできるようにするものもあれば、そうでないものもあります。その場合、プロパティ ファイルからプロパティにアクセスする方が簡単な場合があります。トラフィックの多い負荷分散環境にサーバーのアレイを配置し、フェイルオーバーの場合にすべてのサーバーの設定を即座に一元的に更新する必要がありますか? その場合、ファーム内のすべてのサーバーの構成ファイルを本当に更新しますか? これらの変更をすべてのサーバーにどのように同期しますか? それはあなたにとって重要ですか?もし、あんたが' 構成ファイルにパス名を再保存すると、特定のホストがダウンした場合にパス名を別のホストに更新できるようになる可能性があります ("\file_server_host\doc_store" --> "\backup_file_server_host\doc_store")。実際には、代わりに DNS を使用してフェールオーバーする方がよい場合があります。変数が多すぎます。それは本当にデザインに依存します。ニーズ; アプリの規模。


簡単にするために、単純に .settings ファイルに相当するものだけが必要な場合は、.properties ファイルが必要です。これは、最近プロジェクトでこれを使用した例です: https://github.com/sylnsr/docx4j-ws/blob/master/src/docx4j/TextSubstitution.java

于 2013-06-20T09:12:54.863 に答える