[EJB3] - JBoss 6.1.0.Final SFSB concurrency issue

Octavian Pop <[email protected]>
Newsgroups gmane.comp.java.jboss.user
Message-ID <[email protected]>
Octavian Pop [https://community.jboss.org/people/PopOctavian] created the discussion

"JBoss 6.1.0.Final SFSB concurrency issue"

To view the discussion, visit: https://community.jboss.org/message/828891#828891

--------------------------------------------------------------
Hi,

I am trying to run a test to investigate a performace issue after upgrading from JBoss 4.0.5 to 6.1. For this I use a simple test application with a service which starts threads, each thread looks-up a SFSB instace and execute a method to increment a number. 
>From this test I notticed that SFSB method calls in the multi-threaded test are serialized - one execution after the other. Investigating in more detail I found that this serialization is caused by CMC interceptor from server/current/deploy/ejb3-interceptors-aop.xml.
If I commented out CMC, performance increased significantly.

Is this a known behavior?
What are the implications if I comment CMC?

Thanks.

Below are code snippets from test:


@Service
public class TestingService
{
 
    public static int numberOfThreads=2;
 
    public static void start() throws Exception
    {
 
        startTest(numberOfThreads);
    }
 
    public static void startTest(int threadNumber) throws InterruptedException
    {
        Thread [] threads = new Thread[threadNumber];
 
        for (int i=0;i< threadNumber;i++)
        {
            Thread t = new Thread()
            {
                public void run()
                {
                    Client testClient = new Client();
                    testClient.processNumber(Math.round(Math.random()*1000));
                    testClient.destroy();
                }
            };
            t.start();
            threads[i] = t;
        }
 
        for(int i=0; i<threadNumber; i++)
        {
            threads[i].join();
        }
    }
}
 
public class Client
{
    IGenericSFB genericSFB;
 
    public Client()
    {
        genericSFB = (IGenericSFB) ServiceLocator.getLocalService(GenericSFB.class.getSimpleName());
        System.out.println("This address " + genericSFB + " " + genericSFB.hashCode());
    }
 
 
    public void processNumber(Long number)
    {
        System.out.println("Client - Start incrementing " + number);
        genericSFB.incrementNumber(number);
        System.out.println("Client - Finish incrementing " + number);
 
    }
...
 
 
@Stateful
public class GenericSFB implements IGenericSFB, Serializable
{
    private int number;
    private String stuff;
    private String someOtherStuff;
 
    public Long incrementNumber(Long number)
    {
        System.out.println("SFB - start incrementing number " + number + " by " + this);
        try
        {
            Thread.currentThread().sleep(10000);
        }
        catch (InterruptedException e){}
 
        System.out.println("SFB - finish incrementing number " + number);
 
        return 0L;
    }
...
 
 
--------------------------------------------------------------

Reply to this message by going to Community
[https://community.jboss.org/message/828891#828891]

Start a new discussion in EJB3 at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2029]

_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.