HEROKU JAVA + MySQL
HEROKUとSeedo DB フレームワーク(Java)によるMySQLへの対応は、env.propertiesファイルを以下のように書き換えます。
ZZZはIPアドレスを書きます。
driver = com.mysql.jdbc.Driver jdbc = jdbc:mysql://ZZZ.ZZZ.ZZZ.ZZZ:3306/seedo?useUnicode=true&characterEncoding=UTF-8 user = scott password = tiger
さきのOracleDB同様にHEROKUからインターネットを経由して、MySQLに直接JDBCによってアクセスします。
env.propertiesファイルのDB接続定義を書き換えるだけでOKです。
pom.xmlファイルには以下のように、MySQLのJDBCドライバ用Jarファイルをダウンロードできるようにdependencyタグを追加します。
oracle mysql_connectory_java 5.1.17
データベースは、クラウドではなく自分か管理しているDBサーバーを使うというシステム構成です。セキュリティ上は好ましくはないです。MySQLはアクセスするIPアドレスを特定できるので最低でもこの設定は必要でしょう。
これらのコードは実験的なものです。
Servlet 3.0
Servletは、TOMCAT7がサポートしている
Servlet 3.0の主要なテーマの1つであるEoDです。
Servlet 3.0では、EoDとして「Annotation based configuration」を新しく定義しました。アノテーションを利用することでServletの開発が簡単になります。
package servlet; import java.io.IOException; import java.io.PrintWriter; import java.util.*; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.sql.*; import seedo.*; import seedo.database.*; @WebServlet( name = "DbServlet", urlPatterns = {"/db"} ) public class DbServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // ServletOutputStream out = resp.getOutputStream(); PrintWriter out = resp.getWriter(); resp.setContentType("text/html; charset=Shift_JIS"); out.println("<html><body>"); out.println("hello heroku db"); db(out); out.println("</body></html>"); out.flush(); out.close(); } private void db(PrintWriter out) { SqlPlus sqlplus = null; try { sqlplus = new SqlPlus(); List<Object []> result1 = sqlplus.select("*").from("EMP").orderBy("ename").executeQuery(); out.println("<TABLE border='1'>"); for(int i = 0;i < result1.size();i++){ Object [] record = result1.get(i); out.println("<TR><TH>No."+ i + "</TH>"); for(int j = 0;j < record.length;j++){ out.println("<TD>" + (record[j] != null?record[j].toString():"") + "</TD>"); } out.println("</TR>"); } out.println("</TABLE>"); } catch (Exception ex) { ex.printStackTrace(); } finally { sqlplus.close(); } } }
Servlet2.5では、次のように作成したサーブレットをweb.xmlにマッピングしなければなりませんでした。
DbServlet servlet.DbServlet DbServlet /db
「Annotation based configuration」を利用すると、「@WebServlet」というアノテーションを付加するだけでOKです。
HEROKUのGet Startingにある、HelloServlet の@WebServletコード部分を少しだけ変更してみました。
package servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet( name = "HelloServlet", urlPatterns = {"/hello"} ) public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletOutputStream out = resp.getOutputStream(); out.write("hello heroku".getBytes()); out.flush(); out.close(); } }
Test
HEROKUにアップロードする前にローカルPCの上で、
target\bin\webapp.batファイルを実行して、ブラウザから以下の2つのURLをアクセスすることができます。
DbServlet は、以下のURLです。
http://127.0.0.1:8080/db
HelloServlet は、以下のURLです。
http://127.0.0.1:8080/hello