dev@glassfish.java.net

[gf-dev] Re: EJB pool

From: Janario Oliveira <janarioliver_at_gmail.com>
Date: Mon, 30 Mar 2015 19:36:55 -0300

The problem is I don't want a heavy process to "hijack" the container. So
that's why I'm limiting the async pool, to make sure that at most x
instances will be executing at a given time. The way that GlassFish works
now defeats the purpose of what I'm trying to achieve. How can I limit the
number of executing async instances for a given case then?

On Mon, Feb 9, 2015 at 6:16 PM, Mahesh Kannan <Mahesh.Kannan_at_oracle.com>
wrote:

>
> On 02/09/2015 08:31 AM, Janario Oliveira wrote:
>
>> Hi guys,
>>
>> I am trying to configure an ejb bean pool. But it is not working.
>>
>> I have one stateless (AsyncService) and I have added
>> glassfish-ejb-jar.xml in WEB-INF
>>
>> glassfish-ejb-jar.xml:
>> <sun-ejb-jar>
>> <enterprise-beans>
>> <ejb>
>> <ejb-name>AsyncService</ejb-name>
>> <bean-pool>
>> <steady-pool-size>2</steady-pool-size>
>> <resize-quantity>1</resize-quantity>
>> <max-pool-size>5</max-pool-size>
>> <pool-idle-timeout-in-seconds>300</pool-idle-timeout-in-seconds>
>> </bean-pool>
>> </ejb>
>> </enterprise-beans>
>> </sun-ejb-jar>
>>
>> It should limit AsyncService in maximum 5 instances. I've added a
>> PostConstruct method to log creations.
>>
>> AsyncService:
>> @Stateless
>> public class AsyncService {
>> @PostConstruct
>> private void init() { System.out.println("Contruct AsyncService"); }
>> @Asynchronous
>> public Future<LocalDateTime> asyncTest() {...}
>> }
>>
>>
>> Calling the asyncTest in a loop of 15 times it creates more the maximum
>> configured.
>>
>
> This is by design. We didn't want the incoming requests to be blocked just
> because
> there are not enough stateless EJBs in the pool. So, when an incoming
> request
> arrives and if there are no beans in the pool, the container will
> create a new
> bean instance. However, the pool will hold only <max-pool-size>
> beans. Bean
> instances that are created in excess of <max-pool-size> will be
> destroyed when
> the request completes.
>
>
>
>> Is there another way to configure that or are my configurations wrong?
>>
>
>