IBM Bluemix から提供されているウェブの統合開発環境である IBM DevOps サービス。ウェブ上に用意されたソースコードエディタを使ってソースコードを編集したり、バージョン管理を行うことができるので、手元のクライアント環境に依存せずにアジャイルなソースコード管理を行うことができます。
ソースコードエディタ単体として見ると、専用のクライアントアプリケーションと比較しての使い勝手ではやはりネイティブアプリケーションの方が使いやすいと感じることもあります。とはいえ、ちょっとしたソースコードの変更を行う必要が生じた際に、わざわざ cf ツールを用意することなくデプロイまで行うことができる環境、というメリットもあります。ケース・バイ・ケースで使い分けることになると思っています。
そんな DevOps サービスを使って Liberty for Java ランタイムとして Bluemix 上に作成したプロジェクトのソースコードを編集しようとすると、その初期ディレクトリ構成が少し特殊で、戸惑うことがあります。例えば Bluemix 環境から Liberty for Java のランタイムを作成し、「Git の追加」をすると DevOps サービスが起動してソースコードのローカルリポジトリがウェブ上に作成されます:

作成されたリポジトリにアクセスするには「コードの編集」をクリックします:

以下は初期状態のまま何も変更を加えていない状態でのソースコードのディレクトリ構成です:

ここに外部ファイル(例えば MySQL コネクターの JAR ファイル)を追加しようとした時にどこに追加すればいいか、すぐに分かりますか?
正解と、そのための手順は以下の通りです。まず src/main/webapp フォルダを右クリックし、ポップアップメニューから「新規」-「フォルダー」を選択します:

新規にフォルダが作成されます。フォルダ名の入力が求められたら "WEB-INF" と(半角大文字で)入力します:

更に、今作成した WEB-INF フォルダを右クリックして、同様に新規フォルダ "lib" をこの下に作成します。:

これで src/main/webapp/WEB-INF/lib フォルダが作成されました。このフォルダの中に JAR ファイルを入れておけば自動的にロードしてくれるようになります:

実際に JAR ファイルをアップロードしてみましょう。lib フォルダを右クリックし、ポップアップメニューで今度は「インポート」-「ファイルまたはアーカイブ」を選択します:

ファイルのアップロードダイアログが表示されるので、ローカルファイルシステムからアップロードしたい JAR ファイルを選択します(この例では MySQL JDBC Connector の JAR ファイルを選択しています):

選択するとアップロードが開始されます。アップロード状況がプログレスバーで確認できます:

アップロードが完了すると、プロジェクト内のファイルとして参照できるようになります。これでこのプロジェクト内で MySQL JDBC Connector を使うことができるようになりました:

試しに JSP を追加して動作確認してみます。src/main/webapp フォルダを右クリックして「新規作成」-「ファイル」を選んで、MySQL.jsp という名前のファイルを新規に作成します:

ファイルはこの画面から中身を編集できるので、以下の様な内容にしました:
MySQL サーバー名、データベース名、ユーザー名、パスワードを指定してコネクションを貼り、その貼ったコネクション変数を無理やり(文字列化して)表示する、というものです。
実際に動かそうとすると MySQL サーバーが必要です。もし自由に使える MySQL サーバーが手元にない場合はこちらのデモ用サーバーをお使いいただく方法もあります:
StrongLoop のデモ用 MySQL サーバー
このソースを追加して(サーバー名、データベース名、ユーザー名、パスワードを変更して)コミット&プッシュ&ビルド&デプロイ後にアクセスすると、このような画面になるはずです。わかりにくいかもしれませんが、コネクション変数(conn)を無理やり文字列化した結果が表示されています。少なくとも MySQL の JDBC Connector は正しく動いている(つまり追加した JAR ファイルが読み込まれている)、ということがわかりますね:

ソースコードエディタ単体として見ると、専用のクライアントアプリケーションと比較しての使い勝手ではやはりネイティブアプリケーションの方が使いやすいと感じることもあります。とはいえ、ちょっとしたソースコードの変更を行う必要が生じた際に、わざわざ cf ツールを用意することなくデプロイまで行うことができる環境、というメリットもあります。ケース・バイ・ケースで使い分けることになると思っています。
そんな DevOps サービスを使って Liberty for Java ランタイムとして Bluemix 上に作成したプロジェクトのソースコードを編集しようとすると、その初期ディレクトリ構成が少し特殊で、戸惑うことがあります。例えば Bluemix 環境から Liberty for Java のランタイムを作成し、「Git の追加」をすると DevOps サービスが起動してソースコードのローカルリポジトリがウェブ上に作成されます:

作成されたリポジトリにアクセスするには「コードの編集」をクリックします:

以下は初期状態のまま何も変更を加えていない状態でのソースコードのディレクトリ構成です:

ここに外部ファイル(例えば MySQL コネクターの JAR ファイル)を追加しようとした時にどこに追加すればいいか、すぐに分かりますか?
正解と、そのための手順は以下の通りです。まず src/main/webapp フォルダを右クリックし、ポップアップメニューから「新規」-「フォルダー」を選択します:

新規にフォルダが作成されます。フォルダ名の入力が求められたら "WEB-INF" と(半角大文字で)入力します:

更に、今作成した WEB-INF フォルダを右クリックして、同様に新規フォルダ "lib" をこの下に作成します。:

これで src/main/webapp/WEB-INF/lib フォルダが作成されました。このフォルダの中に JAR ファイルを入れておけば自動的にロードしてくれるようになります:

実際に JAR ファイルをアップロードしてみましょう。lib フォルダを右クリックし、ポップアップメニューで今度は「インポート」-「ファイルまたはアーカイブ」を選択します:

ファイルのアップロードダイアログが表示されるので、ローカルファイルシステムからアップロードしたい JAR ファイルを選択します(この例では MySQL JDBC Connector の JAR ファイルを選択しています):

選択するとアップロードが開始されます。アップロード状況がプログレスバーで確認できます:

アップロードが完了すると、プロジェクト内のファイルとして参照できるようになります。これでこのプロジェクト内で MySQL JDBC Connector を使うことができるようになりました:

試しに JSP を追加して動作確認してみます。src/main/webapp フォルダを右クリックして「新規作成」-「ファイル」を選んで、MySQL.jsp という名前のファイルを新規に作成します:

ファイルはこの画面から中身を編集できるので、以下の様な内容にしました:
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %> <%@ page import="java.sql.*" %> <html> <body> <% Connection conn = null; //. DB Access information String dbclass = "com.mysql.jdbc.Driver"; String dbhost = "(MySQLサーバー名)"; String dbname = "(データベース名)", dbusername = "(ユーザー名)", dbpassword = "(パスワード)"; int dbport = 3306; String dburi = "mysql://" + dbhost + "/" + dbname; try{ Class.forName( dbclass ); conn = DriverManager.getConnection( "jdbc:" + dburi, dbusername, dbpassword ); }catch( Exception e ){ e.printStackTrace(); } %> <h2>conn = <%= conn %></h2> </body> </html>
MySQL サーバー名、データベース名、ユーザー名、パスワードを指定してコネクションを貼り、その貼ったコネクション変数を無理やり(文字列化して)表示する、というものです。
実際に動かそうとすると MySQL サーバーが必要です。もし自由に使える MySQL サーバーが手元にない場合はこちらのデモ用サーバーをお使いいただく方法もあります:
StrongLoop のデモ用 MySQL サーバー
このソースを追加して(サーバー名、データベース名、ユーザー名、パスワードを変更して)コミット&プッシュ&ビルド&デプロイ後にアクセスすると、このような画面になるはずです。わかりにくいかもしれませんが、コネクション変数(conn)を無理やり文字列化した結果が表示されています。少なくとも MySQL の JDBC Connector は正しく動いている(つまり追加した JAR ファイルが読み込まれている)、ということがわかりますね:

コメント