九月 18, 2012

hoamon's sandbox
hoamon
hoamon's sandbox is about »

tag cloud

» Tomcat6 + JSP + JNDI + Oracle 設定

朋友公司最近想要接個案子:『在 AWS 上面架一個 JSP 網站,而且指定資料庫須用 Oracle DB 』。

用 Oracle DB 不是難事,拿信用卡註冊進去就有了,跑一個小時最低收你 0.17 美金(約臺幣 6 元),很多人都付得起。麻煩的是朋友及我都不是熟 JAVA 及 Oracle 的人。因為我們愛用 Open Source (奇怪 JAVA 明明就是 Open Source 呀! 怎麼我直覺不是呢???)。

為此,我找了高中同學 K ,他可是名門正派(資工背景)出身,從 C , Delphi , VisualBasic , JAVA , .Net 一路走來的程式設計師。而且他幫客戶開發時,多半是採用 Oracle 或是 SQL Server 的資料庫。於是一拍即合。

那我要幹麼呢? 也不是作個牽溝仔怎麼簡單的工作就結束了。 K 只熟 Windows ,而那個 AWS EC2 是要跑 Linux 的。所以我的工作就是搞定 Linux 上的 Http 伺服器( Apache or Nginx )、 AP 伺服器( Tomcat6 ) 及 JNDI Container (其實,我一直想不懂這 JAVA 或物件導向的術語)。

在 AWS 上租用 Oracle DB 是即用即付的,所以我想要在本機先測試 Tomcat6, JNDI 設定成功後再送上去。

我的作法是在本機的 VirtualBox Windows 上裝一個 Oracle 11g express (因 Oracle 沒出 Ubuntu 版),再作一個 1521 port 的 forward ,下載 sqlplus, basic 套件,測試連線正常:

$ sqlplus test/test@//localhost/XE

第一個 test 表帳號,第二個表密碼,最後面的 XE 表資料庫實例的名稱,預設是 XE 。能看到 SQL> 提示就表示可連線 Oracle 11g 了。

安裝 Tomcat6 非常簡單,在 Ubuntu 中打上 apt-get install tomcat6 就夠了。接下來去抓 Oracle 的 jdbc driver: ojdbc6.jar ,置入 /usr/share/java 目錄。然後修改 tomcat6 設定檔:

# /etc/tomcat6/catalina.properties
common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,/var/lib/tomcat6/common/classes,/var/lib/tomcat6/common/*.jar,/usr/share/java/*.jar

# /etc/tomcat6/content.xml

<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource name="jdbc/OracleDB" auth="Container"
type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:XE"
username="test" password="test" maxActive="20" maxIdle="10"
maxWait="-1"/>
</Context>

# /var/lib/tomcat6/webapps/MyApps/WEB-INF/web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>My Web Application</display-name>
<description>
A application for test.
</description>
<resource-ref>
<description>Oracle Datasource example</description>
<res-ref-name>jdbc/OracleDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>

然後在 /var/lib/tomcat6/webapps/MyApps/ 放入一個 test_oracle.jsp 程式:


<%@ page import="java.sql.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="javax.naming.*" %>
<%@ page language="java" contentType="text/html;charset=UTF8" %>
<%
Connection con = null;
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/OracleDB");
try {
con = ds.getConnection();
if(!con.isClosed()){
out.println("與 Oracle db 有連線!!\n<br/>");
}
con.close();
} catch (SQLException sqle) {
out.println("sqle = "+sqle);
} finally {
con = null;
}
%>

最後到瀏覽器去觀看 http://localhost:8080/MyApps/test_oracle.jsp 網頁,有看到『與 Oracle db 有連線!! 』那就成功了。


四月 25, 2009

hoamon's sandbox
hoamon
hoamon's sandbox is about »

tag cloud

» Does IBM Merge Sun? No, but Oracle will.


引自:http://www.techcrunch.com/wp-content/uploads/2009/04/oracle-sun.png


事實上, IBM 買 Sun ,就產品線而言,只有一個 Java 對它是值錢的,其他的 Sparc CPU, Solaris OS 對 IBM 而言,都是「無用的」,因為它光是整合自己的資產都花了不少心力了,何況還要拿一個架構幾乎不同的東西來研究,雖然就 Solaris 來說,它比 AIX 好用,但又如何! IBM 自己也在發展 Linux 呀,何必再拿 Solaris 上架。

至於 MySQL 方面,雖然它與 DB2 有互補效應,不過,我認為這些原本用 MySQL 的網站,就算將來搞大了, MySQL 撐不住時,要它換 DB2 ,它們也不見得願意,換 PostgreSQL 的可能性都還會比 DB2 Express-C 高點。

事實上,除了一起推廣 Java 外, IBM 與 SUN 根本就是彼此的大對頭,像是:
Sparc V.S Power
Solaris V.S AIX
NetBeans V.S Eclipse(還故意叫「日蝕」)
PostgreSQL + MySQL V.S DB2
GlassFish V.S Websphere
只可惜在規模上, SUN 遠遠不如 IBM 。

所以 IBM 實際上是拿 65 億美金買了 Java (事實上, Java 也是 Sun 在紐約證交所的代號)。日前因收購消息, Java 的市值也差不多來到 60~70 億美元附近。

然而,事情沒那麼簡單,以 IBM 這個企業巨人而言,出此招絕不是只有在技術面上考量而已,還有策略。

當 IBM 叫囂要買下 SUN 的同時,其實就算後來沒買到,這都已經讓 IBM 得利了。怎麼說,先說說買下 SUN 的情況, IBM 將完全掌握 Java ,雖然它本身是 Open Source 軟體,但未來 IBM 絕對可控制 Java 語言的方向; 但在沒買下的情況中, IBM 也會有所收獲,因為它對那些 SUN 原有客戶及潛在客戶喊話:「現在買 SUN 的機器是沒有保證的,因為我可以花錢讓你們買的機器沒有未來擴充性。」

我認為這購併真是 IBM 的高招呀! 不過,我想 SUN 應該早就明白這一點了,所以它在2004年即努力地將過去的成果拼命 Open Source 化,讓客戶認知 - 使用它們的產品就算公司倒了,也能繼續運作下去,不過是少了塊 Logo 而已。

直到昨天,我都還認為 SUN 應該就這麼倒下去了吧!因為它們拒絕了 IBM 的購併提議。然而,昨天出現了大逆轉: Oracle 加入戰局了。

Oracle 打算拿出 74 億美金併購 SUN ,而這一點也經 SUN 董事會同意了,現下只等股東會開會通過, SUN 就成了 Oracle 的一份子。相較於 IBM 花 65 億只買下 Java , Orcale 買 74 億買 MySQL, Sparc, Solaris,Java 就顯得非常划算了。

一直以來(從學會 vi 開始),我對 SUN 的產品(除了 Java)都非常有好感, 因為 Bill Joy 是 SUN 的四位創辦人之一,而他的成就改變了我這一生使用電腦的方式 - 總是在 Escapse。

最近也裝了 OpenSolaris 2008.11 ,雖然在使用習慣上,還是離 Ubuntu 有一段距離,但它有個耀眼的功能,是我非常欣賞的,而這功能對「不使用版本控制器的人」來說,可算是「殺手級應用」。那就是「時間軸」功能。在 OpenSolaris 中,啟動「時間軸」功能後,則你在 ZFS 磁區中的所有檔案都會被作快照,所以當你想找出兩天前被你誤刪的檔案就非常簡單啦。詳情請見ZFS snapshot visualization in GNOME

biggo.com.tw

A Django site.