试图让WorkManagers在TomEE托管的Spring应用程序中使用CommonJ。
目前有以下配置:
Tomcat context.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>Spring应用程序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我在Tomcat目录中从http://commonj.myfoo.de/install.shtml下载了http://commonj.myfoo.de/install.shtml jars。
我觉得我已经很接近了,但对这个例外有点困惑。
任何帮助都将不胜感激。
更新
如果我从CommonJ lib文件夹中删除两个TomEE jars,则会得到此异常。
原因: java.lang.ClassNotFoundException: commonj.work.WorkManager
这正是我所期望的。
如果从资源元素中移除工厂属性,将得到:
由:在JNDI位置可用的类型为org.springframework.jndi.TypeMismatchNamingException:的org.apache.openejb.core.ivm.naming.IvmContext对象引起的java:comp/env/wm/org.apache.openejb.core.ivm.naming.IvmContext不能分配给commonj.work.WorkManager
发布于 2019-01-06 11:25:00
当我尝试用maven-jetty插件在本地启动我的应用程序时,我也会遇到同样的问题。M. Deinum的评论非常有用。如果在application的共享库中和web应用程序的web/ lib文件夹中都有lib jar,则会发生此错误,因为服务器使用一个jar来创建资源(父类加载程序),但是应用程序使用self jar(子类加载器)及其两个不同的类层次结构,因此不能将FooWorkManager转换为WorkManager。
https://stackoverflow.com/questions/35629600
复制相似问题