Настройка vsession.program в приложении Java с использованием пула соединений hibernate 5 и c3po

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

Мне нужно иметь возможность установить имя программы в сеансе оракула при подключении. Сейчас он отображается только как «Тонкий клиент JDBC». Я попытался установить свойства диспетчера сущностей в java и попробовал множество вариантов в моем файле persistence.xml.

Фрагмент Java

            props.put( hibernate.connection.url, "jdbc:oracle:thin:@localhost:1521:XE");
            props.put( "hibernate.connection.username", username );
            props.put( "hibernate.connection.password", password );
            props.put( "v$session.program", "MYPROGRAM" );

            emf = Persistence.createEntityManagerFactory( "MYDB", props );

            em = emf.createEntityManager();

Persistence.xml

<?xml version="1.0" encoding="UTF-8"?><persistence version="1.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_1_0.xsd">
<persistence-unit name="MYDB">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <properties>
        <!-- Hibernate properties -->
        <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
        <property name="hibernate.connection.driver_class" value="oracle.jdbc.OracleDriver"/>
        <property name="hibernate.show_sql" value="false"/>
        <property name="hibernate.cache.use_second_level_cache" value="false"/>
        <!-- Connection Pool -->
        <property name="hibernate.connection.provider_class" value="org.hibernate.connection.C3P0ConnectionProvider" />
        <property name="hibernate.c3p0.max_size" value="20" />
        <property name="hibernate.c3p0.min_size" value="5" />
        <property name="hibernate.c3p0.acquire_increment" value="5" />
        <property name="hibernate.c3p0.idle_test_period" value="300" />
        <property name="hibernate.c3p0.max_statements" value="0" />
        <property name="hibernate.c3p0.timeout" value="100" />
        <property name="connectionProperties" value="v$session.program:MYPROGRAM" />
    </properties>
</persistence-unit>

I'm limited in what techonologies to use, so I cannot use EclipseLink as suggested here

Есть ли другой способ установить это либо в приложении Java, либо в файле persistence.xml?


person speedos82    schedule 14.12.2015    source источник


Ответы (1)


Свойства hibernate.connection.X — это свойства подключения, передаваемые JDBC. Свойство, которое вы используете, также относится к JDBC, поэтому вы должны попытаться установить его, как показано ниже. Это сработало для меня.

код

‹имя свойства=hibernate.connection.v$session.program значение=MYPROGRAM /›

person Filipe Macharett Alves    schedule 07.07.2017