事务何时与JEE JPA(EclipseLink 2.0)一起提交?

时间:2016-11-28 08:16:38

标签: java jpa transactions eclipselink commit

什么时候用JPA(EclipseLink 2.0)提交事务?

这是我的问题:

methodA

我们说methodA需要10分钟才能完成。如果我在methodB运行时查看数据库的客户端表,我将看不到任何行。这意味着在methodA结束后,事务未提交。但是如果我等到methodB完成,那么客户端就会出现在数据库中。

我希望在methodB()结束后提交每个事务。我怎么能这样做?

编辑:我希望应用程序容器(Glassfish)能够处理&#34; commit&#34;。我不想通过致电实体经理来做到这一点。我正在寻找诸如#include <pthread.h> #include <stdio.h> #include <unistd.h> int fact=1; //this data is shared by thread(s) int n; int x; int *arrayName; int main(int argc, char *argv[]) { if (argc != 3){ //check number of arguments printf("Must use: a.out <integer value>\n"); return -1; } int x = atoi(argv[1]); n = atoi(argv[2]); if (n < 0){ //check second passed argument printf("%d Must be >=0\n", atoi(argv[2])); return -1; } arrayName = (int *) malloc(n * sizeof(int)); pthread_t tid[n]; for(int i=0;i<n;i++){ pthread_create(&tid[i], NULL, (void *) i, NULL); } int i=0; while(i<n){ pthread_join(tid[i],NULL); i++; } i=0; while (i<n) { printf("Thread is %d",arrayName[i]); i++; } } void *calculateMult(void *i) { int j = (int) i; arrayName[j] = x * j; return NULL; }; 之上的注释之类的内容。这两种方法都在单例bean中。

1 个答案:

答案 0 :(得分:0)

使用@Stateless EJB bean,在离开EJB时默认提交事务。

将methodB()放在单独的EJB中。(假设methodA()不是EJB)