這個測試的這個例子中不含EJB內容,只是一個非常簡單的數據庫連接,因為其中一個細節糾纏了一整天所以記下來權做教訓:).
試驗的最終目的是這樣:
? ......
??? Context ctx = new InitialContext();???//具體jndi環境設置在jndi.properties中指定
????DataSource ds = (DataSource)ctx.lookup("Zqb Oracle Test"); //其中Zqb Oracle Test是我在oracle-ds.xml中指定的JNDI名
????
????Connection conn = ds.getConnection();
?? ?PreparedStatement ps = conn.prepareStatement("select count(1) from css_emp_info");
?? ?ResultSet rs = ps.executeQuery();
?......
步驟如下:
?? 1,jndi.properties(使用jboss缺省的內容,不做修改):
??????????java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
????????? java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
?? 2,將jboss-4.0.1sp1\docs\examples\jca下的oracle-ds.xml拷貝到jboss-4.0.1sp1\server\default\deploy下,并做相應修改,主要內容如下:
<datasources>
? <local-tx-datasource>
??? <jndi-name>Zqb Oracle Test</jndi-name>
??? <use-java-context>false</use-java-context>
??? <connection-url>jdbc:oracle:thin:@10.25.10.175:1521:pacesdev</connection-url>
??? <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
??? <user-name>cesbase</user-name>
??? <password>voiture6</password>
??? <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
????? <metadata>
???????? <type-mapping>Oracle9i</type-mapping>
????? </metadata>
? </local-tx-datasource>
</datasources>
?? 3,OK,部署war,搞定!其中紅色標注的是后面加上的,有了這句在jndi前可以不用加前綴;否則,需要加前綴java(即:lookup("Zqb Oracle Test") 和 lookup("java:Zqb Oracle Test")的區別).
補充: 發現在jboss官方網站有關于use-java-context這個屬性的說明 http://wiki.jboss.org/wiki/Wiki.jsp?page=ConfigDataSources?,仔細看看!