import org.jboss.ejb3.annotation.Pool;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.inject.Inject;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@Singleton
@Startup
public class MyService {
@Inject
@Pool("my-pool")
private ExecutorService executorService;
public void executeTasks() {
for (int i = 0; i < 10; i++) {
executorService.submit(() -> {
System.out.println("Task executed by thread: " + Thread.currentThread().getName());
});
}
}
}
<subsystem xmlns="urn:jboss:domain:ee:1.2">
<default-bindings ...>
<lookup name="java:comp/DefaultManagedExecutorService" lookup="java:comp/DefaultManagedExecutorService"/>
</default-bindings>
...
<concurrency:default-container>
<concurrency:jndi-name>java:comp/DefaultManagedExecutorService</concurrency:jndi-name>
<concurrency:default-max-pool-size>50</concurrency:default-max-pool-size>
<concurrency:default-queue-length>1000</concurrency:default-queue-length>
</concurrency:default-container>
</subsystem>