Linuxサーバ(Ubuntu 16.04)のTomcat8ウェブサーバーのサーブレット内にweb3jライブラリを使用します。WEB-INF以外のファイルへのアクセス
私はサーブレットからファイルを読む必要があります。サーブレットのコードは次のとおりです。
Credentials credentials = null;
String password = "secretPassword";
String pathToWalletFile = "/home/ubuntu/.ethereum/testnet/keystore/UTC--2017-06-18T03-11-13.235052023Z--6c992fb9531c9285ca9aba80c32a63074b0acd00";
File file = new File(pathToWalletFile);
try {
credentials = WalletUtils.loadCredentials(
password,
file
);
} catch (CipherException e) {
e.printStackTrace();
}
ファイルには、権限を持っている:644(-rw-rを - r--の)Ubuntuの16.04で '須藤はaptインストールtomcat8'(ユーザー:tomcat8)を使用してTomcat8デフォルト設定でインストール私は次のエラーを取得するサーブレットを呼び出す
場合:私は、WEB-INF内のファイルを置く場合
HTTP Status 500 - /home/ubuntu/.ethereum/testnet/keystore/UTC--2017-06-18T03-11-13.235052023Z--6c992fb9531c9285ca9aba80c32a63074b0acd00 (Permission denied)
type Exception report
message /home/ubuntu/.ethereum/testnet/keystore/UTC--2017-06-18T03-11-13.235052023Z--6c992fb9531c9285ca9aba80c32a63074b0acd00 (Permission denied)
description The server encountered an internal error that prevented it from fulfilling this request.
exception
java.io.FileNotFoundException: /home/ubuntu/.ethereum/testnet/keystore/UTC--2017-06-18T03-11-13.235052023Z--6c992fb9531c9285ca9aba80c32a63074b0acd00 (Permission denied)
java.io.FileInputStream.open0(Native Method)
java.io.FileInputStream.open(FileInputStream.java:195)
java.io.FileInputStream.<init>(FileInputStream.java:138)
com.fasterxml.jackson.core.JsonFactory.createParser(JsonFactory.java:756)
com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2740)
org.web3j.crypto.WalletUtils.loadCredentials(WalletUtils.java:76)
net.cryptonomica.tomcatweb3j.TestServlet.doGet(TestServlet.java:75)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/8.0.32 (Ubuntu) logs.
Apache Tomcat/8.0.32 (Ubuntu)
、それが動作します。 tomcat(またはjetty)のWEB-INF以外のファイルにアクセスする方法を教えてください。
UPD: ユーザーtomcat8は/home/ubuntu/.ethereum/読み取ることができますが、ディレクトリ
$ sudo -u tomcat8 ls /home/ubuntu/.ethereum/testnet/
戻り/home/ubuntu/.ethereum/testnet/読み込むことができません。
を私は 'Ubuntuの' グループに 'tomcat8' ユーザを追加する場合でもls: cannot access '/home/ubuntu/.ethereum/testnet/': Permission denied
$members ubuntu
は今返します
ubuntu tomcat8
と
$ ls -l /home/ubuntu/.ethereum/testnet/
リターン:
total 8
drwxr--r-- 5 ubuntu ubuntu 4096 Jun 17 17:33 geth
srw------- 1 ubuntu ubuntu 0 Jun 18 14:08 geth.ipc
drwxr--r-- 2 ubuntu ubuntu 4096 Jun 18 03:11 keystore
しかしtomcat8、まだ読んだことがありませんアクセスを
を/home/ubuntu/.ethereum/testnet/します別のディレクトリ(ユーザー 'tomcat8'がアクセスできる場所)にファイルを移動すると、probl em。しかし、私はまだ問題がどこにあるのか理解していません。一般的には、サーブレットから/home/ubuntu/.ethereum/testnet/ファイルへのアクセス権を持っています。