Exzilla.net
Contact
Home -> Articles -> OC4J -> HOWTO: Access JDBC DataSource from OC4J via JNDI Lookup
 
Features
Forums
Files
Blogs
HOWTO: Access JDBC DataSource from OC4J via JNDI Lookup
Sept 21, 2001
Fuju
Author's Bio | E-Mail
Copyright (C) 2001 exzilla.net

 

HOWTO: Access JDBC DataSource from OC4J via JNDI Lookup

Prerequistires:

Assumption:

ได้มีการติดตั้ง OC4J ที่ D:\oc4j ไว้แล้ว

Purpose:

แสดงวิธีการ ติดต่อใช้งาน Oracle Database โดย Java Servlet โดยผ่าน pre-configured JDBC Data Source และ ทำการทดสอบ Deploy ไปยัง OC4J

Step-by-Step Example:

1. Create new entry in d:\oc4j\j2ee\home\config\data-sources.xml

<data-source
class="com.evermind.sql.DriverManagerDataSource"
name="xzOracleDS"
location="jdbc/xzOracleCoreDS"
xa-location="jdbc/xa/xzOracleXADS"
ejb-location="jdbc/xzOracleDS"
connection-driver="oracle.jdbc.driver.OracleDriver"
username="scott"
password="tiger"
url="jdbc:oracle:thin:@dec4100.exzilla.net:1521:viper"
inactivity-timeout="30"
/>

 

ejb-location entry for Pooled DataSource
location entry for non-Pooled DataSource

2. Create Servlet program

Create an E:\workShop\simplewar\DataSourceServlet.java file

Make a JNDI lookup to retrive a JDBC data source named "jdbc/xzOracleDS"

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import javax.naming.*;
import java.sql.*;
import javax.sql.*;

public class DataSourceServlet extends HttpServlet {

/**
* Initialize global variables
*/

InitialContext context = null;

DataSource jdbcURL = null;

Connection conn = null;

public void init(ServletConfig config) throws ServletException {
super.init(config);
// Obtain connection using JNDI Lookup
try {
context = new InitialContext();
// for none-pooled purpose
// jdbcURL = (DataSource) context.lookup("jdbc/xzOracleCoreDS");
// for pooled purpose
jdbcURL = (DataSource) context.lookup("jdbc/xzOracleDS");
}
catch(NamingException e)
{
throw new ServletException("Error looking Data Source", e);
}
}

/**
* Process the HTTP Get request
*/

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String myTitle="Getting DataSource via JNDI Lookup ";
response.setContentType("text/html");
PrintWriter out = new PrintWriter (response.getOutputStream());
out.println("<html>");
out.println("<head><title> " + myTitle + "</title></head>");
out.println("<body><H1>" + myTitle + "</H1>");
// Connect to the database

try {
Connection conn = jdbcURL.getConnection();
out.println("Connected to database successfully ..");

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT ename FROM emp");
out.println("Results of the query");

// Display Results of the SQL Query

while ( rs.next() ) {
out.println( "<br>" + rs.getString("ename") + "<br>");
}
conn.close();
}
catch(SQLException e)
{

throw new ServletException("Error connecting to Database", e);
}
out.println("</body></html>");
out.close();
}

/**
* Get Servlet information
* @return java.lang.String
*/

public String getServletInfo() {
return "DataSourceServlet Information";
}
}

 

3. Complie the servlet program

เราต้องมีการ Add classes12.jar (database access), jndi.jar (JNDI lookup) ใน $CLASSPATH ก่อนที่จะทำการ complie

E:\> set CLASSPATH=D:\oc4j\j2ee\home\ejb.jar;.;D:\oc4j\j2ee\home\orion.jar;
D:\oc4j\j2ee\home\jndi.jar;D:\oc4j\j2ee\home\lib\classes12.jar

E:\> cd E:\workShop\simplewar\src

"D:\Program Files\Oracle\JDeveloper 3.2.3\java1.2\bin\javac" -d ..\WEB-INF\classes\ *.java

 

4.Modify web.xml file

สร้าง Servlet Context เพื่อใช้ในการอ้างถึง Servlet ที่เราพัฒนาขึ้น

<servlet>
<servlet-name>DataSourceServlet</servlet-name>
<servlet-class>DataSourceServlet</servlet-class>
</servlet>

 

5. Packing a War file

E:\>cd E:\workShop\simplewar
E:\workShop\simplewar> jar cvf simplewar.war .

 

6.Delop the servlet on OC4J by copying WAR file.

E:\workShop\simplewar> copy simplewar.war d:\oc4j\j2ee\home\applications

 

ดูรายละเอียดเรื่องการสร้างและใช้งาน WAR เพิ่มเติมที่นี่

7. Start the Oracle9iAS Containers

D:\j2ee\home>java -jar orion.jar
Auto-unpacking D:\j2ee\home\applications\simplewar.war... done.
Oracle9iAS (1.0.2.2) Containers for J2EE initialized

 

6. Test the application with the following urls

http://localhost:8888/simplewar/servlet/DataSourceServlet

Note:

Complete Sample code

References:

More Information:

Keywords:

OC4J Orion J2EE Oracle Servlet JSP JNDI JDBC

 
 
{exzilla.net -- e-development QuickStart --}



Copyright (c) 2001-2005 - Exzilla.net -  All Rights Reserved.
Contact Us | Privacy Policy | Terms & Conditions