dev@glassfish.java.net

[gf-dev] Re: EJB pool

From: Mahesh Kannan <Mahesh.Kannan_at_Oracle.Com>
Date: Mon, 30 Mar 2015 16:36:02 -0700

Since this is a local bean, I am assuming that you are accessing it from a
Servlet. You can try configuring the "thread-pool" configurations or any
web container specific settings that limits the number of requests.


On 3/30/15 3:36 PM, Janario Oliveira wrote:
> 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 <mailto: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?
>
>
>