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
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user