Источник данных Jetty, гибернация, источник данных не найден

#hibernate #jetty #datasource #jndi

#гибернация #jetty #источник данных #jndi

Вопрос:

Я пытаюсь настроить источник данных в Jetty 7.4. Мне удалось успешно выполнить это с помощью моего веб-приложения в Tomcat context.xml .

Вот что у меня есть в jetty.xml (это будет единственное приложение в этом экземпляре jetty, поэтому я не возражаю против подключения к БД на уровне сервера — я бы предпочел не настраивать его внутри war). Он находится в самом низу, чуть выше последнего </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>
  

В моем веб-приложении 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>
  

Тем не менее, я получаю сообщение об ошибке datasource not found, и я также вижу следующее исключение NameNotFoundException:

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

Когда я запускаю Jetty с включенной отладкой, похоже, что он регистрирует имя и все остальное, хотя я далек от того, чтобы быть экспертом по Jetty. Я пропустил здесь шаг? Что осталось?

Комментарии:

1. У меня тоже возникли проблемы с настройкой источника данных, куда именно вы поместили источник данных (файл SQL)? Кроме того, jetty.xml вы говорите о том, относится ли он к вашему конкретному проекту или к конфигурации причала?

Ответ №1:

Да, это причуда некоторых серверов приложений. Некоторым требуется добавление «java: comp / env» к имени ресурса JNDI, некоторым нет. Я думаю, что в Spring есть даже опция для включения / отключения этого префикса при объявлении компонента ресурсов JNDI (например, источника данных).

Попробуйте:

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

в вашей конфигурации гибернации.

Комментарии:

1. Это всегда что-то простое. Спасибо!