Session scoped components are automatically Synchronized, so multiple threads cannot access then at once. If a thread is waiting two long to acquire a lock that exception will get thrown.
I've run at the same problem when I was writing module that took a long time to perform some task and other component was trying to access the busy component (i.e. on page refresh). I suggest running that task in separate thread. Note that when you use @Asynchronous annotation to fire method in async mode, then it does not have access to conversation scope. You might find it easier sometimes to create separate thread by hand and set it up right.
So only way is to set bigger timeout using @Synchronized at bean begin in this case (if I use SESSION scope bean).
@Stateful @Scope(ScopeType.SESSION) @Name("xxxxx") @Synchronized(timeout=10000)
but in conversation state each conversation is separated thread and this it not necesary. Am I right?
yes, I think there is some way to remove the synchronization but I cannot remember it off the top of my head, you would have to check the docs. If you do this the you will have to deal with thread safety issues yourself though.