2017-09-19 15 views
0

私はMavenプロジェクトを初めて利用しています。Java/Jersey RESTプロジェクト(Maven)で画像ファイルを保存するためのディレクトリ構造

enter image description here

私の計画は、ファイルをディスクに保存し、休止状態を経由してDBにファイルへのパスを保存するためにMediaType.MULTIPART_FORM_DATAを使用することです:私は、次のディレクトリ構造を持つジャージーRESTプロジェクトを持っています。

画像を保存するには、imghibernate.cfg.xmlと同じレベル)のsrc/main/resourceという名前の新しいフォルダを作成し、そこに画像を保存することを計画しています。

質問:

  1. は私のアプローチは正しいですか?より良い提案はありますか?
  2. タグを追加するには、pom.xmlを変更する必要がありますか。事前に

    http://maven.apache.org/maven-v4_0_0.xsd ">

    <modelVersion>4.0.0</modelVersion> 
    
    <groupId>com.xxx.xxx</groupId> 
    <artifactId>xxx</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>xxx</name> 
    
    <build> 
        <finalName>xxx</finalName> 
        <plugins> 
         <plugin> 
          <groupId>org.apache.maven.plugins</groupId> 
          <artifactId>maven-compiler-plugin</artifactId> 
          <version>2.5.1</version> 
          <inherited>true</inherited> 
          <configuration> 
           <source>1.8</source> 
           <target>1.8</target> 
          </configuration> 
         </plugin> 
        </plugins> 
    </build> 
    
    <dependencyManagement> 
        <dependencies> 
         <dependency> 
          <groupId>org.glassfish.jersey</groupId> 
          <artifactId>jersey-bom</artifactId> 
          <version>${jersey.version}</version> 
          <type>pom</type> 
          <scope>import</scope> 
         </dependency> 
        </dependencies> 
    </dependencyManagement> 
    
    <dependencies> 
         <!-- jersey --> 
        <dependency> 
         <groupId>org.glassfish.jersey.containers</groupId> 
         <artifactId>jersey-container-servlet-core</artifactId> 
         <!-- use the following artifactId if you don't need servlet 2.x compatibility --> 
         <!-- artifactId>jersey-container-servlet</artifactId --> 
        </dependency> 
        <!-- JSON support --> 
        <dependency> 
         <groupId>org.glassfish.jersey.media</groupId> 
         <artifactId>jersey-media-moxy</artifactId> 
        </dependency> 
        <!-- postgresql --> 
         <dependency> 
         <groupId>org.postgresql</groupId> 
         <artifactId>postgresql</artifactId> 
         <version>42.1.4</version> 
        </dependency> 
        <!-- hibernate --> 
         <dependency> 
          <groupId>org.hibernate</groupId> 
         <artifactId>hibernate-core</artifactId> 
         <version>5.2.10.Final</version> 
        </dependency> 
        <dependency> 
         <groupId>cglib</groupId> 
         <artifactId>cglib</artifactId> 
         <version>3.2.5</version> 
        </dependency> 
        <!-- logging for hibernate --> 
        <dependency> 
          <groupId>org.slf4j</groupId> 
          <artifactId>slf4j-api</artifactId> 
          <version>1.7.25</version> 
        </dependency> 
        <dependency> 
          <groupId>ch.qos.logback</groupId> 
          <artifactId>logback-core</artifactId> 
          <version>1.2.3</version> 
        </dependency> 
        <!-- password hashing --> 
        <dependency> 
          <groupId>org.mindrot</groupId> 
          <artifactId>jbcrypt</artifactId> 
          <version>0.3m</version> 
        </dependency> 
        <!-- http client --> 
        <dependency> 
          <groupId>com.squareup.okhttp3</groupId> 
          <artifactId>okhttp</artifactId> 
          <version>3.9.0</version> 
        </dependency> 
    </dependencies> 
    <properties> 
        <jersey.version>2.25</jersey.version> 
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 
    

感謝を次のように私の現在のpom.xmlです。

答えて

0

の保存WEB-INFディレクトリを含むウェブアプリケーション内の画像のようなユーザデータは、推奨されるアプローチではありません。

ディレクトリに画像を保存する予定ですが、これは開発プロジェクトの構造です。実際のサーバーに展開するには、まずwarファイルを作成して展開する必要があります。展開後、このディレクトリはWEB-INFディレクトリに入り、そこにユーザデータが格納されます。

アップグレードされたバージョンのWebアプリケーションを展開する必要がある場合、またはWebアプリケーションを別のサーバーに移動する必要がある場合を考えてみましょう。 Webアプリケーションのみの場合、warファイルを展開するのは簡単ですが、このユーザーの画像はどうなりますか?もう1つの問題はユーザーデータなので、ハードウェア障害の場合に失われないように、そのようなデータのバックアップをどのように保つかです。

ユーザの画像を保存するための推奨手法です。画像ファイルのサイズが小さい場合は、binaryデータとしてデータベースに保存する方がよいでしょう。イメージファイルのサイズが大きい場合は、頻繁なデータのバックアップを設定できる外部サーバーまたはWebアプリケーションディレクトリの外部に格納し、イメージのパスをデータベースに保存することを検討する必要があります。

関連する問題