IBM Bluemix から提供されているウェブの統合開発環境である IBM DevOps サービス。ウェブ上に用意されたソースコードエディタを使ってソースコードを編集したり、バージョン管理を行うことができるので、手元のクライアント環境に依存せずにアジャイルなソースコード管理を行うことができます。

ソースコードエディタ単体として見ると、専用のクライアントアプリケーションと比較しての使い勝手ではやはりネイティブアプリケーションの方が使いやすいと感じることもあります。とはいえ、ちょっとしたソースコードの変更を行う必要が生じた際に、わざわざ cf ツールを用意することなくデプロイまで行うことができる環境、というメリットもあります。ケース・バイ・ケースで使い分けることになると思っています。

そんな DevOps サービスを使って Liberty for Java ランタイムとして Bluemix 上に作成したプロジェクトのソースコードを編集しようとすると、その初期ディレクトリ構成が少し特殊で、戸惑うことがあります。例えば Bluemix 環境から Liberty for Java のランタイムを作成し、「Git の追加」をすると DevOps サービスが起動してソースコードのローカルリポジトリがウェブ上に作成されます:
2016022301


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


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


ここに外部ファイル(例えば MySQL コネクターの JAR ファイル)を追加しようとした時にどこに追加すればいいか、すぐに分かりますか?

正解と、そのための手順は以下の通りです。まず src/main/webapp フォルダを右クリックし、ポップアップメニューから「新規」-「フォルダー」を選択します:
2016022309


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


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


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


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


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


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


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


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


ファイルはこの画面から中身を編集できるので、以下の様な内容にしました:
<%@ 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 ファイルが読み込まれている)、ということがわかりますね:
2016022312