什么时候用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中。
答案 0 :(得分:0)
使用@Stateless EJB bean,在离开EJB时默认提交事务。
将methodB()放在单独的EJB中。(假设methodA()不是EJB)