Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Websphere 8+;WorkManager ClassCastException_Java_Websphere_Osgi_Jndi - Fatal编程技术网

Java Websphere 8+;WorkManager ClassCastException

Java Websphere 8+;WorkManager ClassCastException,java,websphere,osgi,jndi,Java,Websphere,Osgi,Jndi,通过JNDI从WAS获取commonj Workmanager不是什么大事,但我的代码在OSGi环境中失败(我使用的是bundleActivator,而不是aries blueprint) 这个代码块在战争中运行良好。但是如果我将它添加到我的本地OSGi包中,它将失败,并出现ClassCastException 检查对象时,它告诉我workManager是com.ibm.ws.asynchbeans.WorkManagerImpl的一个实例 在IBMs WorkManager和CommonJ W

通过JNDI从WAS获取commonj Workmanager不是什么大事,但我的代码在OSGi环境中失败(我使用的是bundleActivator,而不是aries blueprint)

这个代码块在战争中运行良好。但是如果我将它添加到我的本地OSGi包中,它将失败,并出现ClassCastException

检查对象时,它告诉我workManager是com.ibm.ws.asynchbeans.WorkManagerImpl的一个实例

在IBMs WorkManager和CommonJ WorkManager之间创建自定义委托器应该不是什么大事,但由于我的研究,我找不到IBMs WorkManager的类层次结构,也找不到包含该类的JAR

我们使用WebSphere8.0.0.6

WorkManager.class.getClassLoader()=org.eclipse.osgi.internal.baseAdapter。DefaultClassLoader@d34707f4

wm.getClass().getClassLoader().loadClass(WorkManager.class.getName()).getClassLoader()=org.eclipse.osgi.internal.baseAdapter。DefaultClassLoader@5d968aee


WorkManager.class.getProtectionDomain().getCodeSource().getLocation()=文件:/D:/dev/IBM/WebSphere/AppServer/profiles/AppSrv01/installedEBAs/jndi-WorkManager_0.0.1.SNAPSHOT/byValue/c13b7c6c-1881-477c-a339-e0c4f992e35b.0/0/

基于类源位置,您似乎已将commonj.work类打包到包中。您应该删除它们,以允许从WebSphere Application Server运行时加载它们。

什么是“本机OSGi环境”?您正在尝试从WAB访问该类吗?您是否将commonj.work类包含在包中?WorkManager.class.getClassLoader()和WorkManager.class.getProtectionDomain().getCodeSource().getLocation()以及ic.lookup(…).getClass().loadClass(WorkManager.class.getName()).getClassLoader()有哪些值?我在问题中添加了classloader信息。对于“native”,我的意思是我们不使用Aries Blueprint,jndi查找在bundleactivator中调用。
import commonj.work.WorkManager; 
InitialContext ic = new InitialContext();
WorkManager wm = (WorkManager)ic.lookup("java:comp/env/wm/myWorkManager");