@Resource 資源取得 JNDI 的相關資源

news/2024/7/2 5:15:57

在 TheServerside 看到這篇文章
http://www.theserverside.com/news/thread.tss?thread_id=39828

我利用簡單的資料庫連結做說明, Java EE 5.0 如何使用 @Resource 來取得相關資源

1. JDBC direct connect the Database
這是簡單的範例, 我們可以直接利用 DriverManager 去取得 connection, 這種寫法是由  Application 直接驅動連結, 沒有透過 Container, 我認為不是很好的方法 !
// JDBC Driver 的主要 class 名稱
Class.forName("com.mysql.jdbc.Driver");
// 每個 Driver都有標準的連結位置撰寫方式
String url = "jdbc:mysql://host:port/database";
// 將 URL 與登入帳號密碼連結
Connection con = DriverManager.getConnection( url ,"username","password");
//....
con.close();

2. DataSource Connection
透過 JNDI 以及 Context lookup 取得 DataSource, 再用 DataSource.getConnection() 取得 Connection.

Context initCtx = new InitialContext();
DataSource ds = (DataSource) initCtx.lookup("jdbc/mysql");
Connection conn = ds.getConnection();
//... use this connection to access the database ...
conn.close();


3. @Resource mapped global JNDI
當開發工程師知道, application server 之中, 已經具備了 jdbc/mysql 這個 JNDI Name, 這樣算是取代了 JNDI context lookup 的方法.


@Resource(name="jdbc/mysql")
private DataSource ds;


4. @Resource dependency injection
當開發工程師不知道, application server 之中, 到底具備了哪些資源可以利用, 可以利用 Java EE 5.0 Annotation Resource Injection 的特性, 讓組裝部署人員做相關的設定.

web.xml

   
        packageName.ClassName/ds
        javax.sql.DataSource
        Container
        Shareable
   


sun-web.xml 
 
    DSResourceInjectionServlet/ds
    jdbc/__default
 

所以, 組裝人員可以在 web.xml , sun-web.xml ( glassfish ) 設定相關的 injection 環境及對應到 application server 的 global 的 jndi 設定, 這樣, 可以輕易地完成 Injection 的實作.

Connection conn = ds.getConnection();
//... use this connection to access the database ...
conn.close();

 

@Resource
private DataSource ds;

Connection conn = ds.getConnection();
//... use this connection to access the database ...
conn.close();





http://www.niftyadmin.cn/n/3653780.html

相关文章

oracle11g cursor mutex S导致的load过高的追踪过程详解

--> 问题背景同事电话我,说oracle数据库很慢,很卡,cpu99%了。1,查看问题现场,cpu高单核不高,load高多核,看到每个核只有20%左右使用了1/5,所以数据库应该没事,没有到故…

Ant最佳实践Top 15

Ant最佳实践Top 15作者:Eric M. Burke, Java Extreme Programming Cookbook的合作者之一12/17/2003在Ant之前,创建和发布Java应用对于平台相关的脚本,makefiles,IDEs的属性,或者过程手册等的要求缺一不可.现在,几乎每一个开源的Java项目都使用Ant.同时,大量的公司在他们的内部项…

tomcat启动报错 java net BindException Permission denied 80

1,启动报错显示[org.springframework.web.servlet.DispatcherServlet]FrameworkServlet springMvc: initialization completed in 382 msJun 01, 2015 6:39:06 PM org.apache.coyote.http11.Http11Protocol startSEVERE: Error starting endpointjava.net.BindExcep…

JUnit重装上阵

JUnit重装上阵作者:Ralf Stuckert 12/07/2006 我们必须承认,JUnit是Java世界使用最广泛的(单元)测试工具.我们也有其他功能强大的测试框架,例如TestNG(它的功…

MySQL DBA 招聘小结

招聘MySQL DBA,与10来个2年MySQL DBA工作经验的朋友交流过,谈谈自己的心得:各位可以先看下互联网公司的薪资待遇: http://blog.csdn.net/mchdba/article/details/222743511 关于2年MySQL DBA经验看简历描述公司项目的时候&#…

使用Google Web Toolkit减轻AJAX的开发

使用Google Web Toolkit减轻AJAX的开发——使用GWT来创建一个简单的AJAX应用作者:Jeff Hanson,JavaWorld.com,12/13/06Google Web Toolkit(GWT)是一个Java开发框架,用来减轻AJAX(Asynchronous JavaScript and XML)的开发难度。使用…

oracle11g plsql调试存储过程卡死的处理技巧

>> PLSQL调试存储过程卡死有多次进行TEST调试存储过程,在某一个环境动不了,然后卡住,plsql界面进入假死状态了,而这个时候只有在windows里面的任务管理器里面强行关闭plsql的后台进程后,然后再次登录打开plsql&a…

Struts快速入门(五完)

用FormTag初始化ActionForm对象本节早前提到,HTML表单中动作URL被映射到一个配置,并轮流被映射到一个配置。FormTag中由action属性制定的URL被FormTag转换为一个在部署描述符中确定的路径结构URL。对于扩充的映射,这意味着资源扩展和指定的一…