Scala+DBMS+Web スカラ座の夜

2011年12月26日

Heroku Embedded Tomcat + Seedo DB framework(Java) + Oracle11g

Filed under: Scala — admin @ 7:40 PM

HEROKUからOracle11gにアクセスして動くWebアプリケーション

Herokuで動くEmbedded Tomcat7から、インターネット上にあるOracle11gにアクセスするJava Webアプリケーションです。まだScalaではありません。
このコードは動作テスト用に作ったものだということを予めお断りしておきます。また、実際のシステム構成としては望ましいものではありません。

OracleDBへのアクセスは、OracleのJDBCドライバとSeedoDBフレームワークを使っています。このJarファイルは以下のPOM.XMLファイルにあるリポジトリからダウンロードして、に依存関係のあるJarファイルを定義しています。


<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

Comments

comments

Powered by Facebook Comments

コメントはまだありません

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress