Попытка заставить WorkManagers работать с CommonJ в приложении Spring Boot, размещенном в TomEE.
На данный момент имеет следующую конфигурацию:
Контекст Tomcat.xml
<Context>
<Resource name="myWorkManager"
auth="Container"
type="commonj.work.WorkManager"
factory="de.myfoo.commonj.work.FooWorkManagerFactory"
maxThreads="5" />
<ResourceLink
name="myWorkManager"
global="myWorkManager"
type="commonj.work.WorkManager" />
</Context>
Весеннее приложение web.xml
<resource-ref>
<res-ref-name>myWorkManager</res-ref-name>
<res-type>commonj.work.WorkManager</res-type>
<res-auth>Container</res-auth>
</resource-ref>
В настоящее время при загрузке приложения возникает следующее исключение:
Caused by: org.springframework.jndi.TypeMismatchNamingException: Object of type [class de.myfoo.commonj.work.FooWorkManager] available at JNDI location [java:comp/env/myWorkManager] is not assignable to [commonj.work.WorkManager]
at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:182)
at org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:95)
at org.springframework.scheduling.commonj.WorkManagerTaskExecutor.afterPropertiesSet(WorkManagerTaskExecutor.java:110)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
... 53 more
У меня есть jar-файлы CommonJ, загруженные с http://commonj.myfoo.de/install.shtml в мой каталог lib Tomcat.
Я чувствую, что подхожу довольно близко, но немного озадачен этим исключением.
Любая помощь приветствуется.
ОБНОВЛЕНИЕ
Если я удалю две банки CommonJ из папки TomEE lib, я получу это исключение
Вызвано: java.lang.ClassNotFoundException: commonj.work.WorkManager
Чего я и ожидал.
Если я удалю свойство factory из элемента ресурса, я получу:
Вызвано: org.springframework.jndi.TypeMismatchNamingException: объект типа [класс org.apache.openejb.core.ivm.naming.IvmContext], доступный в расположении JNDI [java:comp/env/wm/default], не может быть назначен [ commonj.work.WorkManager]