Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Java EE 6 & Vaadin problem! / 14 сообщений из 14, страница 1 из 1
07.04.2013, 00:17:15
    #38215753
trubala
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java EE 6 & Vaadin problem!
Доброго времени суток! разрабатываю приложение, и использую данную связку.
Возникла очень странная проблема,
1)при нажатии на кнопку в таблицу должны записываться некоторые данные, но запись в таблицу происходит не в полной мере, т.е. часть данных теряется.
2)у меня есть форма из нескольких шагов, в которых настраиваются клиенты. Клиенты запускаются, записывают свой прогресс выполнения в бд, форма читает из таблицы поля с прогрессом каждого клиента, по достижении 100% форма переходит к выводу результата. При повторном выполнении тех же действий, перед запуском клиентов, я обнуляю поля с прогрессом (клиентов) - НО ЗНАЧЕНИЯ В ТАБЛИЦЕ НЕ МЕНЯЮТСЯ! Хотя при первом проходе все работало.

Сервлет:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
@WebServlet(urlPatterns = "/*")
public class MainServlet extends AbstractApplicationServlet {
//public class MainServlet extends ICEpushServlet {

    
    private static final long serialVersionUID = 1L;
   
    @Inject private Instance<MainWindow> application;

    @Override
    protected Application getNewApplication(HttpServletRequest request) throws ServletException {
        return application.get();
    }

    @Override
    protected Class<? extends Application> getApplicationClass() throws ClassNotFoundException {
        return MainWindow.class;
    }

}



MainWindow:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
@SessionScoped
public class MainWindow extends Application {

    @EJB
    private ServerConfigDAOLocal serverConfDAO;


    private Window mainWindow;
    @Override
    public void init() {
....
}



Метод обнуления
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
@Stateless(name = "EjbRemoteClientDAO", mappedName = "ServerTFA-Model-EjbRemoteClientDAO")
public class EjbRemoteClientDAOBean implements EjbRemoteClientDAOLocal {
....
    public void setToZeroProgress(){
        List<EjbRemoteClients> list = findByJob("false");
        int size = list.size();
        for(int i = 0; i < size; i++){
            list.get(i).setProgeassCopyfiles("0");
            list.get(i).setProgressTestfiles("0");
            mergeEjbRemoteClients(list.get(i));
        }
    }

}



Я думаю проблема в Vaadin - е, в @SessionScoped, т.к. после редеплоя все работает.
Если нету мыслей по этому поводу, может вы посоветует другой фраймворк, у которого нет подобных проблем, в нем можно динамически обновлять компоненты, и создавать изменяющееся количество компонентов (в моем случае от количества клиентов)

Заранее спасибо!
...
Рейтинг: 0 / 0
07.04.2013, 00:21:35
    #38215758
trubala
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java EE 6 & Vaadin problem!
главное окно состоит из нескольких Табов, все содержимое табов, сделано в отдельных классах, поэтому бины берутся через InitialContext поиском по JNDI, при создании элемент.
...
Рейтинг: 0 / 0
07.04.2013, 00:23:12
    #38215759
trubala
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java EE 6 & Vaadin problem!
Забыл....
сервер WebLogic 12c, база данных Oracle 11g
...
Рейтинг: 0 / 0
07.04.2013, 10:07:02
    #38215836
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java EE 6 & Vaadin problem!
а если подебажить?
версия ваадин какая?
используете для коспонентов параметр setImmidiate ?
...
Рейтинг: 0 / 0
07.04.2013, 12:59:21
    #38215998
trubala
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java EE 6 & Vaadin problem!
Nixic, версия ваадин - 6.8.9, setImmidiate выставить всем компонентам? я поставил только кнопкам после которых выполняются действия по работе с БД, не помогло!
Дебажить, не вижу смысла, ошибки не выскакивают...просто в БД не пишется результат=(
(я смотрел БД через SQL Developer, собственно такой дебаг =) )
...
Рейтинг: 0 / 0
07.04.2013, 19:10:07
    #38216272
Java EE 6 & Vaadin problem!
trubalaможет вы посоветует другой фраймворк, у которого нет подобных проблем, в нем можно динамически обновлять компоненты, и создавать изменяющееся количество компонентов (в моем случае от количества клиентов)

А чего vaadin такой древний? уже 4 месяца как вышла 7-я версия, а 6-я через месяц вообще с поддержки снимается.
А в 7-й версии очень много полезного сделали. Но это лирика.

По сути вопроса проблемы не у ваадина. Просто надо уметь им пользоваться.
У меня в проекте, правда на спринге а не JEE, все отлично работает.
И опять, же при чем тут ваадин, если у вас не обновляются данные в БД?

trubalaв нем можно динамически обновлять компоненты, и создавать изменяющееся количество компонентов (в моем случае от количества клиентов)

Это вот щас вы о чем? какие именно компоненты не получается динамически создать-то?
...
Рейтинг: 0 / 0
07.04.2013, 19:38:20
    #38216294
trubala
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java EE 6 & Vaadin problem!
авторПо сути вопроса проблемы не у ваадина. Просто надо уметь им пользоваться.
У меня в проекте, правда на спринге а не JEE, все отлично работает.
И опять, же при чем тут ваадин, если у вас не обновляются данные в БД?

При первом выполнении цикла действий с БД, все работает и данные обновляется.
Что бы выполнить повторно тот же цикл действий, я жму кнопку по которой выполняется &restartApplication (хотя и без него то же не работает), после перзапуска приложения вы полняю второй цикл действий и данные уже не вставляются в бд.

Возникла идея, может проблема в транзакциях, такое ощущение будто они не коммиться. Но транзакции управляются контейнером, такого по идеи не должно быть.

Либо модет проблема с драйвером подключения к БД, я пробовал однофазный и двух фазный коммит, но изменений не заметил.
...
Рейтинг: 0 / 0
07.04.2013, 20:06:44
    #38216307
Java EE 6 & Vaadin problem!
Тут скорее всего проблема именно в транзакциях. Это вообще распространенная проблема.
Очень много вопросов в инете, почему транзакции не работают.
...
Рейтинг: 0 / 0
07.04.2013, 22:18:27
    #38216369
trubala
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java EE 6 & Vaadin problem!
интересная штука, пытаюсь целенаправленно изменить поля прогресса

Код: java
1.
2.
3.
4.
                 @NamedQuery(name = "setToZeroProgressCopy",
                             query = "update EjbRemoteClients o set o.progeassCopyfiles='0' where o.idClient=:id"),
                 @NamedQuery(name = "setToZeroProgressTest",
                             query = "update EjbRemoteClients o set o.progressTestfiles='0' w



Код: java
1.
2.
3.
4.
5.
6.
7.
public void setToZeroProgressCopy(BigDecimal id) {
        em.createNamedQuery("setToZeroProgressCopy").setParameter("id", id).executeUpdate();
    }

    public void setToZeroProgressTest(BigDecimal id) {
        em.createNamedQuery("setToZeroProgressTest").setParameter("id", id).executeUpdate();
    }



При выполнении этих методов вываливается такой Exception

Код: java
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.
com.vaadin.event.ListenerMethod$MethodException: Invocation of method buttonClick in view.testTab.TestTabPanel$2 failed.
	at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:530)
	at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:164)
	at com.vaadin.ui.AbstractComponent.fireEvent(AbstractComponent.java:1219)
	at com.vaadin.ui.Button.fireClick(Button.java:567)
	at com.vaadin.ui.Button.changeVariables(Button.java:223)
	at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.changeVariables(AbstractCommunicationManager.java:1460)
	at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariableBurst(AbstractCommunicationManager.java:1404)
	at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1329)
	at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest(AbstractCommunicationManager.java:761)
	at com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:325)
	at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:501)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:844)
	at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:242)
	at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:216)
	at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:132)
	at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:338)
	at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25)
	at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:74)
	at org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62)
	at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:74)
	at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
	at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:74)
	at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3288)
	at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3254)
	at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
	at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
	at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)
	at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2163)
	at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2089)
	at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2074)
	at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1513)
	at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:254)
	at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
	at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
Caused by: javax.ejb.EJBException: EJB Exception: : java.lang.IllegalStateException: During synchronization a new object was found through a relationship that was not marked cascade PERSIST: model.ClientSourceDirs@f850d9.
	at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.discoverUnregisteredNewObjects(RepeatableWriteUnitOfWork.java:304)
	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.calculateChanges(UnitOfWorkImpl.java:702)
	at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.writeChanges(RepeatableWriteUnitOfWork.java:433)
	at org.eclipse.persistence.internal.jpa.EntityManagerImpl.flush(EntityManagerImpl.java:780)
	at org.eclipse.persistence.internal.jpa.EJBQueryImpl.performPreQueryFlush(EJBQueryImpl.java:1298)
	at org.eclipse.persistence.internal.jpa.EJBQueryImpl.executeUpdate(EJBQueryImpl.java:538)
	at model.dao.EjbRemoteClientDAOBean.setToZeroProgressCopy(EjbRemoteClientDAOBean.java:238)
	at model.dao.EjbRemoteClientDAOBean.createJobClients(EjbRemoteClientDAOBean.java:204)
	at model.dao.EjbRemoteClientDAO_kxmhi0_EjbRemoteClientDAOLocalImpl.__WL_invoke(Unknown Source)
	at weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(SessionLocalMethodInvoker.java:31)
	at model.dao.EjbRemoteClientDAO_kxmhi0_EjbRemoteClientDAOLocalImpl.createJobClients(Unknown Source)
	at view.testTab.StepConfig.build(StepConfig.java:108)
	at view.testTab.StepConfig.<init>(StepConfig.java:89)
	at view.testTab.TestTabPanel$2.buttonClick(TestTabPanel.java:166)
	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.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:510)
	at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:164)
	at com.vaadin.ui.AbstractComponent.fireEvent(AbstractComponent.java:1219)
	at com.vaadin.ui.Button.fireClick(Button.java:567)
	at com.vaadin.ui.Button.changeVariables(Button.java:223)
	at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.changeVariables(AbstractCommunicationManager.java:1460)
	at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariableBurst(AbstractCommunicationManager.java:1404)
	at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1329)
	at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest(AbstractCommunicationManager.java:761)
	at com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:325)
	at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:501)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:844)
	at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:242)
	at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:216)
	at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:132)
	at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:338)
	at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25)
	at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:74)
	at org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62)
	at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:74)
	at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
	at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:74)
	at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3288)
	at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3254)
	at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
	at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
	at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)
	at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2163)
	at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2089)
	at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2074)
	at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1513)
	at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:254)
	at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
	at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)

	at weblogic.ejb.container.internal.EJBRuntimeUtils.throwEJBException(EJBRuntimeUtils.java:154)
	at weblogic.ejb.container.internal.BaseLocalObject.handleSystemException(BaseLocalObject.java:509)
	at weblogic.ejb.container.internal.BaseLocalObject.handleSystemException(BaseLocalObject.java:447)
	at weblogic.ejb.container.internal.BaseLocalObject.postInvoke1(BaseLocalObject.java:248)
	at weblogic.ejb.container.internal.BaseLocalObject.__WL_postInvokeTxRetry(BaseLocalObject.java:202)
	at weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(SessionLocalMethodInvoker.java:44)
	at model.dao.EjbRemoteClientDAO_kxmhi0_EjbRemoteClientDAOLocalImpl.createJobClients(Unknown Source)
	at view.testTab.StepConfig.build(StepConfig.java:108)
	at view.testTab.StepConfig.<init>(StepConfig.java:89)
	at view.testTab.TestTabPanel$2.buttonClick(TestTabPanel.java:166)
	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.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:510)
	... 33 more
Caused by: java.lang.IllegalStateException: During synchronization a new object was found through a relationship that was not marked cascade PERSIST: model.ClientSourceDirs@f850d9.
	at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.discoverUnregisteredNewObjects(RepeatableWriteUnitOfWork.java:304)
	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.calculateChanges(UnitOfWorkImpl.java:702)
	at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.writeChanges(RepeatableWriteUnitOfWork.java:433)
	at org.eclipse.persistence.internal.jpa.EntityManagerImpl.flush(EntityManagerImpl.java:780)
	at org.eclipse.persistence.internal.jpa.EJBQueryImpl.performPreQueryFlush(EJBQueryImpl.java:1298)
	at org.eclipse.persistence.internal.jpa.EJBQueryImpl.executeUpdate(EJBQueryImpl.java:538)
	at model.dao.EjbRemoteClientDAOBean.setToZeroProgressCopy(EjbRemoteClientDAOBean.java:238)
	at model.dao.EjbRemoteClientDAOBean.createJobClients(EjbRemoteClientDAOBean.java:204)
	at model.dao.EjbRemoteClientDAO_kxmhi0_EjbRemoteClientDAOLocalImpl.__WL_invoke(Unknown Source)
	at weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(SessionLocalMethodInvoker.java:31)
	... 42 more



Не хочет обновлять поля....
...
Рейтинг: 0 / 0
08.04.2013, 09:11:11
    #38216545
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java EE 6 & Vaadin problem!
что такое "поля прогресса"? какой это компонент и где в коде видно, что вы его "обнуляете".
п.с. Для "обнуления" нужно выполнить метод setValue(...) со значением вместо точек null либо "", в зависимости от ситуации.
...
Рейтинг: 0 / 0
08.04.2013, 12:42:25
    #38216973
Java EE 6 & Vaadin problem!
Nixicчто такое "поля прогресса"? какой это компонент и где в коде видно, что вы его "обнуляете".
п.с. Для "обнуления" нужно выполнить метод setValue(...) со значением вместо точек null либо "", в зависимости от ситуации.

У автора проблема с БД, а не с vaadin.
Поля прогресса у него это ячейки таблицы в базе, их он и не умеет апдейтить.
...
Рейтинг: 0 / 0
08.04.2013, 20:12:58
    #38217897
trubala
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java EE 6 & Vaadin problem!
Да, именно с транзакциями. В итоге с сделал методы которые изменяют отдельные поля клиентов в таблице, до этого. я получал сущность клиента изменял ее параметры и делал merge записи.
Так, что не правильно делать?
...
Рейтинг: 0 / 0
08.04.2013, 20:39:23
    #38217928
Java EE 6 & Vaadin problem!
trubalaДо этого. я получал сущность клиента изменял ее параметры и делал merge записи.
Так, что не правильно делать?

Все правильно, так именно и делается.
...
Рейтинг: 0 / 0
08.04.2013, 20:42:00
    #38217930
trubala
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java EE 6 & Vaadin problem!
Ищущий Знания, так не работала, пришлось делать костыли.
Может у меня не правильно настроена глобальная транзакция, не коммитила, по завершению работы метода в бине, в базу данные.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Java EE 6 & Vaadin problem! / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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