[
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)