[jboss-user] [EJB 3.0 Users] - synchronized @Service
sfs
do-not-reply at jboss.com
Thu Sep 24 04:24:42 EDT 2009
I want to build a caching singleton service with the jboss @Service annotation. In this singleton service the methods have to be synchronized. In my tests I saw, that the singleton instance of my service allows multiple active simultaneous threads (see bellow: Not synchronized output). When I mark the service methods with "synchronized", the service acts in the way I need it (see bellow: synchronized output).
Her my questions:
1. Is it allowed to use the synchronized keyword (EJB spec) in my @Service singleton methods?
2. Are there any special jboss annotations for @Service singeltons, which I can use to mark service methods "SYNCHRONIZED"?
thanks a lot,
Florian
public interface JBossServiceTest
| {
| public void test();
| }
@Remote(JBossServiceTest.class)
| @Service
| public class JBossServiceTestBean implements JBossServiceTest
| {
| private static final Logger logger = Logger.getLogger(JBossServiceTestBean.class);
|
| private static int callCounter = 1;
|
| public JBossServiceTestBean()
| {
|
| }
|
| public void test()
| {
| int callId = callCounter++;
|
| logger.info("start test call " + callId);
|
| try
| {
| Thread.sleep(3000);
| }
| catch (Exception e)
| {
| logger.fatal("error :(", e);
| }
|
| logger.info("end test call " + callId);
|
| }
| }
Not synchronized output:
10:01:19,751 INFO [JBossServiceTestBean] start test call 1
| 10:01:19,751 INFO [JBossServiceTestBean] start test call 8
| 10:01:19,751 INFO [JBossServiceTestBean] start test call 9
| 10:01:19,751 INFO [JBossServiceTestBean] start test call 6
| 10:01:19,751 INFO [JBossServiceTestBean] start test call 7
| 10:01:19,751 INFO [JBossServiceTestBean] start test call 3
| 10:01:19,751 INFO [JBossServiceTestBean] start test call 2
| 10:01:19,751 INFO [JBossServiceTestBean] start test call 5
| 10:01:19,751 INFO [JBossServiceTestBean] start test call 1
| 10:01:19,751 INFO [JBossServiceTestBean] start test call 4
| 10:01:22,752 INFO [JBossServiceTestBean] end test call 1
| 10:01:22,752 INFO [JBossServiceTestBean] end test call 9
| 10:01:22,752 INFO [JBossServiceTestBean] end test call 7
| 10:01:22,752 INFO [JBossServiceTestBean] end test call 4
| 10:01:22,752 INFO [JBossServiceTestBean] end test call 1
| 10:01:22,752 INFO [JBossServiceTestBean] end test call 5
| 10:01:22,752 INFO [JBossServiceTestBean] end test call 2
| 10:01:22,752 INFO [JBossServiceTestBean] end test call 3
| 10:01:22,752 INFO [JBossServiceTestBean] end test call 6
| 10:01:22,752 INFO [JBossServiceTestBean] end test call 8
@Remote(JBossServiceTest.class)
| @Service
| public class JBossServiceTestBean implements JBossServiceTest
| {
| private static final Logger logger = Logger.getLogger(JBossServiceTestBean.class);
|
| private static int callCounter = 1;
|
| public JBossServiceTestBean()
| {
|
| }
|
| public synchronized void test()
| {
| int callId = callCounter++;
|
| logger.info("start test call " + callId);
|
| try
| {
| Thread.sleep(3000);
| }
| catch (Exception e)
| {
| logger.fatal("error :(", e);
| }
|
| logger.info("end test call " + callId);
|
| }
| }
synchronized output:
10:03:29,539 INFO [JBossServiceTestBean] start test call 1
| 10:03:32,539 INFO [JBossServiceTestBean] end test call 1
| 10:03:32,539 INFO [JBossServiceTestBean] start test call 2
| 10:03:35,540 INFO [JBossServiceTestBean] end test call 2
| 10:03:35,540 INFO [JBossServiceTestBean] start test call 3
| 10:03:38,540 INFO [JBossServiceTestBean] end test call 3
| 10:03:38,540 INFO [JBossServiceTestBean] start test call 4
| 10:03:41,540 INFO [JBossServiceTestBean] end test call 4
| 10:03:41,540 INFO [JBossServiceTestBean] start test call 5
| 10:03:44,540 INFO [JBossServiceTestBean] end test call 5
| 10:03:44,540 INFO [JBossServiceTestBean] start test call 6
| 10:03:47,540 INFO [JBossServiceTestBean] end test call 6
| 10:03:47,540 INFO [JBossServiceTestBean] start test call 7
| 10:03:50,540 INFO [JBossServiceTestBean] end test call 7
| 10:03:50,540 INFO [JBossServiceTestBean] start test call 8
| 10:03:53,541 INFO [JBossServiceTestBean] end test call 8
| 10:03:53,541 INFO [JBossServiceTestBean] start test call 9
| 10:03:56,541 INFO [JBossServiceTestBean] end test call 9
| 10:03:56,541 INFO [JBossServiceTestBean] start test call 10
| 10:03:59,541 INFO [JBossServiceTestBean] end test call 10
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4256804#4256804
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4256804
More information about the jboss-user
mailing list