[ 
https://issues.apache.org/jira/browse/TOMEE-4354?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17861340#comment-17861340
 ] 

Richard Zowalla commented on TOMEE-4354:
----------------------------------------

The original exception is:
 {code:java}
java.lang.IllegalArgumentException: Unknown context service Default Context 
Service
at 
org.apache.openejb.resource.thread.ManagedExecutorServiceImplFactory.findContextService(ManagedExecutorServiceImplFactory.java:89)
at 
org.apache.openejb.resource.thread.ManagedExecutorServiceImplFactory.create(ManagedExecutorServiceImplFactory.java:50)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 
Method)
at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java:301)
at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)
at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61)
at 
org.apache.openejb.assembler.classic.Assembler.doCreateResource(Assembler.java:3179)
at org.apache.openejb.assembler.classic.Assembler$6.call(Assembler.java:3064)
at 
org.apache.openejb.core.ivm.naming.LazyObjectReference.getObject(LazyObjectReference.java:37)
at org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:186)
at org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:131)
at 
org.apache.tomee.common.AbstractObjectFactory.lookup(AbstractObjectFactory.java:103)
at 
org.apache.tomee.common.AbstractObjectFactory.getObjectInstance(AbstractObjectFactory.java:52)
at 
org.apache.tomee.common.ResourceFactory.getObjectInstance(ResourceFactory.java:50)
at org.apache.naming.factory.FactoryBase.getObjectInstance(FactoryBase.java:91)
at 
java.naming/javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:342)
at org.apache.naming.NamingContext.lookup(NamingContext.java:544)
at org.apache.naming.NamingContext.lookup(NamingContext.java:148)
at org.apache.naming.NamingContext.lookup(NamingContext.java:530)
at org.apache.naming.NamingContext.lookup(NamingContext.java:148)
at org.apache.naming.NamingContext.lookup(NamingContext.java:530)
at org.apache.naming.NamingContext.lookup(NamingContext.java:155)
at 
org.apache.tomee.catalina.OpenEJBNamingContextListener.bindResource(OpenEJBNamingContextListener.java:268)
at 
org.apache.tomee.catalina.OpenEJBNamingContextListener.addResource(OpenEJBNamingContextListener.java:258)
at 
org.apache.tomee.catalina.OpenEJBNamingContextListener.processInitialNamingResources(OpenEJBNamingContextListener.java:225)
at 
org.apache.tomee.catalina.OpenEJBNamingContextListener.start(OpenEJBNamingContextListener.java:93)
at 
org.apache.tomee.catalina.OpenEJBNamingContextListener.lifecycleEvent(OpenEJBNamingContextListener.java:75)
{code}
 
This is a reproducer test
 
 
{code:java}
Index: 
container/openejb-core/src/test/java/org/apache/openejb/threads/TomEE4354Test.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git 
a/container/openejb-core/src/test/java/org/apache/openejb/threads/TomEE4354Test.java
 
b/container/openejb-core/src/test/java/org/apache/openejb/threads/TomEE4354Test.java
new file mode 100644
--- /dev/null   (date 1719904432177)
+++ 
b/container/openejb-core/src/test/java/org/apache/openejb/threads/TomEE4354Test.java
        (date 1719904432177)
@@ -0,0 +1,110 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openejb.threads;
+
+import jakarta.annotation.Resource;
+import jakarta.ejb.EJB;
+import jakarta.ejb.Singleton;
+import jakarta.enterprise.concurrent.ContextService;
+import jakarta.enterprise.concurrent.ManagedExecutorService;
+import jakarta.enterprise.concurrent.ManagedScheduledExecutorService;
+import jakarta.enterprise.concurrent.ManagedThreadFactory;
+import org.apache.openejb.jee.EnterpriseBean;
+import org.apache.openejb.jee.SingletonBean;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.testing.Configuration;
+import org.apache.openejb.testing.Module;
+import org.apache.openejb.testng.PropertiesBuilder;
+import org.apache.openejb.threads.impl.ManagedExecutorServiceImpl;
+import org.apache.openejb.threads.impl.ManagedScheduledExecutorServiceImpl;
+import org.apache.openejb.threads.impl.ManagedThreadFactoryImpl;
+import org.apache.openejb.util.reflection.Reflections;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.Properties;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThat;
+
+@RunWith(ApplicationComposer.class)
+public class TomEE4354Test {
+    @Configuration
+    public Properties configuration() {
+        return new PropertiesBuilder()
+
+            .property("concurrent/es", 
"new://Resource?type=ManagedExecutorService")
+            .property("concurrent/es.core", "2")
+            .property("concurrent/es.max", "10")
+            .property("concurrent/es.keepAlive", "5 s")
+            .property("concurrent/es.queue", "3")
+            .property("concurrent/es.lazy", "True")
+            .property("concurrent/es.threadFactory", 
"org.apache.openejb.threads.impl.ManagedThreadFactoryImpl")
+
+            .build();
+    }
+
+    @Module
+    public EnterpriseBean bean() {
+        return new SingletonBean(CustomCUBean.class).localBean();
+    }
+
+    @Resource(name = "concurrent/es")
+    private ManagedExecutorService es;
+
+// if present, test will pass
+//    @Resource
+//    private ContextService ces;
+
+    @EJB
+    private CustomCUBean bean;
+
+    @Test
+    public void checkInjections() {
+        doCheck(es);
+
+        bean.check();
+    }
+
+    private static void doCheck(final ManagedExecutorService es) {
+        assertNotNull(es);
+
+        assertThat(es, instanceOf(ManagedExecutorServiceImpl.class));
+        assertEquals(2, pool(es).getCorePoolSize());
+        assertEquals(10, pool(es).getMaximumPoolSize());
+        assertEquals(5, pool(es).getKeepAliveTime(TimeUnit.SECONDS));
+
+    }
+
+    private static ThreadPoolExecutor pool(final ManagedExecutorService es) {
+        return 
ThreadPoolExecutor.class.cast(ManagedExecutorServiceImpl.class.cast(es).getDelegate());
+    }
+
+    @Singleton
+    public static class CustomCUBean {
+        @Resource(name = "concurrent/es")
+        private ManagedExecutorService es;
+
+        public void check() {
+            doCheck(es);
+        }
+    }
+}

{code}
 
 

> Fail to create ManagedExecutorService in TomEE 10.0.0-M1
> --------------------------------------------------------
>
>                 Key: TOMEE-4354
>                 URL: https://issues.apache.org/jira/browse/TOMEE-4354
>             Project: TomEE
>          Issue Type: Bug
>          Components: TomEE Core Server
>    Affects Versions: 10.0.0-M1
>         Environment: Ubuntu 24.04, OpenJDK 17
>            Reporter: cpliu
>            Priority: Major
>              Labels: executor, openejb
>
> In a fresh install of TomEE 10.0.0-M1-plume, I have in tomee.xml this 
> resource:
> {{<Resource id="Foo" type="ManagedExecutorService">
>   Core = 5
>   Max = 25
>   KeepAlive = 5 s
>   Queue = 15
>   ThreadFactory = org.apache.openejb.threads.impl.ManagedThreadFactoryImpl
>   Lazy = true
> </Resource>}}
> TomEE failed to create the resource with error in catalina\{date}.log:
> {{25-Jun-2024 21:07:30.229 SEVERE [main] 
> jdk.internal.reflect.NativeMethodAccessorImpl.invoke Exception processing 
> global JNDI Resources
> org.apache.openejb.core.ivm.naming.LazyObjectReference$LazyNamingException: 
> Error calling instance factory method: public 
> org.apache.openejb.threads.impl.ManagedExecutorServiceImpl 
>  org.apache.openejb.resource.thread.ManagedExecutorServiceImplFactory.create()
>     at 
> org.apache.openejb.core.ivm.naming.LazyObjectReference.getObject(LazyObjectReference.java:39)
>  ...}}
> {{}}
> {{}}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to