Нет рабочего соединения postgresql в веб-приложении OpenShift jBoss

У меня эта проблема уже больше недели, и я не могу найти никаких путей ее решения.

У меня есть веб-приложение Java EE, изначально созданное с использованием jBoss Tools Forge, следуя руководству на веб-сайте OpenShift под названием "JBoss Forge- Сборка и развертывание приложений Java EE 6 AngularJS с использованием JBoss Forge и OpenShift".

Приложение размещено на OpenShift с JBoss Application Server 7 и PostgreSQL 9.2 в качестве основного и дополнительного картриджей. Он работает нормально и не выдает никаких ошибок при подключении к базе данных, но данные, введенные через интерфейс, теряются при перезапуске приложения, и постоянство является весьма важным.

Вот соответствующие части файлов, которые должны отвечать за детализацию соединения postgresql:

persistence.xml:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
  <persistence-unit name="forge-default" transaction-type="JTA">
    <description>Forge Persistence Unit</description>
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>java:jboss/datasources/PostgreSQLDS</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
      <property name="hibernate.show_sql" value="true"/>
      <property name="hibernate.format_sql" value="true"/>
      <property name="hibernate.transaction.flush_before_completion" value="true"/>
      <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
    </properties>
  </persistence-unit>
</persistence>

Standalone.xml:

<datasource jndi-name="java:jboss/datasources/PostgreSQLDS" enabled="${postgresql.enabled}" use-java-context="true" pool-name="PostgreSQLDS" use-ccm="true">
                <connection-url>jdbc:postgresql://${env.OPENSHIFT_POSTGRESQL_DB_HOST}:${env.OPENSHIFT_POSTGRESQL_DB_PORT}/${env.OPENSHIFT_APP_NAME}</connection-url>
                <driver>postgresql</driver>
                <security>
                  <user-name>adminpielw4l</user-name>
                  <password>Fy7dRZirzc7Y</password>
                </security>
                <validation>
                    <check-valid-connection-sql>SELECT 1</check-valid-connection-sql>
                    <background-validation>true</background-validation>
                    <background-validation-millis>60000</background-validation-millis>
                    <!--<validate-on-match>true</validate-on-match>-->
                </validation>
                <pool>
                                            <flush-strategy>IdleConnections</flush-strategy>
                                    </pool>
            </datasource>
            <drivers>
                <driver name="h2" module="com.h2database.h2">
                    <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                </driver>
                <driver name="mysql" module="com.mysql.jdbc">
                    <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
                </driver>
                <driver name="postgresql" module="org.postgresql.jdbc">
                    <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
                </driver>
            </drivers>
        </datasources>

У меня есть один файл.java, который определяет сущность, например:

@Entity
@XmlRootElement
public class wugMember implements Serializable
{

   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   @Column(name = "id", updatable = false, nullable = false)
   private Long id = null;
   @Version
   @Column(name = "version")
   private int version = 0;

   @Column
   private String firstName;

и другой, который, кажется, пытается использовать это:

@Stateless
@Path("/wugmembers")
public class wugMemberEndpoint
{
   @PersistenceContext(unitName = "forge-default")
   private EntityManager em;

   @POST
   @Consumes("application/json")
   public Response create(wugMember entity)
   {
      em.persist(entity);
      return Response.created(UriBuilder.fromResource(wugMemberEndpoint.class).path(String.valueOf(entity.getId())).build()).build();
   }

Журнал posgresql с момента последней загрузки:

    FATAL:  the database system is starting up
LOG:  database system is ready to accept connections
ERROR:  sequence "hibernate_sequence" does not exist
STATEMENT:  
            drop sequence hibernate_sequence

Я не думаю, что это является причиной проблемы, так как пропущенные заявления иногда терпят неудачу, не причиняя вреда? Поскольку мои знания о веб-приложениях и базах данных весьма ограничены, я, скорее всего, упускаю что-то очевидное. Надеюсь, кто-то более опытный сможет это заметить?

0 ответов

Другие вопросы по тегам