Using Java to connect to a Neptune DB instance - Amazon Neptune

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Using Java to connect to a Neptune DB instance

The following section walks you through the running of a complete Java sample that connects to a Neptune DB instance and performs a Gremlin traversal.

These instructions must be followed from an Amazon EC2 instance in the same virtual private cloud (VPC) as your Neptune DB instance.

To connect to Neptune using Java

  1. Apache Maven を EC2 インスタンスにインストールします。最初に、Maven パッケージを使用してリポジトリを追加するには、次のように入力します。

    sudo wget https://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo

    パッケージのバージョン番号を設定するには、次のように入力します。

    sudo sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo

    続いて、yum を使用して Maven をインストールします。

    sudo yum install -y apache-maven
  2. Gremlin ライブラリには Java 8 が必要です。EC2 インスタンスで Java 8 をインストールするには、次のように入力します。

    sudo yum install java-1.8.0-devel
  3. EC2 インスタンスで Java 8 をデフォルトランタイムとして設定するには、次のように入力します。

    sudo /usr/sbin/alternatives --config java

    プロンプトが表示されたら、Java 8 (2) の数を入力します。

  4. EC2 インスタンスで Java 8 をデフォルトコンパイラとして設定するには、次のように入力します。

    sudo /usr/sbin/alternatives --config javac

    プロンプトが表示されたら、Java 8 (2) の数を入力します。

  5. gremlinjava という名前のディレクトリを作成します。

    mkdir gremlinjava cd gremlinjava
  6. gremlinjava ディレクトリで pom.xml ファイルを作成してから、テキストエディタで開きます。

    nano pom.xml
  7. 以下の内容を pom.xml ファイルにコピーして保存します。

    <project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd"> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <modelVersion>4.0.0</modelVersion> <groupId>com.amazonaws</groupId> <artifactId>GremlinExample</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>GremlinExample</name> <url>https://maven.apache.org</url> <dependencies> <dependency> <groupId>org.apache.tinkerpop</groupId> <artifactId>gremlin-driver</artifactId> <version>3.4.8</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.tinkerpop/gremlin-groovy --> <dependency> <groupId>org.apache.tinkerpop</groupId> <artifactId>gremlin-groovy</artifactId> <version>3.4.8</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-jdk14</artifactId> <version>1.7.25</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.3</version> <configuration> <executable>java</executable> <arguments> <argument>-classpath</argument> <classpath/> <argument>com.amazonaws.App</argument> </arguments> <mainClass>com.amazonaws.App</mainClass> <complianceLevel>1.8 </complianceLevel> <killAfter>-1</killAfter> </configuration> </plugin> </plugins> </build> </project>
    注記

    既存の Maven プロジェクトを変更する場合、必要な依存関係が前述のコードにおいて強調表示されます。

  8. CA 証明書をダウンロードします。Gremlin Java SDK には、リモート証明書を検証する証明書が必要です。

    wget https://www.amazontrust.com/repository/SFSRootCAG2.pem
  9. コマンドラインで次のように入力して、ソースコード例 (src/main/java/com/amazonaws/) のサブディレクトリを作成します。

    mkdir -p src/main/java/com/amazonaws/
  10. src/main/java/com/amazonaws/ ディレクトリで App.java という名前のファイルを作成してから、テキストエディタで開きます。

    nano src/main/java/com/amazonaws/App.java
  11. App.java ファイルに次の内容をコピーします。置換 your-neptune-endpoint with the address of your Neptune DB instance. Do not include the https:// prefix in the addContactPoint method.

    注記

    For information about finding the hostname of your Neptune DB instance, see Amazon Neptune エンドポイントへの接続.

    package com.amazonaws; import org.apache.tinkerpop.gremlin.driver.Cluster; import org.apache.tinkerpop.gremlin.driver.Client; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal; import static org.apache.tinkerpop.gremlin.process.traversal.AnonymousTraversalSource.traversal; import org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection; import org.apache.tinkerpop.gremlin.structure.T; public class App { public static void main( String[] args ) { Cluster.Builder builder = Cluster.build(); builder.addContactPoint("your-neptune-endpoint"); builder.port(8182); builder.enableSsl(true); builder.keyCertChainFile("SFSRootCAG2.pem"); Cluster cluster = builder.create(); GraphTraversalSource g = traversal().withRemote(DriverRemoteConnection.using(cluster)); // Add a vertex. // Note that a Gremlin terminal step, e.g. iterate(), is required to make a request to the remote server. // The full list of Gremlin terminal steps is at https://tinkerpop.apache.org/docs/current/reference/#terminal-steps g.addV("Person").property("Name", "Justin").iterate(); // Add a vertex with a user-supplied ID. g.addV("Custom Label").property(T.id, "CustomId1").property("name", "Custom id vertex 1").iterate(); g.addV("Custom Label").property(T.id, "CustomId2").property("name", "Custom id vertex 2").iterate(); g.addE("Edge Label").from(g.V("CustomId1")).to(g.V("CustomId2")).iterate(); // This gets the vertices, only. GraphTraversal t = g.V().limit(3).elementMap(); t.forEachRemaining( e -> System.out.println(t.toList()) ); cluster.close(); } }
  12. 次の Maven コマンドを使用してサンプルをコンパイルおよび実行します。

    mvn compile exec:exec

前述の例では、g.V().limit(3).elementMap() トラバーサルを使用して最初の 2 つの頂点の各プロパティのキーと値のマップを返します。その他の対象にクエリを実行するには、いずれかの適切な終了メソッドを持つ Gremlin トラバーサルで置き換えます。

注記

Gremlin クエリの最後の部分、.toList() では、評価のためにトラバーサルをサーバーに送信する必要があります。If you don't include that method or another equivalent method, the query is not submitted to the Neptune DB instance.

g.addV(' などの頂点またはエッジを追加するときに、適切な終点を追加する必要もあります。

The following methods submit the query to the Neptune DB instance:

  • toList()

  • toSet()

  • next()

  • nextTraverser()

  • iterate()