我是Java EE世界的新手,在我的应用程序中,我想连接到数据库。我可以使用以下代码完成此任务,但是有人可以向我解释吗?每行做什么?

码:

try {
    InitialContext initContext = new InitialContext();
    Context env = (Context) initContext.lookup("java:comp/env");
    ds = (DataSource) env.lookup("jdbc/test2");
} catch (NamingException e) {
    throw new ServletException();
}


我还发现,可以在我的JSP中使用tomcat使用下面的注释,该注释可以实现与上面相同的结果。我可以在任何Web服务器(例如GlassFish或Jboos)上使用此注释吗?

注释代码:

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

最佳答案

Java命名和目录接口™(JNDI)是一个应用程序
  提供命名和目录的编程接口(API)
  使用Java™编程编写的应用程序的功能
  语言。 1


Context对象提供了以下方法:将名称绑定到对象,从对象解除绑定名称,重命名对象并列出绑定。

JDNI执行相对于上下文的所有命名操作。因此,JDNI定义了InitialContext,它为命名和目录操作提供了起点。一旦有了初始上下文,就可以使用它来查找其他上下文和对象。

JDNI包中的许多方法在需要指示无法执行所请求的操作时会抛出NamingException。 JDNI具有源自NamingException类的丰富的异常层次结构。异常的类名是不言自明的,并在here中列出。

您可以使用@Resource批注注入资源。您可以找到有关正确使用here的更多信息。

资料来源:


https://docs.oracle.com/javase/tutorial/jndi/overview/index.html
http://www.javaworld.com/article/2076888/core-java/jndi-overview--part-1--an-introduction-to-naming-services.html

10-04 19:15