ワークベンチには[JBoss Central]が表示されます。この中にOpenShiftアプリケーションを作成するためのメニューがあるので、これをクリックします。
接続画面が表示されます。[Password]には「admin」と入れて[Next]をクリックします。[Secure Storage]の画面でも[Password]と[Confirm password]へ「admin」と入れて[OK]をクリックします。providing additional informationを追加するか聞かれますが、これは[No]をクリックします。
[New OpenShift Application]画面では、[Name]へ「hellojboss」、[Type]へ「jbossas-7」、[Gear profile]へ「small」を指定し、[Embeddable Cartridges]の「mysql-5.1」をチェックして[Next]をクリックします。後は画面に従って進み、最後に[Finish]をクリックします。
これで、hellojbossのWebアプリが作成されます。「http://hellojboss-atmark.example.com」をWebブラウザで開くと、「Welcome To OpenShift, JBossAS7 Cartridge」の画面が表示されます。
JBoss Toolsに含まれるOpenShiftプラグインは、「openshift-java-client」を使っています。これを使うと、OpenShiftのREST APIを利用できるJavaアプリを簡単に実装できます。GitHubで公開されているので、使ってみましょう。
$ cd ~/workspace $ git clone https://github.com/openshift/openshift-java-client.git $ cd openshift-java-client
パッケージを作成します。これにより、targetディレクトリにJARファイルが生成されます。
$ mvn -Dmaven.test.skip=true package
このパッケージについて、「mvn dependency:tree」コマンドを使って、利用しているJARファイルの依存関係を確認しましょう。
$ mvn dependency:tree 略 [INFO] com.openshift:openshift-java-client:jar:2.0.3-SNAPSHOT [INFO] +- org.jboss:jboss-dmr:jar:1.0.0.Final:compile [INFO] +- com.jcraft:jsch:jar:0.1.44-1:compile [INFO] +- junit:junit:jar:4.8.2:test [INFO] +- org.mockito:mockito-core:jar:1.9.0-rc1:test [INFO] | +- org.hamcrest:hamcrest-core:jar:1.1:test [INFO] | \- org.objenesis:objenesis:jar:1.0:test [INFO] +- org.easytesting:fest-assert:jar:1.4:test [INFO] | \- org.easytesting:fest-util:jar:1.1.6:test [INFO] +- commons-io:commons-io:jar:2.1:test [INFO] +- org.slf4j:slf4j-api:jar:1.6.4:compile [INFO] +- org.slf4j:slf4j-log4j12:jar:1.6.4:compile [INFO] \- log4j:log4j:jar:1.2.16:compile 略
Eclipse上で、新規プロジェクトとしてJavaプロジェクトを作成します。ここでは、「simple_rhc」というプロジェクト名とします。「openshift-java-client-2.0.3-SNAPSHOT.jar」と、これが依存するJARファイルを「lib」ディレクトリへ用意します。依存関係は先ほど確認したので、「$HOME/.m2」にある必要なライブラリを次のようにしてコピーします。
$ mkdir ~/workspace/eclipse/simple_rhc/lib $ cd ~/workspace/eclipse/simple_rhc/lib $ cp $HOME/workspace/openshift-java-client/target/openshift-java-client-2.0.3-SNAPSHOT.jar . $ cp $HOME/.m2/repository/org/jboss/jboss-dmr/1.0.0.Final/jboss-dmr-1.0.0.Final.jar . $ cp $HOME/.m2/repository/com/jcraft/jsch/0.1.44-1/jsch-0.1.44-1.jar . $ cp $HOME/.m2/repository/junit/junit/4.8.2/junit-4.8.2.jar . $ cp $HOME/.m2/repository/org/mockito/mockito-core/1.9.0-rc1/mockito-core-1.9.0-rc1.jar . $ cp $HOME/.m2/repository/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar . $ cp $HOME/.m2/repository/org/objenesis/objenesis/1.0/objenesis-1.0.jar . $ cp $HOME/.m2/repository/org/easytesting/fest-assert/1.4/fest-assert-1.4.jar . $ cp $HOME/.m2/repository/org/easytesting/fest-util/1.1.6/fest-util-1.1.6.jar . $ cp $HOME/.m2/repository/commons-io/commons-io/2.1/commons-io-2.1.jar . $ cp $HOME/.m2/repository/org/slf4j/slf4j-api/1.6.4/slf4j-api-1.6.4.jar . $ cp $HOME/.m2/repository/org/slf4j/slf4j-log4j12/1.6.4/slf4j-log4j12-1.6.4.jar . $ cp $HOME/.m2/repository/log4j/log4j/1.2.16/log4j-1.2.16.jar .
これで、openshift-java-clientを使える準備ができました。
Eclipseで、simple_rhcをリフレッシュしてライブラリファイルを反映します。ビルドパスへ、これらのjarファイルをすべて追加したら、「jp.example」パッケージを作成します。最後に、次のRhc.javaを作成します。
package jp.example;
import com.openshift.client.IApplication;
import com.openshift.client.IDomain;
import com.openshift.client.IEmbeddedCartridge;
import com.openshift.client.IOpenShiftConnection;
import com.openshift.client.IUser;
import com.openshift.client.OpenShiftConnectionFactory;
import com.openshift.client.configuration.OpenShiftConfiguration;
public class Rhc {
public static void main(String[] argv) throws Exception {
String applicationId = "simple-rhc";
String username = "admin";
String password = "admin";
IOpenShiftConnection connection = new OpenShiftConnectionFactory()
.getConnection(applicationId, username, password,
new OpenShiftConfiguration().getLibraServer());
IUser user = connection.getUser();
System.out.println("User Info");
IDomain domain = user.getDefaultDomain();
if (domain != null) {
System.out.println("\tdomain.getId():\t" + domain.getId());
System.out.println("\tuser.getRhlogin:\t" + user.getRhlogin());
}
System.out.println("");
System.out.println("Application Info");
if (domain != null) {
for (IApplication app : domain.getApplications()) {
System.out.println("\tapp.getName():\t" + app.getName());
System.out.println("\t\tapp.getCartridge().getName():\t"
+ app.getCartridge().getName());
System.out.println("\t\tapp.getCreationTime():\t"
+ app.getCreationTime());
System.out.println("\t\tapp.getUUID():\t\t" + app.getUUID());
System.out.println("\t\tapp.getGitUrl():\t" + app.getGitUrl());
System.out.println("\t\tapp.getApplicationUrl():\t"
+ app.getApplicationUrl() + "\n");
System.out.println("\t\t Embedded:");
for (IEmbeddedCartridge cartridge : app.getEmbeddedCartridges()) {
System.out.println("\t\t\t" + cartridge.getName() + " - "
+ cartridge.getUrl());
}
System.out.println("");
}
}
}
}
Rhcクラスについては、openshift-java-clientライブラリの機能の一部を確認しています。使用しているクラス名から大体の機能は分かるはずです。IOpenShiftConnection型のconnection変数を使ってOpenShiftへ接続し、ユーザー情報とカートリッジの情報を取得しています。
EclipseからJavaアプリケーションとして実行すると、結果は次のようになります。
log4j:WARN No appenders could be found for logger (com.openshift.internal.client.RestService).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
User Info
domain.getId(): atmark
user.getRhlogin: admin
Application Info
app.getName(): hello
app.getCartridge().getName(): php-5.3
app.getCreationTime(): Mon Feb 18 21:21:26 JST 2013
app.getUUID(): 80960c1fac53477a9e4597f948c8a7e3
app.getGitUrl(): ssh://[email protected]/~/git/hello.git/
app.getApplicationUrl(): http://hello-atmark.example.com/
Embedded:
php-5.3 - null
app.getName(): hellojboss
app.getCartridge().getName(): jbossas-7
app.getCreationTime(): Mon Feb 18 21:40:50 JST 2013
app.getUUID(): 419e974cc53640f783fbd3048aedfd2b
app.getGitUrl(): ssh://[email protected]/~/git/hellojboss.git/
app.getApplicationUrl(): http://hellojboss-atmark.example.com/
Embedded:
jbossas-7 - null
mysql-5.1 - mysql://127.0.250.129:3306/
時刻やハッシュ値は環境によって変わります。openshift-java-clientを使って、OpenShiftのアプリ情報を取得できていることが分かります。
以上、簡単ですが、OpenShiftについて解説しました。OpenShiftのサービスを使ってみるだけでも楽しいのですが、こうやってOpenShift Originを用意して、いろいろと調査してみると、どんな技術を使ってPaaSが実装されているのかを理解できます。
今回紹介した内容は、ほんの一部ですが、皆さんもいろいろと調べて楽しんでみてください。
Copyright © ITmedia, Inc. All Rights Reserved.