2013-09-21 3 views
1

Я пытаюсь изучить новые технологии CDI + JPA + EJB + JTA + JSF, поэтому я загрузил образец проекта от JBoss-Community -> jboss-as-kitchensink (от JBoss в моем Eclipse juno).CDI + JPA + EJB + JTA + JSF -JBoss-Kitchen Пример с PostgreSQL?

Я пытаюсь соединить kitchen с моим PostgreSQL базы данных:
Мое имя базы данных: sampledb

Мой Стол (член) структура: Имя базы данных: QUICKSTART_DATABASENAME

CREATE TABLE member 
(
    id integer, 
    name text, 
    email text, 
    phone_number numeric 
); 

Я отредактировал эти файлы на моей кухне Проект:

persistence.xml

<persistence version="2.0" 
    xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation=" 
     http://java.sun.com/xml/ns/persistence 
     http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 
    <persistence-unit name="primary"> 
    <jta-data-source>java:jboss/datasources/PostgreSQLDS</jta-data-source> 
     <properties> 
     <!-- Properties for Hibernate --> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/> 
      <property name="hibernate.show_sql" value="true"/> 

     </properties> 
    </persistence-unit> 
</persistence> 

Я Добавлена ​​Завис в pom.xml:

<!-- PostgreSQL Dependency --> 
    <dependency> 
     <groupId>postgresql</groupId> 
     <artifactId>postgresql</artifactId> 
     <version>9.1-901.jdbc4</version> 
    </dependency> 

Но я получаю сообщение об ошибке:

[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 5.554s 
[INFO] Finished at: Sat Sep 21 14:01:48 IST 2013 
[INFO] Final Memory: 20M/175M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.jboss.as.plugins:jboss-as-maven-plugin:7.2.Final:deploy (default-cli) on project jboss-as-kitchensink: Deployment f 
ailed and was rolled back. -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException 
C:\Users\mypc\java\workspace\jboss-as-kitchensink> 

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

Нужно ли мне изменить код в файлах .java или любом файле .xml, чтобы заставить его работать?

EDITED после Комментарии: По Following this link, я настроил мой PostgreSQL в JBoss вручную путем создания автономных-full.xml файл JBoss ..

----///---- <datasources> 
         <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true"> 
          <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url> 
          <driver>h2</driver> 
          <security> 
           <user-name>sa</user-name> 
           <password>sa</password> 
          </security> 
         </datasource> 

         <datasource jndi-name="java:jboss/datasources/PostgreSQLDS" pool-name="PostgreSQLpool" enabled="true" use-java-context="true"> 
          <connection-url>jdbc:postgresql://localhost:5432/QUICKSTART_DATABASENAME</connection-url> 
          <driver>org.postgresql.Driver</driver> 
          <security> 
           <user-name>postgres</user-name> 
           <password>postgres</password> 
          </security> 
         </datasource> 
         <drivers> 
          <driver name="h2" module="com.h2database.h2"> 
           <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class> 
          </driver> 

          <driver name="postgresql" module="org.postgresql"> 
           <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class> 
          </driver> 
         </drivers> 
        </datasources> 
----////--- 

Ответ:

Установите драйвер PostgreSQL и используйте XML, чтобы u мог заставить его работать.

выполните следующие шаги: (Предложил @Craig Ringer) очень полезно

Download PgJDBC. Я предполагаю, что вы используете postgresql-9.2-1003.jdbc4.jar, текущую версию на момент написания. Отрегулируйте любые имена файлов, чтобы они соответствовали, если вам нужна другая версия.

Теперь разверните драйвер JDBC в JBoss AS 7, поместив его в папку развертывания или используя команду deploy в jboss-cli. Это будет работать для большинства, но не для всех целей.

В качестве альтернативы, вы определить модуль драйвера PostgreSQL JDBC:

Создать путь $ JBOSS_HOME/модули/орг/PostgreSQL/главный. Часть модулей/org должна уже существовать, создавать каталоги для остальных.

В $ JBOSS_HOME/modules/org/postgresql/main/modules.xml со следующим содержимым, изменяя запись ресурса-корня для драйвера PgJDBC, чтобы ссылаться на драйвер, который вы хотите использовать.

<?xml version="1.0" encoding="UTF-8"?> 
    <module xmlns="urn:jboss:module:1.1" name="org.postgresql"> 
     <resources> 
      <resource-root path="postgresql-9.2-1003.jdbc4.jar"/> 
     </resources> 
     <dependencies> 
      <module name="javax.api"/> 
      <module name="javax.transaction.api"/> 
      <module name="javax.servlet.api" optional="true"/> 
     </dependencies> 
    </module> 

Into the same directory as modules.xml place postgresql-9.2-1003.jdbc4.jar 
Open jboss-cli by running $JBOSS_HOME/bin/jboss-cli --connect 

Выполните команду:

/subsystem=datasources/jdbc-driver=postgresql-driver:add(driver-name=postgresql-driver, driver-class-name=org.postgresql.Driver, driver-module-name=org.postgresql) 

Теперь создадим все необходимые источники данных и т.д., используя PostGreSQL-драйвер в качестве имени драйвера.

Вы можете создать источник данных через веб-интерфейс ui с помощью команды jboss-cli с командой создания источника данных (см. Источник данных --help, data-source add -help) или путем развертывания -ds. XML-файл, как это:

<?xml version="1.0" encoding="UTF-8"?> 
<datasources> 
    <datasource jndi-name="java:/datasources/PostgresqlDS" enabled="true" use-java-context="true" 
     pool-name="PostgresqlDS"> 
    <connection-url>jdbc:postgresql:dbname</connection-url> 
    <driver>postgresql-driver</driver> 
    <security> 
     <user-name>username</user-name> 
     <password>password</password> 
    </security> 
    </datasource> 
</datasources> 

Для KitchenSink Пример: Я попытался с ним, он работал до подключения и Все Things.Still он должен быть обновлен после Позже ...

Follow this link Till Создание базы данных и пользователь & остальное остальное отсюда! Изменить Настойчивость To: persitance.xml

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation=" 
     http://java.sun.com/xml/ns/persistence 
     http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 
    <persistence-unit name="primary"> 
     <jta-data-source>java:jboss/datasources/KitchenQuickStartDS</jta-data-source> 
     <properties> 
     <!-- Properties for Hibernate --> 
     <property name="hibernate.show_sql" value="true" /> 
     </properties> 
    </persistence-unit> 
</persistence> 

тест-persistance.xml

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" 
    xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation=" 
     http://java.sun.com/xml/ns/persistence 
     http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 
    <persistence-unit name="primary"> 
     <jta-data-source>java:jboss/datasources/KitchensinkQuickstartTestDS</jta-data-source> 
     <properties> 
     <!-- Properties for Hibernate --> 
     <property name="hibernate.hbm2ddl.auto" value="create-drop" /> 
     <property name="hibernate.show_sql" value="false" /> 
     </properties> 
    </persistence-unit> 
</persistence> 

тест-ds.xml

<?xml version="1.0" encoding="UTF-8"?> 
<datasources xmlns="http://www.jboss.org/ironjacamar/schema" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.jboss.org/ironjacamar/schema http://docs.jboss.org/ironjacamar/schema/datasources_1_0.xsd"> 
    <datasource jndi-name="java:jboss/datasources/KitchenQuickStartTestDS" 
     pool-name="KitchenQuickStartTestDS" enabled="true" 
     use-java-context="true"> 
     <connection-url>jdbc:postgresql://localhost:5432/QUICKSTART_DATABASENAME</connection-url> 
     <driver>postgresql-driver</driver> 
     <security> 
      <user-name>username</user-name> 
      <password>password</password> 
     </security> 
    </datasource> 
</datasources> 

KitchenSink-д uickstart-ds.xml

<?xml version="1.0" encoding="UTF-8"?> 
<datasources xmlns="http://www.jboss.org/ironjacamar/schema" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.jboss.org/ironjacamar/schema http://docs.jboss.org/ironjacamar/schema/datasources_1_0.xsd"> 
    <!-- The datasource is bound into JNDI at this location. We reference 
     this in META-INF/persistence.xml --> 
    <datasource jndi-name="java:jboss/datasources/KitchenQuickStartDS" 
     pool-name="KitchenQuickStartDS" enabled="true" 
     use-java-context="true"> 
     <connection-url>jdbc:postgresql://localhost:5432/QUICKSTART_DATABASENAME</connection-url> 
     <driver>postgresql-driver</driver> 
     <security> 
      <user-name>username</user-name> 
      <password>password</password> 
     </security> 
    </datasource> 
</datasources> 

Но где я застрял это: Я не удается вставить Inot Data базы данных! Он поднимает ошибку в

ERROR: relation "hibernate_sequence" does not exist Position: 17 

мне нужна помощь, чтобы настроить его .. Я пытался в MANY ways

+0

У вас работает JBoss? Вы добавили источник данных PostgreSQL в свой JBoss? – fascynacja

+0

У меня JBoss Запуск в командной строке! используя standalone.bat, но я не добавил источник данных! @fascynacja – 09Q71AO534

+0

[Настройка PostgreSQL на JBOSS] (http://www.jboss.org/jdf/quickstarts/jboss-as-quickstart/#optional_components), но я Я застрял в JBOSS_HOME/bin/jboss-cli.sh --connect --file = configure-postgresql.cli (STEP) .. его открытие файла jboss-cli .. Как мне его исправить? @fascynacja – 09Q71AO534

ответ

1

Я не знаю, если вы по-прежнему нужны помощь в этом, но я encounted подобной ошибки при развертывании моего приложения Openshift.

Сначала я подключился через SSH к консоли с открывающейся консолью. Затем я запустил psql (вы можете запустить psql на своем хосте от $POSTGRES_HOME/bin/psql) с учетными данными для моего подключения postgres и использовать \ds и \dt, чтобы определить, что hibernate_sequence была таблицей, а не последовательностью.

Так что я бросил: DROP TABLE hibernate_sequence;

и воссоздал его в виде последовательности: CREATE SEQUENCE hibernate_sequence;

+0

Моя база данных: 'QUICKSTART_DATABASENAME- # \ dt общественность | член | стол | postgres & QUICKSTART_DATABASENAME- # \ dl Крупные объекты ID | Владелец | Описание ---- + ------- + ------------- (0 строк) ' – 09Q71AO534

+0

Это сработало! я создал новую последовательность, а затем исправил ошибки, возникшие при преобразовании строки в длинный и тип кастинга! Спасибо – 09Q71AO534

0

За ошибки Поднятый как: ERROR: relation "hibernate_sequence" does not exist Position: 17

я создал SEQUENCE в Предложил @Martin Nuc.

Проверить, есть ли в базе данных последовательность или нет \ds : Lists the Sequences в базе данных.

CREATE SEQUENCE hibernate_sequence; 

Тогда я поднял с несколько больше ошибок, таких как -> Тип Cast как вещи, то после очистки этих ошибок Сработало! Наконец :-)

Спасибо за поддержку :) every1

0

В качестве альтернативы вы можете также добавить @Generator вместо того, чтобы быть автоматически, вы можете добавить последовательность и указать генератор последовательности, который используется Postgre, которая составляет $ {table_name } _ $ {рк} _seq.

Тем не менее, одна из причин этого - сделать ваше приложение плотно связанным с последовательностями.

Другая стратегия заключается в том, чтобы спящий режим создать этот hibernate_sequence, если вы заставите его создавать DDL.

Смежные вопросы