jbuilder
+ welogic
+ Oracle
i 一個無狀態的Session bean 連接weblogic 數據庫連接池 取 Oracle一個表的一個字段值 返回給客戶端 (servlet) 就這些
now整理成筆記
確認安裝好Oralce 和 Webligc
Jbuilder
都是默認安裝
開始配置Jbuilder
和Weblogic 的連接 我參考了一篇Jbuilder
的配置
大同小異 進入JB
a
打開Tools
>Configue Servers
> 選擇weblogic
x+ Enable Server 打勾 選擇正確的Weblgic 安裝路徑 注意 顯示器分辨率為
*
才能看到下面的OK 按鈕 在General頁 的Home Dircetory 和 Work Directory一樣 如
D:/bea/wlserver
在Custome頁中填入weblogic 啟動密碼 其他默認 b
打開Tools
> Enterprise Setup
>CORBA new 一個 起名為Weblogic的項目 在Path for ORB tools下加入Weblogic 的目錄 在Library for project 下加入 weblogic
x delopy 庫 在compiler command 填上 idcj
exe 在Command
for oupput Dircetory 填上一個你自己的輸出路徑 c 最後確認 Projects
> Default Projects Properties
>Server 選的Application Server 是Weblogic
x file://應該已經是了
再看看 d 最後到我的電腦點右鍵去修改系統變量 Temp 和Tmp 因為默認得目錄名有空格
JB
過敏這個
改為一個沒空格的目錄 如C:\temp 當然你得先建立這個目錄
下來在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:
: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 :
file://初始連接數 Maximum Capacity
file://最大連接數 Capacity Increment
// 初始不夠時
每次增加連接數 Refresh Period:
file://防止網絡意外中斷時
每
分鐘刷新一次連接
斷了就自動恢復 其他默認 在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 完成
開始編程 ·在JB
中新建一個空項目 ·在New 的Enterprise 頁Ejb
bean designer ·在可視化設計窗口
右鍵
New Session bean
起名字為testsqlBean type為stateless ·啟動Oralce ·添加一個表table
字段名 A
再加一條數據
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 getA
(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(
); } 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 t
=new TestString(sql); String returnString=t
getA
(ds
sql); return new TestString(returnString); }
完成後 Make Project 一次編譯通過後 ·在項目文件列表上
點擊web run 此時不要人工啟動Weblogic 讓JB
去啟動它 如果沒有錯誤
則EJB被自動部署到weblogic上
· 編一個Servlet作為客戶端 用JB
的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 table
; file://客戶端給EJB的sql語句 PrintWriter out = response
getWriter(); out
println(
From:http://tw.wingwit.com/Article/program/Oracle/201311/17293.html