Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Временные таблички и GlassFish / 25 сообщений из 35, страница 1 из 2
04.06.2012, 13:57:12
    #37824193
Niky4000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблички и GlassFish
Проблема:
Обнаружили, что клиенты, которые вставляют свои данные во временные таблицы через GlassFish на Oracle при чтении этих данных видят данные, введённые другими пользователями.
Вопрос такой:
Как решить эту проблему?

Пояснение:
Есть множество соединений клиентов к серверу приложений GlassFish. А соединение Glassfish СУБД Oracle одно. И получается, что все клиенты работают как бы в одной сессии СУБД и видят данные других клиентов во временных табличках. На GlassFish тип соединения javax.sql.ConnectionPoolDataSource. Вроде, должно как бы новое соединение на каждого клинета создаваться, но не создаётся. Просто смысл временных таблиц теряется.
...
Рейтинг: 0 / 0
04.06.2012, 14:09:59
    #37824224
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблички и GlassFish
GlassFish тут не при чем. Есть стандартная практика для повышения производительности использовать пул соединений. Пул позволяет пере-использовать физические соединения, т.к. создание нового достаточно трудоёмкая операция.

Естественно соединение работает в одной оракловой сессии.

А нельзя ли время жизни таблицы к транзакции привязать?
...
Рейтинг: 0 / 0
04.06.2012, 14:18:14
    #37824245
Niky4000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблички и GlassFish
Сделать их транзакционными, а не сессионными?
Скорее всего, нет.
При Commit табличка будет очищаться. А если длинные сессии будут? Наверное, не хорошо это. А если хранимая процедура Oracle должна во временную табличку что-то написать, а клиент забрать это?
А что нет нормально решения?
Кто-нибудь с этим сталкивался?
...
Рейтинг: 0 / 0
04.06.2012, 14:20:15
    #37824250
Niky4000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблички и GlassFish
А зачем тогда пул соединений нужен, если все через одно соединение лезут?
Хотелось бы каждой сессии клиента по соединению сделать и всё. Можно так? Типа, подсоединился новый клиент - на соединение.
...
Рейтинг: 0 / 0
04.06.2012, 14:22:56
    #37824258
Niky4000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблички и GlassFish
Фактически, в моём случае временная табличка ничем не отличается от постоянной. Даже если клиент закрыть/открыть, то данные во временной табличке остаются, причём от всех пользователей.
...
Рейтинг: 0 / 0
04.06.2012, 14:53:04
    #37824333
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблички и GlassFish
Niky4000А зачем тогда пул соединений нужен, если все через одно соединение лезут?
Значит у вас нагрузка такая, что одного соединения достаточно.

Niky4000Хотелось бы каждой сессии клиента по соединению сделать и всё. Можно так? Типа, подсоединился новый клиент - на соединение.
Попробуйте вместо DataSource.getConnection() использовать DataSource.getConnection(login, password). Только пул должен позволять это делать. Не все реализации позволяют. Возможно стоит перейти на пул из драйвера для оракла.
...
Рейтинг: 0 / 0
04.06.2012, 14:57:36
    #37824345
Niky4000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблички и GlassFish
EntityManager у меня ConteinerManaged.
Код: sql
1.
2.
    @PersistenceContext(unitName = "ServerPU")
    private EntityManager em;


Persistence Unit:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<?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="ServerPU" transaction-type="JTA">
    <jta-data-source>medfin_con</jta-data-source>
    <class>com.imc.medfin.server.dao.factory.OracleFactory.bean.TempXmlDs</class>
...
...
    <class>com.imc.medfin.server.dao.factory.OracleFactory.bean.DebugTest</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <shared-cache-mode>NONE</shared-cache-mode>
    <validation-mode>NONE</validation-mode>
    <properties>
    </properties>
  </persistence-unit>
</persistence>



Может быть проблема в ConteinerManaged EntityManager? Может быть надо сделать его BeanManaged и как-нибудь вручную получать новое соединение через EntityManagerFactory?
Это так... идеи пока...
...
Рейтинг: 0 / 0
04.06.2012, 15:00:54
    #37824355
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблички и GlassFish
Что-то типа такого
Код: java
1.
2.
3.
4.
Map properties = new HashMap();
properties.put("javax.persistence.jdbc.user", user);
properties.put("javax.persistence.jdbc.password", password);
EntityManager em = factory.createEntityManager(properties);
...
Рейтинг: 0 / 0
04.06.2012, 15:16:22
    #37824389
Niky4000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблички и GlassFish
Сейчас попробую.
...
Рейтинг: 0 / 0
04.06.2012, 15:23:11
    #37824408
oneHalf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблички и GlassFish
Если сами говорите, что таблицы практически не отличаются от обычных - сделайте одну таблицу со всеми вашими полями + userId - показывайте, очищайте и т.д. с фильтрацией по каждому пользователю. Итого табличка одна, не надо думать как обойти стандартные механизмы, чтобы вставить непонятный костыль, но придется запросики править.
...
Рейтинг: 0 / 0
04.06.2012, 15:33:21
    #37824437
Niky4000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблички и GlassFish
oneHalf Если сами говорите, что таблицы практически не отличаются от обычных - сделайте одну таблицу со всеми вашими полями + userId - показывайте, очищайте и т.д. с фильтрацией по каждому пользователю. Итого табличка одна, не надо думать как обойти стандартные механизмы, чтобы вставить непонятный костыль, но придется запросики править.
Мне кажется, это не очень хорошая идея. Можно конечно, но лучше бы как-то по-нормальному это сделать.

Blazkowicz
Вот такой код у меня:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    public void debug_new_em() {
        String gg="";
        
Map properties = new HashMap();
properties.put("javax.persistence.jdbc.user", "medfin");
properties.put("javax.persistence.jdbc.password", "medfin");
properties.put("javax.persistence.jdbc.url", "jdbc:oracle:thin:@pgserver1:1521:XE");
        
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("ServerPU");
        EntityManager em=emf.createEntityManager(properties);
        
        DebugTest dt=new DebugTest();
        dt.setId(Long.valueOf(Double.valueOf(Math.random()).longValue()));
        dt.setData("Hello!");
        em.persist(dt);
        
        
        String kk="";
          
    }




Валится на em.persist(dt);
Вот какое исключение:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at org.glassfish.appclient.client.acc.AppClientContainer.launch(AppClientContainer.java:438)
	at org.glassfish.appclient.client.AppClientFacade.main(AppClientFacade.java:165)
Caused by: javax.ejb.EJBTransactionRolledbackException
	at com.sun.ejb.containers.BaseContainer.mapLocal3xException(BaseContainer.java:2314)
	at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2096)
	at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1994)
	at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:222)
	at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88)
	at $Proxy287.debug_new_em(Unknown Source)
	at com.imc.medfin.server.mediator.servermediator.ServerTitleMediator.read_from_debug_test_table(ServerTitleMediator.java:160)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052)
	at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124)
	at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5388)
	at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619)
	at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
	at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)
	at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162)
	at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861)
	at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
	at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:370)
	at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5360)
	at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5348)
	at com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:206)
	at com.sun.ejb.containers.EJBObjectInvocationHandlerDelegate.invoke(EJBObjectInvocationHandlerDelegate.java:79)
	at $Proxy283.read_from_debug_test_table(Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie.dispatchToMethod(ReflectiveTie.java:144)
	at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:174)
	at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:528)
	at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:199)
	at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1624)
	at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1486)
	at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:990)
	at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:214)
	at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:742)
	at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.dispatch(CorbaMessageMediatorImpl.java:539)
	at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.doWork(CorbaMessageMediatorImpl.java:2324)
	at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:497)
	at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:540)
Caused by: javax.ejb.TransactionRolledbackLocalException: Exception thrown from bean
	at com.sun.ejb.containers.BaseContainer.checkExceptionClientTx(BaseContainer.java:5071)
	at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4906)
	at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2045)
	... 46 more
Caused by: java.lang.IllegalArgumentException: EntityManager properties conflict: javax.persistence.driver and/or javax.persistence.url require DefaultConnector, but persistence unit uses external transaction controller, therefore JNDIConnector is required.
	at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createConnectionPolicy(EntityManagerImpl.java:2011)
	at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createConnectionPolicy(EntityManagerImpl.java:1890)
	at org.eclipse.persistence.internal.jpa.EntityManagerImpl.getActivePersistenceContext(EntityManagerImpl.java:1674)
	at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:440)
	at com.imc.medfin.server.dao.factory.OracleFactory.DebugSessionBean.debug_new_em(DebugSessionBean.java:115)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052)
	at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124)
	at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5388)
	at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619)
	at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
	at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)
	at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162)
	at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861)
	at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
	at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:370)
	at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5360)
	at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5348)
	at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:214)
	... 44 more
Java Result: 1
...
Рейтинг: 0 / 0
04.06.2012, 15:42:38
    #37824454
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблички и GlassFish
...
Рейтинг: 0 / 0
06.06.2012, 12:21:52
    #37827339
Niky4000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблички и GlassFish
Что-то не получается...
Если раскоментировать
//@PersistenceContext(unitName = "EMDebugPU")
//private EntityManager em;
И закоментировать init(), то всё работает - данные в таблице DebugTest появляются, а если через EntityManagerFactory, то не работает - данные читаются из базы, но в базу не пишутся.


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
import Entity.DebugTest;
import Entity.Schet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.ejb.Stateless;
import javax.persistence.*;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;


@Stateless(name = "EMDebugSessionBean", mappedName = "EMDebugSessionBean")
public class EMDebugSessionBean implements EMDebugSessionBeanRemote {

    //@PersistenceContext(unitName = "EMDebugPU")
    //private EntityManager em;
    
    EntityManager em;
    
    private void init(){
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("EMDebugPU");
        //em=emf.createEntityManager();
        
        Map properties = new HashMap();
        properties.put("javax.persistence.jdbc.user", "medfin");
        properties.put("javax.persistence.jdbc.password", "medfin");
        //properties.put("javax.persistence.jdbc.url", "jdbc:oracle:thin:@pgserver1:1521:XE");
        properties.put("eclipselink.jdbc.exclusive-connection.mode", "Transactional");
        properties.put("eclipselink.jdbc.exclusive-connection.is-lazy", "true");
        //properties.put("eclipselink.jdbc.exclusive-connection.mode", "Always");
        //properties.put("eclipselink.jdbc.exclusive-connection.is-lazy", "false");
        em = emf.createEntityManager(properties);
        
    }
    
    @Override
    public String retHello() {
        

        init();
        
        DebugTest dt=new DebugTest();
        dt.setId(Long.valueOf(Double.valueOf(Math.random()*1000000).longValue()));
        dt.setData("Value "+Long.valueOf(Double.valueOf(Math.random()*100).longValue()).toString());
        em.persist(dt);
        
        
        List<Object> some=get(DebugTest.class);
        List<Object> some2=get(Schet.class);

        
        return "Hello from EMDebug Session Bean! "+some2.size();
    }

    
    private List<Object> get(Class table){
        CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
        CriteriaQuery<Object> criteriaQuery = criteriaBuilder.createQuery();
        Root<Object> from = criteriaQuery.from(table);
        CriteriaQuery<Object> select = criteriaQuery.select(from);
                
        TypedQuery<Object> typedQuery = em.createQuery(select);
        List<Object> some_ret = typedQuery.getResultList();
        return some_ret;
    }
    
    
    
    
}




Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<?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="EMDebugPU" transaction-type="JTA">
    <jta-data-source>medfin_con</jta-data-source>
    <class>Entity.DebugTest</class>
    <class>Entity.Schet</class>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <shared-cache-mode>NONE</shared-cache-mode>
    <validation-mode>NONE</validation-mode>
    <properties/>
  </persistence-unit>
</persistence>
...
Рейтинг: 0 / 0
06.06.2012, 12:22:20
    #37827342
Niky4000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблички и GlassFish
Причём никаких исключений не возникает.
...
Рейтинг: 0 / 0
06.06.2012, 13:34:49
    #37827553
Niky4000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблички и GlassFish
Пробую вот так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
import Entity.DebugTest;
import Entity.Schet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.ejb.Stateless;
import javax.persistence.*;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;


@Stateless(name = "EMDebugSessionBean", mappedName = "EMDebugSessionBean")
public class EMDebugSessionBean implements EMDebugSessionBeanRemote {

    //@PersistenceContext(unitName = "EMDebugPU")
    //private EntityManager em;
    
    EntityManager em;
    
    private void init(){
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("EMDebugPU");
        //em=emf.createEntityManager();
        
        Map properties = new HashMap();
        properties.put("javax.persistence.jdbc.user", "medfin");
        properties.put("javax.persistence.jdbc.password", "medfin");
        //properties.put("javax.persistence.jdbc.url", "jdbc:oracle:thin:@pgserver1:1521:XE");
        //properties.put("eclipselink.jdbc.exclusive-connection.mode", "Transactional");
        //properties.put("eclipselink.jdbc.exclusive-connection.is-lazy", "true");
        properties.put("eclipselink.jdbc.exclusive-connection.mode", "Always");
        properties.put("eclipselink.jdbc.exclusive-connection.is-lazy", "false");
        em = emf.createEntityManager(properties);
        
    }
    
    @Override
    public String retHello() {
        

        init();
        
        DebugTest dt=new DebugTest();
        dt.setId(Long.valueOf(Double.valueOf(Math.random()*1000000).longValue()));
        dt.setData("Value "+Long.valueOf(Double.valueOf(Math.random()*100).longValue()).toString());
        em.persist(dt);
        
        
        List<Object> some=get(DebugTest.class);
        List<Object> some2=get(Schet.class);

        
        destroy_em();
        
        
        return "Hello from EMDebug Session Bean! "+some2.size();
    }

    
    private List<Object> get(Class table){
        CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
        CriteriaQuery<Object> criteriaQuery = criteriaBuilder.createQuery();
        Root<Object> from = criteriaQuery.from(table);
        CriteriaQuery<Object> select = criteriaQuery.select(from);
                
        TypedQuery<Object> typedQuery = em.createQuery(select);
        List<Object> some_ret = typedQuery.getResultList();
        return some_ret;
    }
    
    private void destroy_em(){
        em.close();
    }
    
    
}


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<?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="EMDebugPU" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>medfin_con</jta-data-source>
    <class>Entity.DebugTest</class>
    <class>Entity.Schet</class>
    <shared-cache-mode>NONE</shared-cache-mode>
    <validation-mode>NONE</validation-mode>
    <properties>
      <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
      <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@pgserver1:1521:XE"/>
      <property name="javax.persistence.jdbc.user" value="medfin"/>
      <property name="javax.persistence.jdbc.password" value="medfin"/>
      <property name="eclipselink.jdbc.connections.initial" value="0"/>
      <property name="eclipselink.jdbc.connections.min" value="0"/>
      <property name="eclipselink.jdbc.connections.max" value="8"/>
    </properties>
  </persistence-unit>
</persistence>


Поменял persistent unit. Пробовал RESOURSE_LOCAL и JTA.
Тоже ничего не выходит. Метод persist вызывается. Исключений нет. А в базе пусто!
...
Рейтинг: 0 / 0
06.06.2012, 13:50:29
    #37827595
Niky4000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблички и GlassFish
А вот так вот данные в БД попадают:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
import Entity.DebugTest;
import Entity.Schet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.ejb.Stateless;
import javax.persistence.*;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;


@Stateless(name = "EMDebugSessionBean", mappedName = "EMDebugSessionBean")
public class EMDebugSessionBean implements EMDebugSessionBeanRemote {

    @PersistenceContext(unitName = "EMDebugPU")
    private EntityManager em;
    
    //EntityManager em;
    
    private void init(){
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("EMDebugPU");
        //em=emf.createEntityManager();
        
        
        Map properties = new HashMap();
        properties.put("javax.persistence.jdbc.user", "medfin");
        properties.put("javax.persistence.jdbc.password", "medfin");
        //properties.put("javax.persistence.jdbc.url", "jdbc:oracle:thin:@pgserver1:1521:XE");
        //properties.put("eclipselink.jdbc.exclusive-connection.mode", "Transactional");
        //properties.put("eclipselink.jdbc.exclusive-connection.is-lazy", "true");
        properties.put("eclipselink.jdbc.exclusive-connection.mode", "Always");
        properties.put("eclipselink.jdbc.exclusive-connection.is-lazy", "false");
        em = emf.createEntityManager(properties);
        
        
        /*
        Map properties = new HashMap();
        properties.put("eclipselink.oracle.proxy-type", oracle.jdbc.OracleConnection.PROXYTYPE_USER_NAME);
        properties.put(oracle.jdbc.OracleConnection.PROXY_USER_NAME, "medfin");
        properties.put(oracle.jdbc.OracleConnection.PROXY_USER_PASSWORD, "medfin");
        properties.put("eclipselink.jdbc.exclusive-connection.mode", "Always");
        properties.put("eclipselink.jdbc.exclusive-connection.is-lazy", "false");
        EntityManager em = emf.createEntityManager(properties);
        */
    }
    
    @Override
    public String retHello() {
        

        //init();
        
        DebugTest dt=new DebugTest();
        dt.setId(Long.valueOf(Double.valueOf(Math.random()*1000000).longValue()));
        dt.setData("Value "+Long.valueOf(Double.valueOf(Math.random()*100).longValue()).toString());
        em.persist(dt);
        
        
        List<Object> some=get(DebugTest.class);
        List<Object> some2=get(Schet.class);

        
        //destroy_em();
        
        
        return "Hello from EMDebug Session Bean! "+some2.size();
    }

    
    private List<Object> get(Class table){
        CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
        CriteriaQuery<Object> criteriaQuery = criteriaBuilder.createQuery();
        Root<Object> from = criteriaQuery.from(table);
        CriteriaQuery<Object> select = criteriaQuery.select(from);
                
        TypedQuery<Object> typedQuery = em.createQuery(select);
        List<Object> some_ret = typedQuery.getResultList();
        return some_ret;
    }
    
    private void destroy_em(){
        em.close();
    }
    
    
}


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<?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="EMDebugPU" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>medfin_con</jta-data-source>
    <class>Entity.DebugTest</class>
    <class>Entity.Schet</class>
    <shared-cache-mode>NONE</shared-cache-mode>
    <validation-mode>NONE</validation-mode>
    <properties>
      <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
      <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@pgserver1:1521:XE"/>
      <property name="javax.persistence.jdbc.user" value="medfin"/>
      <property name="javax.persistence.jdbc.password" value="medfin"/>
      <property name="eclipselink.jdbc.connections.initial" value="0"/>
      <property name="eclipselink.jdbc.connections.min" value="0"/>
      <property name="eclipselink.jdbc.connections.max" value="8"/>
    </properties>
  </persistence-unit>
</persistence>


При Container Management может быть только JTA.
...
Рейтинг: 0 / 0
06.06.2012, 13:55:38
    #37827605
Vladmir K
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблички и GlassFish
Niky4000,
попробуй добавить:

Код: java
1.
<property name="eclipselink.logging.level" value="FINE"/>


Niky4000Исключений нет.
Исключения где ловил? Дебагером из IDE? В логах на сервере точно ничего нет (<domain_path>\logs\server.log)?
...
Рейтинг: 0 / 0
06.06.2012, 14:28:22
    #37827686
Niky4000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблички и GlassFish
Ой! Кажется, я накосячил... Вот как надо:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
import Entity.DebugTest;
import Entity.Schet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.ejb.Stateless;
import javax.persistence.*;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;


@Stateless(name = "EMDebugSessionBean", mappedName = "EMDebugSessionBean")
public class EMDebugSessionBean implements EMDebugSessionBeanRemote {

    //@PersistenceContext(unitName = "EMDebugPU")
    //private EntityManager em;
    
    EntityManager em;
    
    private void init(){
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("EMDebugPU");
        //em=emf.createEntityManager();
        
        
        Map properties = new HashMap();
        properties.put("javax.persistence.jdbc.user", "medfin");
        properties.put("javax.persistence.jdbc.password", "medfin");
        //properties.put("javax.persistence.jdbc.url", "jdbc:oracle:thin:@pgserver1:1521:XE");
        //properties.put("eclipselink.jdbc.exclusive-connection.mode", "Transactional");
        //properties.put("eclipselink.jdbc.exclusive-connection.is-lazy", "true");
        properties.put("eclipselink.jdbc.exclusive-connection.mode", "Always");
        properties.put("eclipselink.jdbc.exclusive-connection.is-lazy", "false");
        em = emf.createEntityManager(properties);
        
        
        /*
        Map properties = new HashMap();
        properties.put("eclipselink.oracle.proxy-type", oracle.jdbc.OracleConnection.PROXYTYPE_USER_NAME);
        properties.put(oracle.jdbc.OracleConnection.PROXY_USER_NAME, "medfin");
        properties.put(oracle.jdbc.OracleConnection.PROXY_USER_PASSWORD, "medfin");
        properties.put("eclipselink.jdbc.exclusive-connection.mode", "Always");
        properties.put("eclipselink.jdbc.exclusive-connection.is-lazy", "false");
        EntityManager em = emf.createEntityManager(properties);
        */
        String gq="";
                
    }
    
    @Override
    public String retHello() {
        

        init();
        EntityTransaction et=em.getTransaction();
        et.begin();
        
        DebugTest dt=new DebugTest();
        dt.setId(Long.valueOf(Double.valueOf(Math.random()*1000000).longValue()));
        dt.setData("Value "+Long.valueOf(Double.valueOf(Math.random()*100).longValue()).toString());
        em.persist(dt);
        
        
        List<Object> some=get(DebugTest.class);
        List<Object> some2=get(Schet.class);

        et.commit();
        
        
        destroy_em();
        
        
        return "Hello from EMDebug Session Bean! "+some2.size();
    }

    
    private List<Object> get(Class table){
        CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
        CriteriaQuery<Object> criteriaQuery = criteriaBuilder.createQuery();
        Root<Object> from = criteriaQuery.from(table);
        CriteriaQuery<Object> select = criteriaQuery.select(from);
                
        TypedQuery<Object> typedQuery = em.createQuery(select);
        List<Object> some_ret = typedQuery.getResultList();
        return some_ret;
    }
    
    private void destroy_em(){
        em.close();
    }
    
    
}



Забыл добавить транзакции. Их же тут надо упоминать в явном виде...

А вот Log'и:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
[#|2012-06-06T14:13:28.555+0400|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=118;_ThreadName=Thread-2;|[EL Fine]: 2012-06-06 14:13:28.555--ClientSession(15076455)--Connection(20471937)--Thread(Thread[p: thread-pool-1; w: 3,5,main])--INSERT INTO MEDFIN.DEBUG_TEST (ID, DATA) VALUES (?, ?)
	bind => [205030, Value 84]
|#]

[#|2012-06-06T14:13:28.555+0400|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=118;_ThreadName=Thread-2;|[EL Fine]: 2012-06-06 14:13:28.555--ClientSession(15076455)--Connection(20471937)--Thread(Thread[p: thread-pool-1; w: 3,5,main])--SELECT ID, DATA FROM MEDFIN.DEBUG_TEST
|#]

[#|2012-06-06T14:13:28.556+0400|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=118;_ThreadName=Thread-2;|[EL Fine]: 2012-06-06 14:13:28.556--ClientSession(15076455)--Connection(20471937)--Thread(Thread[p: thread-pool-1; w: 3,5,main])--SELECT ID_PAK, CODE_MO, COMENTS, CRC32, CREATED, DATA, DSCHET, FNAME, FROM_SUBJ, MONTH, NSCHET, TO_SUBJ, TYPEMESS, USER_ID, VERSION, YEAR FROM MEDFIN.SCHET
|#]




Теперь надо потестировать на предмет того будут ли разные клиенты с разных host'ов видеть чужие данные, которые записал во временную табличку другой клиент.
...
Рейтинг: 0 / 0
06.06.2012, 14:56:41
    #37827734
Niky4000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблички и GlassFish
Во блин! Дела! А разные клиенты с разных host'ов всё равно видят чужие данные!
...
Рейтинг: 0 / 0
06.06.2012, 14:57:06
    #37827735
Niky4000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблички и GlassFish
Во временных табличках...
...
Рейтинг: 0 / 0
06.06.2012, 15:14:32
    #37827775
0FD
0FD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблички и GlassFish
Niky4000,

Код: xml
1.
2.
3.
...
<property name="eclipselink.jdbc.connections.max" value="8"/> 
...



value="1" и тогда пула не будет и новое соединение на каждого клиента создаваться будет
...
Рейтинг: 0 / 0
06.06.2012, 15:18:40
    #37827785
ferc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблички и GlassFish
0FD, скорее все будут ждать пока соединение не освободится
...
Рейтинг: 0 / 0
06.06.2012, 15:24:13
    #37827797
Niky4000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблички и GlassFish
А...
Ну, я вот так сделал:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
import Entity.DebugTest;
import Entity.Schet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.ejb.Stateless;
import javax.persistence.*;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;


@Stateless(name = "EMDebugSessionBean", mappedName = "EMDebugSessionBean")
public class EMDebugSessionBean implements EMDebugSessionBeanRemote {

    //@PersistenceContext(unitName = "EMDebugPU")
    //private EntityManager em;
    EntityManagerFactory emf;
    EntityManager em;
    
    private void init(){
        emf = Persistence.createEntityManagerFactory("EMDebugPU");
        //em=emf.createEntityManager();
        
        
        
        Map properties = new HashMap();
        properties.put("javax.persistence.jdbc.user", "medfin");
        properties.put("javax.persistence.jdbc.password", "medfin");
        //properties.put("javax.persistence.jdbc.url", "jdbc:oracle:thin:@pgserver1:1521:XE");
        //properties.put("eclipselink.jdbc.exclusive-connection.mode", "Transactional");
        //properties.put("eclipselink.jdbc.exclusive-connection.is-lazy", "true");
        properties.put("eclipselink.jdbc.exclusive-connection.mode", "Always");
        properties.put("eclipselink.jdbc.exclusive-connection.is-lazy", "false");
        em = emf.createEntityManager(properties);
        
        
        /*
        Map properties = new HashMap();
        properties.put("eclipselink.oracle.proxy-type", oracle.jdbc.OracleConnection.PROXYTYPE_USER_NAME);
        properties.put(oracle.jdbc.OracleConnection.PROXY_USER_NAME, "medfin");
        properties.put(oracle.jdbc.OracleConnection.PROXY_USER_PASSWORD, "medfin");
        properties.put("eclipselink.jdbc.exclusive-connection.mode", "Always");
        properties.put("eclipselink.jdbc.exclusive-connection.is-lazy", "false");
        EntityManager em = emf.createEntityManager(properties);
        */
        String gq="";
                
    }
    
    @Override
    public String retHello() {
        

        init();
        EntityTransaction et=em.getTransaction();
        et.begin();
        //em.joinTransaction();
        
        
        DebugTest dt=new DebugTest();
        dt.setId(Long.valueOf(Double.valueOf(Math.random()*1000000+10).longValue()));
        dt.setData("Value "+Long.valueOf(Double.valueOf(Math.random()*100).longValue()).toString());
        em.persist(dt);

        et.commit();
        
        
        

        et.begin();
        DebugTest dt2=new DebugTest();
        dt2.setId(Long.valueOf(Double.valueOf(Math.random()*1000000+12).longValue()));
        dt2.setData("Value "+Long.valueOf(Double.valueOf(Math.random()*100).longValue()).toString());
        em.persist(dt2);
        
        et.commit();
        
        
        

        et.begin();
        DebugTest dt3=new DebugTest();
        dt3.setId(Long.valueOf(Double.valueOf(Math.random()*1000000).longValue()));
        dt3.setData("Value "+Long.valueOf(Double.valueOf(Math.random()*100).longValue()).toString());
        em.persist(dt3);
        
        et.commit();
        
        
        List<Object> some=get(DebugTest.class);
        List<Object> some2=get(Schet.class);
        
        
        destroy_em();
        
        
        return "Hello from EMDebug Session Bean! "+some.size();
    }

    
    private List<Object> get(Class table){
        CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
        CriteriaQuery<Object> criteriaQuery = criteriaBuilder.createQuery();
        Root<Object> from = criteriaQuery.from(table);
        CriteriaQuery<Object> select = criteriaQuery.select(from);
                
        TypedQuery<Object> typedQuery = em.createQuery(select);
        List<Object> some_ret = typedQuery.getResultList();
        return some_ret;
    }
    
    private void destroy_em(){
        em.close();
        emf.close();
    }
    
    
}


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<?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="EMDebugPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>Entity.DebugTest</class>
    <class>Entity.Schet</class>
    <shared-cache-mode>NONE</shared-cache-mode>
    <validation-mode>NONE</validation-mode>
    <properties>
      <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
      <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@pgserver1:1521:XE"/>
      <property name="javax.persistence.jdbc.user" value="medfin"/>
      <property name="javax.persistence.jdbc.password" value="medfin"/>
      <property name="eclipselink.jdbc.connections.initial" value="0"/>
      <property name="eclipselink.jdbc.connections.min" value="0"/>
      <property name="eclipselink.jdbc.connections.max" value="1"/>
      <property name="eclipselink.logging.level" value="FINE"/>
    </properties>
  </persistence-unit>
</persistence>



Вроде работает.
Выводится 3 в конце работы у разных клиентов.
Этот тест иллюстрирует то, что я вставил что-то во временную табличку, потом за'commit'ил, ещё записал и за'commit'ил и вывел количество записей. Другой клиент тоже самое сделал и у него получилось 3 записи, а не 6.
Вроде, работает.

А вопрос у меня:
А я сделал вот так:
private void destroy_em(){
em.close();
emf.close();
}
EntityManager, наверное, нужно закрывать.
А нужно ли закрывать EntityManagerFactory каждый раз или не нужно?
...
Рейтинг: 0 / 0
06.06.2012, 15:26:51
    #37827800
Niky4000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблички и GlassFish
ferc0FD, скорее все будут ждать пока соединение не освободится
Да, кстати! А это же пул соединений, а действительно не будет ли такого?
Типа пул соединений - это количество возможных одновременных соединений, следовательно, если сделать:
<property name="eclipselink.jdbc.connections.max" value="1"/>
То будет 1 доступное соединение и все остальные будут просто ждать пока оно не освободиться.
Или не так?
...
Рейтинг: 0 / 0
06.06.2012, 15:27:43
    #37827804
ferc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Временные таблички и GlassFish
Niky4000, попробуй сделать кол-во клиентов побольше и посмотри долго ли они будут писать...
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Временные таблички и GlassFish / 25 сообщений из 35, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]