web-dev-qa-db-ja.com

WebsphereでJava)の環境変数を読み取る

Websphereアプリケーションサーバー7.0(WAS7)とEnvironmentVaraiblesの読み取りに少し問題があります。

Tomcatを使用して、変数を次のように定義しました。

<Environment name="myVar" type="Java.lang.String" value="myVarOnServeur"

そして私はinitialContextのルックアップでそれを読みました:

Context ctx = new InitialContext();
String myVar = (String) ctx.lookup( "Java:comp/env/myVar" );

そしてそれは動作します!

しかし、Websphereを使用して、GUIで環境変数を定義しましたが、Javaコードでそれを読み取ることができません。NamingExceptionがあります。

enter image description here
(ソース: fullahead.org

問題を解決するにはどうすればよいですか?

12
lookfire

web.xml内で定義する

<env-entry>
   <env-entry-name>varName</env-entry-name>
   <env-entry-value>56</env-entry-value>
   <env-entry-type>Java.lang.String</env-entry-type>
</env-entry>

javaで見る

Context envEntryContext = (Context) new InitialContext().lookup("Java:comp/env");
String mydata = (String)envEntryContext.lookup("varName");
8
Kaltresian

On WebSphere follow this settings

WASでは、nameがキー、valueがプロパティ値である上記の設定に従います。私の例では、名前:テスト値:これはテスト値です。この値を設定した後、アプリケーションサーバーを再起動します。 Javaコード呼び出しSystem.getProperty( "TEST")で、testはプロパティの名前であり、値は次のように表示されます。

4

あなたは間違った場所を見ています。

[環境]-> [名前付け]-> [名前空間バインディング]-> [新規]で変数を追加する必要があります。

バインディングタイプ文字列、「バインディング識別子」、「名前空間の名前...」myVarを選択すると、次のようにして変数の値を取得できます。

Context ctx = new InitialContext();
String myVar = (String) ctx.lookup( "cell/persistent/myVar" );
4
dblazeka

独自の変数を定義および管理する必要がある場合は、[環境]-> [名前付け]-> [名前空間のバインディング]を確認してください。そこで、jndi名を文字列定数にバインドできます。 文字列バインディング設定 を参照してください

4
svachon

次のようなものをweb.xmlファイルに入れることができます。このファイルは、アプリケーションのWEB-INFディレクトリにあるはずです。

<env-entry>
    <env-entry-name>myVar</env-entry-name>
    <env-entry-type>Java.lang.String</env-entry-type>
    <env-entry-value>myVarOnServeur</env-entry-value>
</env-entry>

ちなみに、これは標準の構文であり、すべてのアプリケーションサーバーで機能するはずです。 WebSphere、JBoss、WebLogicで使用しています。例の場合とまったく同じようにクエリを実行できます。

4
Nicola Musatti

Websphere 7.0-8.5

変数管理コンソールの設定---> Websphereアプリケーションサーバー-----> Your_sever_name ---> Javaおよびプロセス管理--->プロセス定義-> Java仮想マシン->カスタムプロパティ

Java System.getProperty( "Your_Variable")で値を取得

3
Kris

WebSphereのAdminOperationsMBean を介してこれらを解決できるはずです:

//sample code from WAS 7 Infocenter
private String expandVariable(String s) throws
                         javax.management.JMException {  
  com.ibm.websphere.management.AdminService as = 
     com.ibm.websphere.management.AdminServiceFactory.getAdminService();  

  String server = as.getProcessName();
  String mBeanName = "*:*,type=AdminOperations,process=" + server;

  Java.util.Set result = as.queryNames(
     new javax.management.ObjectName(mBeanName) , null);  

   return (String) as.invoke((javax.management.ObjectName)
                             result.iterator().next(),
                             "expandVariable",
                             new Object[]{"${"+s+"}"},
                             new String[]{"Java.lang.String"});
}

WebSphere変数の作成、編集、および削除 を参照してください。

3
McDowell

Javaアプリで使用できる変数をWebSphereで作成する方法について詳しく説明したいと思います。これを理解するために少し追加の調査を行う必要があったため、他の人を助けることができれば幸いです。

dev(またはint、prod、またはその他の値)の値を含む[〜#〜] env [〜#〜]という名前の変数をWebSphereで作成するとします。

  1. WebSphere管理コンソールの左側のパネルで、サーバー> サーバータイプ> WebSphereアプリケーションサーバーを選択します。
  2. アプリを含むアプリケーションサーバーを選択します。
  3. Javaおよびプロセス管理]を展開し、プロセス定義を選択します。
  4. Java仮想マシン
  5. カスタムプロパティを選択します。
  6. 新規を選択します。
  7. 変数の名前と値を作成し、[〜#〜] ok [〜#〜]を選択します。
  8. 保存を選択します。
  9. アプリケーションサーバーを再起動します この変更を有効にします。

この例では、値が「dev」のENVという名前の変数が作成されました。

enter image description here

次に、Javaアプリは、WebSphereでENV変数を使用するように構成する必要があります。以下のマークアップでは、Javaアプリには「Environment」という名前のクラスがあります。 "。このクラスはenvという名前の変数を作成します。System.getProperty(" ENV ")は、WebSphereから変数を取得する魔法です。このJavaコードは他のアプリケーションでも機能するはずです。 JBossやTomcatなどのサーバー。したがって、Javaコードを特定のプラットフォームに合わせてカスタマイズする必要はありません。

絶対に必要というわけではありませんが、envも返します。これはデモンストレーションのために行っているだけです。これにより、JSPページで変数を取得できるようになり、JSPページで変数を自分の目で確認して、これが期待どおりに機能することを検証できます。

package com.example.main;

public class Environment {  
    public String env;

    public Environment() {
        env = System.getProperty("ENV");
    } 

    public String getEnvironment(){
        return env;
    }
}

JSPページのタグ内に、次のマークアップを追加して、Environmentクラスからenv変数を取得します。これにより、WebSphereからENV変数が取得されます。

<%@page import="com.sample.main.Environment"%>

<%
  Environment foo = new Environment();
  String env = foo.getEnvironment();
  out.print("Environment : " + env;
%>

これで、アプリがWebSphereにデプロイされると、環境が表示されます。これにより、アプリケーションサーバーから変数を正常に取得できたことがわかります。

enter image description here

1
JeremyCanfield