0

そのため、Axis2 Web サービス (「ReleaseService」と呼ばれる) があり、正しく機能するにはプロパティ ファイルが必要です。RHEL6 の Tomcat7 に axis2 をデプロイしたところ、次のような構造になりました。

tomcat/webapps/axis2
+ axis2-web, META-INF, org
+ WEB-INF
+ + classes, conf, lib, modules
+ + services
+ + + ReleaseService
+ + + + com, lib, META-INF

Java について考えると、作業ディレクトリtomcat/webapps/axis2/WEB-INF/services/ReleaseServiceは lib フォルダーとバイナリのルート フォルダーが含まれているため、 になると思います。

そこで、プロパティファイルをそこに置き、経由でアクセスしようとしました

File configFile = new File("releaseservice.properties");

どうやらうまくいきません。何時間も探しましたが、作業ディレクトリがどこにあるかを示す投稿またはドキュメントのスニペットが見つかりませんでした。私はこれを見つけましが、展開をシンプルに保ちたいので、システム プロパティは私にとって選択肢ではありません。

作業ディレクトリはtomcat/bin、Tomcat Java プロセスのルートである私のフォルダーであることがわかりました。

おまけの質問: Web サービス内のサービス ディレクトリを見つけるにはどうすればよいですか? Axis2 は、サービスのフォルダーを見つけるためのヘルパーを提供していますか?

4

2 に答える 2

1

Java EE コンテナにデプロイされたアプリケーション コードで、現在の作業ディレクトリを想定することはお勧めしません。さらに、WAR がデプロイreleaseservice.propertiesされると、ファイルとして存在する、つまりコンテナーが WAR を展開するという前提を立てています。これは Tomcat には当てはまりますが、他のサーバーには当てはまらない場合があります。

Axis2 は、デプロイされたサービスごとに個別のクラス ローダーを作成します。これは、リソースとしてルックアップすることで、プロパティ ファイルにアクセスできることを意味します。

MyService.class.getResourceAsStream("/releaseservice.properties")

MyServiceサービスを実装する実際のクラス、または からロードされたその他のクラスに置き換えますWEB-INF/services/ReleaseService

于 2012-09-21T08:42:29.457 に答える
0

どうやら作業ディレクトリはtomcat/binフォルダです。Tomcat 内で専用のアプリケーションが動作しているように見えますが、すべて同じ Java プロセスです。

次のデバッグコードを追加して見つけました:

File test = new File("abc.txt");
System.out.println(test.getAbsolutePath());

どちらが戻った/opt/tomcat/bin

于 2012-09-20T11:24:14.593 に答える