熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Weblogic 連接池 + Oracle + Servlet 的無狀態SessionBean

2013-11-13 15:46:51  來源: Oracle 

  jbuilder + welogic+ Oraclei 一個無狀態的Session bean 連接weblogic 數據庫連接池 取 Oracle一個表的一個字段值 返回給客戶端 (servlet) 就這些now整理成筆記 確認安裝好Oralce 和 Webligc Jbuilder 都是默認安裝 開始配置Jbuilder 和Weblogic 的連接 我參考了一篇Jbuilder的配置 大同小異 進入JB a打開Tools>Configue Servers> 選擇weblogicx+ 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 填上 idcjexe 在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 填入 oraclejdbcdriverOracleDriver 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 Nametab // 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 NametestPool 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 javaxejb*; import javasql*; import javaxsql*; public class TestString implements javaioSerializable{ 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=dsgetConnection(); Statement stmt=conncreateStatement(); stmtexecuteQuery(sql); ResultSet rs=stmtgetResultSet(); int i=rsgetRow(); file://沒顯示改值調試時看了看 if(rsnext()) {temp=rsgetString(); } rsclose(); connclose(); } catch(Exception e) { eprintStackTrace(); } return temp; } } ·以下修改testsqlbeanjava 需要添加一些類 import javasql*; import javaxsql*; 其他Home接口或Remote接口用到諸如ResultSet DataSource 得自己加入就行不再復述 添加幾個屬性 String returnString; DataSource ds; ·同時需要修改testsqlbean的ejbCreate代碼為 public void ejbCreate() throws CreateException { try{ Context ctx=new InitialContext(); ds=(DataSource)ctxlookup(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=tgetA(dssql); return new TestString(returnString); } 完成後 Make Project 一次編譯通過後 ·在項目文件列表上點擊web run 此時不要人工啟動Weblogic 讓JB去啟動它 如果沒有錯誤則EJB被自動部署到weblogic上 · 編一個Servlet作為客戶端 用JB的New 一個Servlet 起名為testpoolServlet 全部代碼如下 package testpool; import javaxservlet*; import javaxservlethttp*; import javaio*; import javasql*; import javautil*; import javaxnaming*; import javaxejb*; import javarmiRemoteException; import javarmiRemote; import testpooltestsql; import testpooltestsqlHome; 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 { responsesetContentType(CONTENT_TYPE); String sql=select * from table; file://客戶端給EJB的sql語句 PrintWriter out = responsegetWriter(); outprintln(
From:http://tw.wingwit.com/Article/program/Oracle/201311/17293.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.