2016-04-02 2 views
0

現在インストールされているWebアプリケーションがインストールされているJava EEサーバー(Wildfly)のOSからメインパスが必要です。JAVA EEサーバーにインストールされているサーバーのパスを取得する

ですから、例えば: C:JAVA EEサーバ(Wilflyが)に設置されている場合は/ソフトウェア/て、myApp/myServerという私は、まさにこの場所を必要以上に

。 どうすればいいですか? Wildflyのインスタンスがもう1つある可能性があるので、System変数を使用することはできません。

+0

あなたはどのようなWebフレームワークを使用していますか?あなたは 'getServletContext()。getRealPath("/")'のようなものを使うことができました。 – Pintus

+0

ejb Bean、CDIを使っています.... – CommanderHP

+0

多分もっと良い質問をしなければなりませんでした。どこに道が必要ですか? EJBの内部か、JSP、JSF、Servlet、JAX-RSなどのフロントエンドの内部? – Pintus

答えて

2

try System.getProperty("jboss.home.dir")

とにかく、設置場所によってはデザインの臭いが少しあります。

+0

Okしかし、2つ以上のWildflyが自分のPCにインストールされているとどうなりますか?これも働いていますか? – CommanderHP

+0

はい、このプロパティは、プロセスごとにWildFly自身によって設定されます。 –

+0

あなたはデザインの匂いについて正しいです。私は最初にこの情報が必要な正当な理由を考えることができません。 – VGR

0

残念ながら、EJBはビジネスロジックであり、直接あなたのWebアプリケーションではないため、あなたの質問の説明は明確ではありませんでした。 EJBには、JAXWSを持つWebサービス以外のリクエスト自体に関する情報がないためです。

あなただけにして@Harald Wellmannが書いたようにあなたが使用することができ、サーバーではなくWebアプリケーションへのルートパスが必要になります。 System.getProperty("jboss.home.dir") を、あなたのサーバーのルートパスを取得します。

アプリへのパスが必要な場合、あなたは一例

標準的な動作としてあなた /WEB-INF/classesフォルダのパスをお渡しします
this.getClass().getProtectionDomain().getCodeSource().getLocation() 

のために使用することができます。

JSF、JSP、またはサーブレットを使用する場合は、はるかに簡単で、前に書いたように、getServletContext().getRealPath("/")というHttpServletRequestオブジェクトから直接情報を取得できます。

そして、あなたはこのようなHttpServletRequestオブジェクトを取得注入できJAXWSとEJBと:サーバディレクトリ(サーバー/ビン)へ

@Context 
    private HttpServletRequest httpRequest; 
+0

ありがとうございます。しかし、書かれている:System.getProperty( "jboss.home.dir")2つ以上のwildflyサーバーがインストールされている場合は正しい? – CommanderHP

+0

これはサーバーのルートパスです。別のサーバーを使用する場合は、別のパスも使用します。 1つのサーバー内に異なるアプリしかない場合は、常に同じパスになります。それを試してみると、あなたのために最高のものが見えます。 – Pintus

0

パス:他のサーバディレクトリへ

File inputFile = new File("file.xml"); // server_dir/bin/file.xml 

パスを、 "webapps"の例:

File inputFile = new File("../webapps/file.xml"); // server_dir/webapps/file.xml 

絶対パスを取り除く良い方法:) Tomcatでテストされていますが、うまくいけば助けになります。

関連する問題