3.4.5.2. Java MicroServices JPA アプリケーションの作成

odo を使用すると、Java MicroServices JPA アプリケーションのサンプルを作成し、管理できます。

手順

  1. サンプルアプリケーションのクローン作成

    $ git clone -b jpa-sample https://github.com/redhat-developer/application-stack-samples.git
  2. アプリケーションディレクトリーに移動します。

    $ cd ./application-stack-samples/jpa
  3. プロジェクトを初期化します。

    $ odo create java-openliberty java-application
  4. アプリケーションをクラスターにプッシュします。

    $ odo push

    これで、アプリケーションがクラスターにデプロイされます。

  5. OpenShift Container Platform ログをターミナルにストリーミングして、クラスターのステータスを表示します。

    $ odo log

    テストの失敗および UnknownDatabaseHostException エラーがあることに注意してください。これはアプリケーションにまだデータベースがないためです。

    [INFO] [err] java.net.UnknownHostException: ${DATABASE_CLUSTERIP}
    [INFO] [err]    at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:220)
    [INFO] [err]    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
    [INFO] [err]    at java.base/java.net.Socket.connect(Socket.java:609)
    [INFO] [err]    at org.postgresql.core.PGStream.<init>(PGStream.java:68)
    [INFO] [err]    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:144)
    [INFO] [err]    ... 86 more
    [ERROR] Tests run: 2, Failures: 1, Errors: 1, Skipped: 0, Time elapsed: 0.706 s <<< FAILURE! - in org.example.app.it.DatabaseIT
    [ERROR] testGetAllPeople  Time elapsed: 0.33 s  <<< FAILURE!
    org.opentest4j.AssertionFailedError: Expected at least 2 people to be registered, but there were only: [] ==> expected: <true> but was: <false>
            at org.example.app.it.DatabaseIT.testGetAllPeople(DatabaseIT.java:57)
    
    [ERROR] testGetPerson  Time elapsed: 0.047 s  <<< ERROR!
    java.lang.NullPointerException
            at org.example.app.it.DatabaseIT.testGetPerson(DatabaseIT.java:41)
    
    [INFO]
    [INFO] Results:
    [INFO]
    [ERROR] Failures:
    [ERROR]   DatabaseIT.testGetAllPeople:57 Expected at least 2 people to be registered, but there were only: [] ==> expected: <true> but was: <false>
    [ERROR] Errors:
    [ERROR]   DatabaseIT.testGetPerson:41 NullPointer
    [INFO]
    [ERROR] Tests run: 2, Failures: 1, Errors: 1, Skipped: 0
    [INFO]
    [ERROR] Integration tests failed: There are test failures.
  6. アプリケーションにアクセスするための Ingress URL を作成します。

    $ odo url create --port 8080
  7. 変更をクラスターにプッシュします。

    $ odo push
  8. 作成した URL を表示します。

    $ odo url list

    出力例

    Found the following URLs for component mysboproj
    NAME               STATE      URL                                           PORT     SECURE     KIND
    java-application-8080     Pushed     http://java-application-8080.apps-crc.testing     8080      false      ingress

    これでアプリケーションがクラスターにデプロイされ、作成される URL を使用してそのアプリケーションにアクセスできます。

  9. URL を使用して CreatePerson.xhtml データエントリーページに移動し、フォームを使用してユーザー名と年齢を入力します。保存 をクリックします。

    アプリケーションにはまだデータベースが接続されていないため、View Persons Record List リンクをクリックしてデータが表示されないことに注意してください。