一個無狀態的Session bean 連接weblogic 數據庫連接池 取 Oracle一個表的一個字段值 返回給客戶端 (servlet) 就這些,now整理成筆記。 都是默認安裝 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(" out.println(" out.println(" 原文轉自:http://www.anti-gravitydesign.com
jbuilder7 + welogic6.1+ Oracle8i
1. 確認安裝好Oralce 和 Webligc 6.1 .Jbuilder7