繁体   English   中英

尝试对同一appModule类进行实例化时发生ClassCast异常

[英]ClassCast Exception when trying to Instatiate For same appModule Class

我正在尝试以编程方式实例化AppModule

但是我得到了classCastException

DefaultContext适合用于此用途。 如果自动初始化不正确,可能会发生内存泄漏和/或意外行为。 通过在使用getCurrent()之前执行initADFContext可以避免此消息。

java.lang.ClassCastException:不能将com.oracle.ocs.adaa.model.AppModuleImpl转换为com.oracle.ocs.adaa.model.AppModuleImpl到com.oracle.ocs.adaa.services.TreeTraverse.postTree(TreeTraverse.java :53),位于com.oracle.ocs.adaa.restwebservice.Client.postStrategyTree(Client.java:35),位于sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法),位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ),位于org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory $ 1.invoke的java.lang.reflect.Method.invoke(Method.java:498)的sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) (ResourceMethodInvocationHandlerFactory.java:81)在org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher $ 1.run(AbstractJavaResourceMethodDispatcher.java:144)在org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher。 java:161)在org.glassfish.j org.glassfish.jersey.org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)上的ersey.server.model.internal.JavaResourceMethodDispatcherProvider $ ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160)。 org.glassfish.jersey.server.model.ResourceMethodInvoker.apply()上的server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)在org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)在org.glassfish.jersey.server.ServerRuntime的ResourceMethodInvoker.java:102)在org.glassfish.jersey.internal.Errors $ 1.call(Errors.java:271)在org.glassfish.jersey.org.org(玻璃) .org.glassfish.jersey.internal.Errors.process(Errors.java:315)的.jersey.internal.Errors $ 1.call(Errors.java:267)在org.glassfish.jersey.internal.Errors.process(Errors。 java:297)位于org.glassfish.jersey.internal.Errors.process(Errors.java:267)位于org.glassfish.jersey.proces org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)上的s.internal.RequestScope.runInScope(RequestScope.java:317)org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java: 1154)位于org.glassfish.jersey.servlet.ServletContainer的org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)位于org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473) weblogic上org.glassfish.jersey.servlet.Servlet.ServletContainer.service(ServletContainer.java:341)的org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)的.service(ServletContainer.java:388)。位于weblogic.servlet.internal.StubSecurityHelper $ ServletServiceAction.run(StubSecurityHelper.java:260)处的servlet.internal.StubSecurityHelper $ ServletServiceAction.run(StubSecurityHelper.java:286)位于weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java: 137)在weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:3 50)在weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25)在weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)在com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java :198),位于com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:244),位于weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78),位于oracle.security.jps.ee.http.JpsAbsFilter $ 3 oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315)的java.security.AccessController.doPrivileged(本机方法)的.run(JpsAbsFilter.java:174)oracle.security.jps.ee.util的。 oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:112)上的。 :292)在oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:149)在oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:94)在weblogic.serv oracle.security.wls.filter.SSOSessionSynchronizationFilter.doFilter(SSOSessionSynchronizationFilter.java:294)上的let.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)在weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)在oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:248)在weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)在weblogic.servlet.internal.WebAppServletContext $ ServletInvocationAction.wrapRun(WebAppServlet) :3706),位于weblogic.servlet.internal.WebAppServletContext $ ServletInvocationAction.run(WebAppServletContext.java:3672),位于weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:328),位于weblogic.security.service.SecurityManager。 weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSecurityProvider.java:203)处的webLogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:71)处的runAsForUserCode(SecurityManager.java:197) 位于weblogic的let.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2443)位于weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2269)位于weblogic的.servlet.internal.ServletRequestImpl.runInternal(ServletRequestImpl.java:1705)位于weblogic.servlet.provider.ContainerSupportProviderImpl $ WlsRequestExecutor.run(ContainerSupportProviderImpl.java:272)上的weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1665) )于weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:352)于weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:337)于weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:57)于weblogic.work weblogic.work.SelfTuningWorkManagerImpl.runWorkUnd上的.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41) 位于weblogic.work.ExecuteThread.execute(ExecuteThread.java:420)的erContext(SelfTuningWorkManagerImpl.java:652)位于weblogic.work.ExecuteThread.run(ExecuteThread.java:360)

这是代码

private static AppModuleImpl am = null;
private static final String AM_CONFIG_NAME = "AppModuleLocal";
private static final String AM_DEF_NAME =     "com.oracle.ocs.adaa.model.AppModule";

public static void postTree(JSONObject json) throws Exception{

    am = (AppModuleImpl) Configuration.createRootApplicationModule(AM_DEF_NAME, AM_CONFIG_NAME);
    }

更新#1:当谷歌这个异常,它的说,因为同一类已在运行时由不同的类加载器加载了很多次

我的应用程序结构如下:1模型项目和将Model.jpr输出作为依赖项的项目1 //项目2也将model.jpr输出作为依赖项

该应用程序的Ear包含一个项目1的war文件和一个war项目2,每个战争中都有一个用于该模型的.jar文件

我不确定这是否是原因(通过多次使用模型jar),但是有没有办法为两个项目制作一个共享jar?

首先,我们不需要整个堆栈跟踪,前十行左右就足够了。 第二个始终指示产品的版本。 第三,这是在ADF BC自定义代码中还是在ADF Faces Backing Bean中? 我假设用户界面支持bean /代码吗? 然后下一个问题是为什么要在客户端中实例化AM? 这是非常不好的做法,您应明确告知不要执行此操作,因为与ADF BC的所有交互都应通过绑定容器以及AM或VO的公开方法进行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM