JNDI @Resource注释

时间:2015-08-21 11:51:50

标签: java servlets jndi

在servlet和过滤器类中,我可以通过注释

初始化DataSource变量
 @Resource(name = "jdbc/testDB")
    protected DataSource ds;

但它是如何通过注释在基础类中初始化的? 通常是thorows NullPointerException

public class AddAuto {
        @Resource(name = "jdbc/testDB")
        private DataSource ds;
}

2 个答案:

答案 0 :(得分:2)

你的容器是什么?

如果是tomcat,资源名称应该是这样的

void init(){
DataSource ds=(DataSource)InitialContext.doLookup("java:/comp/env/jdbc/testDB");
}

我不知道另一个容器,但JBoss与Tomcat相同,而GlassFish也是你的价值。

另外,我建议使用旧的查找功能来帮助你进行调试

Sub poker_is_hard()

Dim r As Range
Dim c As Variant
Dim s As Variant
Dim cs As Variant

Set r = Workbooks("Poker game.xls").Worksheets("Cards").Range("B2:E6")
cs = c & "" & s

For Each cs In r

    c = Int(Math.Rnd * 13) + 1

    'Card's value
    If c = 11 Then
        c = "J"
    ElseIf c = 12 Then
        c = "Q"
    ElseIf c = 13 Then
        c = "K"
    ElseIf c = 1 Then
        c = "A"
    Else
    End If

    'Card's symbol
    s = Int(Math.Rnd * 4) + 1

    If s = 1 Then
        s = ThisWorkbook.Worksheets("Symbols").Range("B1").Value
    ElseIf s = 2 Then
        s = ThisWorkbook.Worksheets("Symbols").Range("B2").Value
    ElseIf s = 3 Then
        s = ThisWorkbook.Worksheets("Symbols").Range("B3").Value
    Else
        s = ThisWorkbook.Worksheets("Symbols").Range("B4").Value
    End If

 Next cs

 End Sub

答案 1 :(得分:0)

Container仅在众所周知的组件(如servlet,过滤器)中检查注释。您应该将您的类转换为某个组件:

  • Web组件(servlet,过滤器,Web容器侦听器)
  • EJB(tomcat不支持)
  • CDI beans

或者你可以像spring一样使用非Java EE解决方案