“Weblogic 連接池 + Oracle + Servlet” 的無狀態SessionBean 全攻略

發表于:2007-06-22來源:作者:點擊數: 標簽:
jbuilder7 + welogic6.1+ Oracle8i 一個無狀態的Session bean 連接weblogic 數據庫 連接池 取 Oracle一個表的一個字段值 返回給客戶端 (servlet) 就這些,now整理成筆記。 1. 確認安裝好Oralce 和 Webligc 6.1 .Jbuilder7 都是默認安裝 2. 開始配置Jbuilder

   
  jbuilder7 + welogic6.1+ Oracle8i

一個無狀態的Session bean

連接weblogic 數據庫連接池

取 Oracle一個表的一個字段值

返回給客戶端 (servlet)

就這些,now整理成筆記。

1. 確認安裝好Oralce 和 Webligc 6.1 .Jbuilder7

都是默認安裝

2. 開始配置Jbuilder7 和Weblogic 的連接

我參考了一篇Jbuilder6的配置 ,大同小異

進入JB7

a.打開Tools-->Configue Servers--> 選擇weblogic6.x+

Enable Server 打勾

選擇正確的Weblgic 安裝路徑

注意 顯示器分辨率為1024*768 才能看到下面的OK 按鈕

在General頁 的Home Dircetory 和 Work Directory一樣 如:

D:/bea/wlserver6.1

在Custome頁中填入weblogic 啟動密碼

其他默認

b.打開Tools--> Enterprise Setup -->CORBA

new 一個 起名為Weblogic的項目

在Path for ORB tools下加入Weblogic 的目錄

在Library for project 下加入 weblogic 6.x delopy 庫

在compiler command 填上 idcj.exe

在Command ... for oupput Dircetory 填上一個你自己的輸出路徑

c 最后確認 Projects--> Default Projects Properties-->Server

選的Application Server 是Weblogic 6.x file://應該已經是了,再看看

d 最后到我的電腦點右鍵去修改系統變量

Temp 和Tmp

因為默認得目錄名有空格,JB7過敏這個,改為一個沒空格的目錄

如C:\temp 當然你得先建立這個目錄

3.下來在Weblogic中建立Oracle的連接池

. 在Weblogic 控制臺

Services -->JDBC -->Connection Pools--> Configure a new JDBC Connection Pool

在General屬性頁

Name :連接池名 file://我取名為testPool ,注意名字區分大小寫

URL: JDBC 連接字符串 file://Oracle的 為: jdbc:oracle:thin:@xiw:1521:sdb

xiw為服務器名 也可為IP地址

sdb為數據庫名

Driver Classname: 填入 oracle.jdbc.driver.OracleDriver

Properties(key=value): 填入 user=system file://即Oracle的用戶名,也可以在這里填入密碼

Password 先不填

點擊Apply // Weblogic 如果有圖標閃動,表示需要重啟動Webligoc設置才能生效 后面不在說明

然后點擊Password 輸入數據庫密碼

在Connection 頁

Initial Capacity : 1 file://初始連接數

Maximum Capacity :10 file://最大連接數

Capacity Increment :1 // 初始不夠時,每次增加連接數

Refresh Period: 5 file://防止網絡意外中斷時,每5分鐘刷新一次連接,斷了就自動恢復

其他默認

在testing 頁

Test Table Name:tab // Oracle 已經有了這個表 ,用其他Oracle系統表也行

下面兩項選中 打勾 表示啟用意外端開時,自動刷新恢復連接

圖標閃動,表示需要重啟動Webligoc

重啟后:

在: Serviers -->JDBC -->Connection Pools-->testPool頁

target頁 將myserver移到chosen 中 點Apply file://表示那個服務器啟用這個池

如果有錯誤,一般就是前面的URL錯 或沒有testing指定的那個表,我在這絆了很久

可能需要重啟

然后到Services-->JDBC-->Data Source

Configure a new JDBC Data Source

??Name:自己起吧

JNDI Name: 起名為MyJNDI file://這個后面編程要用,區分大小寫

Pool Name:testPool file://前面建的那個池的名字

然后點擊Apply

在target頁,和前面一樣,將myserver移到chosen Apply

此時若有錯誤,一般為連接池名大小寫問題

重啟動Weblogic 完成

4 開始編程

·在JB7中新建一個空項目

·在New 的Enterprise 頁Ejb2.0 bean designer

·在可視化設計窗口,右鍵,New Session bean ,起名字為testsqlBean type為stateless

·啟動Oralce

·添加一個表table3 字段名 A1 再加一條數據 'OKOK' file://最后在Servlet中返回OKOK就算成功

·在該項目中New一個Class ,作為返回結果用,該類進行了序列化

該類取名為TestString 代碼如下,較為粗糙,沒有優化,其實可以直接返回值的,湊合看吧。

package testpool;

import javax.ejb.*;

import java.sql.*;

import javax.sql.*;

public class TestString implements java.io.Serializable{

private String returnS;

public TestString(String ss){

returnS=ss;

}

public String returnStr(){

return returnS;

}

public String getA1(DataSource ds, String sql)

{String temp="nono"; file://默認為no Servlet要是返回這個就是失敗了

try{

Connection conn=ds.getConnection();

Statement stmt=conn.createStatement();

stmt.executeQuery(sql);

ResultSet rs=stmt.getResultSet();

int i=rs.getRow(); file://沒顯示改值,調試時看了看

if(rs.next())

{temp=rs.getString(1);

}

rs.close();

conn.close();

}

catch(Exception e)

{

e.printStackTrace();

}

return temp;

}

}

·以下修改testsqlbean.java

需要添加一些類

import java.sql.*;

import javax.sql.*;

其他Home接口或Remote接口用到諸如ResultSet ,DataSource 得自己加入就行,不再復述

添加幾個屬性

String returnString;

DataSource ds;

·同時需要修改testsqlbean的ejbCreate代碼為:

public void ejbCreate() throws CreateException {

try{

Context ctx=new InitialContext();

ds=(DataSource)ctx.lookup("MyJNDI"); // MyJNDI為前面配置的Weblogic的JDBC的JNDI名

}

catch(Exception e)

{ }

}

·然后。在可視化設計窗口 testsqlBean上右鍵 add method 取名為getMyConn 返回類型為前面自建的TestString

參數為String sql

最后修改該函數代碼如下:

public TestString getMyConn(String sql) {

TestString t1=new TestString(sql);

String returnString=t1.getA1(ds,sql);

return new TestString(returnString);

}

.完成后 Make Project 一次編譯通過后

·在項目文件列表上,點擊web run

此時不要人工啟動Weblogic 讓JB7去啟動它

如果沒有錯誤,則EJB被自動部署到weblogic上,

· 編一個Servlet作為客戶端

用JB7的New 一個Servlet 起名為testpoolServlet

全部代碼如下

package testpool;

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

import java.sql.*;

import java.util.*;

import javax.naming.*;

import javax.ejb.*;

import java.rmi.RemoteException;

import java.rmi.Remote;

import testpool.testsql;

import testpool.testsqlHome;

public class testpoolServlet extends HttpServlet {

static final private String CONTENT_TYPE = "text/html; charset=GBK";

TestVector myStr;

file://Initialize global variables

public void init() throws ServletException {

}

file://Process the HTTP Get request

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

response.setContentType(CONTENT_TYPE);

String sql="select * from table3"; file://客戶端給EJB的sql語句

PrintWriter out = response.getWriter();

out.println("");

out.println("testpoolServlet");

out.println("");

out.println("

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97