[英]Spring Boot JNDI CommonJ resource
試圖讓托管在TomEE中的Spring Boot應用程序中的WorkManager與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>
春季應用程序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的lib目錄中有從http://commonj.myfoo.de/install.shtml下載的CommonJ jar。
我覺得我已經很接近了,但是對此異常感到有些困惑。
任何幫助將非常感激。
UPDATE
如果我從TomEE lib文件夾中刪除兩個CommonJ jar,則會出現此異常
引起原因:java.lang.ClassNotFoundException:commonj.work.WorkManager
這是我所期望的。
如果從資源元素中刪除factory屬性,則會得到:
由以下原因引起:org.springframework.jndi.TypeMismatchNamingException:在JNDI位置[java:comp / env / wm / default]可用的[class org.apache.openejb.core.ivm.naming.IvmContext]類型的對象不可分配給[ commonj.work.WorkManager]
我嘗試在maven-jetty-plugin中本地啟動我的應用程序時遇到相同的問題。 M. Deinum的評論非常有幫助。 如果您在Application Server的共享庫和Web應用程序的WEB-INF / lib文件夾中都有lib jar,則會發生此錯誤,因為服務器使用一個jar創建資源(父類加載器),而應用程序使用self jar(子類加載器)並且它具有兩個不同的類層次結構,因此FooWorkManager不能強制轉換為WorkManager。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.