Ресурсы Glassfish / jndi / jdbc Настройка учетных данных для входа

1

Я развертываю свое первое приложение веб-службы Java и только что закончил решение "Glassfish: Exception при подготовке приложения: Недопустимый ресурс: __pm". Я создал файл glassfish-resources.xml и поместил его в мою папку web-inf по адресу http://www.oracle.com/technetwork/articles/java/pongegf-1517943.html. (Мне потребовалось некоторое время, чтобы понять, что Netbeans поставил файл в неправильном месте, чтобы начать).

Теперь мне интересно узнать о распространении в реальном мире, где учетные данные входа в систему хранятся в файле WAR через файл glassfish-resources.xml. Предположительно, если мне когда-либо понадобится изменить учетные данные, мне придется перестроить для каждой конфигурации сервера, в которой я развертываюсь, поскольку мои учетные данные для входа будут отличаться между средами. Поскольку мы обычно проходим через 2-3 этапа тестирования, прежде чем приступать к производству, это кажется склонным к появлению новых ошибок или изменений. Есть ли способ поддерживать учетные данные для входа в конфигурационный файл, который не является частью файла скомпилированного WAR, или я пропустил что-то более фундаментальное?

Спасибо.

  • 0
    Будет лучше, если вы развернете файл войны непосредственно на Glassfish, а затем запустите его.
  • 0
    Спасибо. Да, но если у каждого сервера разные учетные данные для входа в jdbc, каковы мои варианты, кроме перекомпиляции / компиляции?
Показать ещё 4 комментария
Теги:
glassfish

2 ответа

1
Лучший ответ

Обычно вы настраиваете пул соединений JDBC и используете ресурс JDBC для его ссылки. В приложении вы настраиваете ресурс JDBC, используемый через persistence.xml.

Что-то вроде этого, когда используется база данных Derby по умолчанию для Glassfish (ресурс JDBC и соединение уже настроены для этого, необходимо запустить только БД):

 <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
 <persistence-unit name="my_persistence">
     <jta-data-source>jdbc/__default</jta-data-source>
 </persistence-unit>

Поэтому во всех средах вы должны убедиться, что ресурс JDBC имеет одно и то же имя (если вы не хотите изменять файл войны), но фактическая конфигурация может быть другой, поскольку она хранится в экземпляре Glassfish, а не в вашем военном файле.

  • 0
    Я был бы согласен с этим, за исключением того, что получил ошибку без определения пула соединений, определенного в glassfish-resources.xml. Я попробую еще раз. Спасибо.
  • 0
    Хорошо, я наконец решил это с помощью решения @mszalbach. Я понял, что управлял моим приложением для настройки постоянства, а не контейнером. После того как я удалил «java / app:» из java / app: jdbc / myjdbc_resource, я смог удалить файл glassfish_resource.xml, в котором содержалась конфигурация, которую я пытался избежать. Спасибо за вашу помощь, указав мне в правильном направлении. Для тех, кому нужна помощь, чтобы понять разницу, посмотрите на docs.oracle.com/javaee/6/tutorial/doc/bnbqw.html .
0

Согласно комментариям, поскольку вы задали @Trebor для определения типа DB во runtime есть способ пройти, посетите это соединение JDBC также

http://docs.oracle.com/javase/6/docs/api/java/sql/DatabaseMetaData.html

getClientInfo()

Entity Manager IN java

http://tomee.apache.org/examples-trunk/injection-of-entitymanager/README.html

это определенно решит вашу проблему. Все самое лучшее.!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню