HEROKUからOracle11gにアクセスして動くWebアプリケーション
Herokuで動くEmbedded Tomcat7から、インターネット上にあるOracle11gにアクセスするJava Webアプリケーションです。まだScalaではありません。
このコードは動作テスト用に作ったものだということを予めお断りしておきます。また、実際のシステム構成としては望ましいものではありません。
OracleDBへのアクセスは、OracleのJDBCドライバとSeedoDBフレームワークを使っています。このJarファイルは以下のPOM.XMLファイルにあるリポジトリからダウンロードして、
<project xmlns=”http://maven.apache.org/POM/4.0.0″ xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd”>
<modelVersion>4.0.0</modelVersion>
<groupId>com.heroku.seedo</groupId>
<artifactId>embeddedTomcatSeedo</artifactId>
<version>1.0-SNAPSHOT</version>
<name>embeddedTomcatSeedo Maven Webapp</name>
<repositories>
<repository>
<id>maven.apache.org</id>
<name>Maven Apache</name>
<url>http://maven.apache.org</url>
</repository>
<repository>
<id>seedo.co.jp</id>
<name>Seedo Repository</name>
<url>http://www.ewavesolutions.com/seedorepo/</url>
</repository>
</repositories>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>7.0.22</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-logging-juli</artifactId>
<version>7.0.22</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>7.0.22</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper</artifactId>
<version>7.0.22</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper-el</artifactId>
<version>7.0.22</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jsp-api</artifactId>
<version>7.0.22</version>
</dependency>
<dependency>
<groupId>oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11</version>
</dependency>
<dependency>
<groupId>oracle</groupId>
<artifactId>orai18n</artifactId>
<version>11</version>
</dependency>
<dependency>
<groupId>seedo</groupId>
<artifactId>seedo</artifactId>
<version>1</version>
</dependency>
</dependencies>
<build>
<finalName>embeddedTomcatSeedo</finalName>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.1.1</version>
<configuration>
<assembleDirectory>target</assembleDirectory>
<programs>
<program>
<mainClass>launch.Main</mainClass>
<name>webapp</name>
</program>
</programs>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>assemble</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>JSPファイルは、sqlplus1.jsp として、
<%@ page contentType="text/html; charset=UTF-8" %> <%@ page language="java" %> <%@ page import = "java.util.Date" %> <%@ page import = "java.util.List" %> <%@ page import = "java.io.*" %> <%@ page import = "javax.servlet.*" %> <%@ page import = "javax.servlet.http.*" %> <%@ page import = "seedo.*" %> <%@ page import = "seedo.database.*" %> <jsp:useBean id="date" class="java.util.Date" /> <% SqlPlus sqlplus = new SqlPlus(); %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META content="text/html; charset=UTF-8" http-equiv="Content-type"> <TITLE>SeeDo SqlPlus</TITLE> </HEAD> <BODY> <%= date.toString() %><BR/> <HR/> <%= sqlplus.getTableList().toString() %> <HR/> 総数=<%= sqlplus.execute("select * from emp").getResultSize() %> <TABLE border="1"> <% try{ List<Object []> result1 = sqlplus.getResult(); for(int i = 0;i < result1.size();i++){ Object [] record = result1.get(i); out.print("<TR><TH>No."+ i + "</TH>"); for(int j = 0;j < record.length;j++){ out.print("<TD>" + (record[j] != null ? record[j].toString():"") + "</TD>"); } out.print("</TR>"); } %> </TABLE> <HR/> <% } catch (Exception ex) { ex.printStackTrace(); } finally { sqlplus.close(); } %> </BODY> </HTML>ブラウザの画面は以下の通りです。
EMP表の内容が一覧表示されます。SeedoDBフレームワーク用のDB接続定義情報は、
env.propertiesファイルに記述します。このファイルは、HEROKUフォルダの直下に置きます。
DBフレームワークでは、OracleDBとMySQLとが使えます。
#はコメントです。
———————————–driver = oracle.jdbc.driver.OracleDriver
#driver = com.mysql.jdbc.Driver#jdbc = jdbc:mysql://XXX.XXX.XXX.XXX:3306/ABCDEFG?useUnicode=true&characterEncoding=UTF-8
jdbc = jdbc:oracle:thin:@YYY.YYY.YYY.YYY:1521:ORCL
user = scott
password = tiger———————————–
IPアドレスは、XXXやYYYの部分です。
MySQLのDB名は、ABCDEFGとなっていますし、OracleSIDはORCLと定義しているので、ここも実際のDB名やSIDを書きます。開発環境側のフォルダ構成は以下のようになります。
ここでミソなのが、依存するJarファイルをインターネット上に置いて、ダウンロードできるようにすることです。
POM.XMLのなかで以下のように定義すると、seedo-1.jarがダウンロードされます。
seedo
seedo
1
リポジトリ上のJarファイルは、以下のURLでアクセスできるようにしなければなりません。
http://www.ewavesolutions.com/seedorepo/seedo/seedo/1/seedo-1.jar