Jetty数据源,Hibernate,未找到数据源

时间:2011-10-10 15:13:59

标签: hibernate jetty datasource jndi

我正在尝试在Jetty 7.4中配置数据源。我能够在Tomcat context.xml中使用我的webapp成功完成此任务。

这是我在jetty.xml中的内容(这将是这个jetty实例中唯一的应用程序,所以我不介意在服务器范围内使用数据库连接 - 我宁愿不必在内部配置它战争)。它位于最后</Configure>上方的最底部:

<New class="org.eclipse.jetty.plus.jndi.Resource" id="myDB">
    <Arg>
      <Ref id="Server"/>
    </Arg>
    <Arg>jdbc/myDB</Arg>
    <Arg>
        <New class="com.microsoft.sqlserver.jdbc.SQLServerDataSource">
            <Set name="URL">jdbc:sqlserver://SERVERNAME;databaseName=DATABASENAME;sendStringParametersAsUnicode=false</Set>
            <Set name="user">USERNAME</Set>
            <Set name="password">PASSWORD</Set>
        </New>
    </Arg>
</New>

在我的webapp的WEB-INF / web.xml中:

<resource-ref>
  <description>Database Connection</description>
  <res-ref-name>jdbc/myDB</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
</resource-ref>

最后,在我的hibernate.cfg.xml中:

<property name="connection.datasource">java:comp/env/jdbc/myDB</property>

然而,我收到一个数据源未找到错误,我还看到以下NameNotFoundException:

javax.naming.NameNotFoundException; remaining name 'env/jdbc/myDB'

当我启动Jetty并启用调试时,看起来它正在注册名称和所有内容,尽管我远不是Jetty专家。我在这里错过了一步吗?还剩下什么?

1 个答案:

答案 0 :(得分:4)

是的,这是一些应用程序服务器的bizzarerry。有些需要前缀为JNDI资源名称的“java:comp / env”,有些则不需要。我认为Spring在声明JNDI资源bean(如数据源)时甚至可以选择启用/禁用该前缀。

尝试:

<property name="connection.datasource">jdbc/myDB</property>

在你的Hibernate配置中。