ClassCast Исключение при попытке инсталировать для того же приложенияМодуль класса - PullRequest
1 голос
/ 21 апреля 2019

Я пытаюсь создать экземпляр AppModule программно

но я получаю classCastException

что DefaultContext подходит для этого использования. Утечки памяти и / или непредвиденное поведение могут возникнуть, если автоматическая инициализация выполняется неправильно. Это сообщение можно избежать, выполнив initADFContext перед использованием getCurrent ().>

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) at sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:498) в org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory $ 1.invoke (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.jersey.server.model.internal.JavaResourceMethodDispatcherProvider $ ResponseOutInvoker.doDispatch (JavaResourceMethodDispatcherProvider.java:160) в org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch (AbstractJavaResourceMethodDispatcher.java:99) на org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke (ResourceMethodInvoker.java:389) на org.glassfish.jersey.server.model.ResourceMethodInvoker.apply (ResourceMethodInvoker.java:347) на org.glassfish.jersey.server.model.ResourceMethodInvoker.apply (ResourceMethodInvoker.java:102) на org.glassfish.jersey.server.ServerRuntime $ 2.run (ServerRuntime.java:326) на org.glassfish.jersey.internal.Errors $ 1.call (Errors.java:271) на org.glassfish.jersey.internal.Errors $ 1.call (Errors.java:267) на org.glassfish.jersey.internal.Errors.process (Errors.java:315) на org.glassfish.jersey.internal.Errors.process (Errors.java:297) на org.glassfish.jersey.internal.Errors.process (Errors.java:267) на org.glassfish.jersey.process.internal.RequestScope.runInScope (RequestScope.java:317) на org.glassfish.jersey.server.ServerRuntime.process (ServerRuntime.java:305) на org.glassfish.jersey.server.ApplicationHandler.handle (ApplicationHandler.java:1154) на org.glassfish.jersey.servlet.WebComponent.serviceImpl (WebComponent.java:473) на org.glassfish.jersey.servlet.WebComponent.service (WebComponent.java:427) на org.glassfish.jersey.servlet.ServletContainer.service (ServletContainer.java:388) на org.glassfish.jersey.servlet.ServletContainer.service (ServletContainer.java:341) на org.glassfish.jersey.servlet.ServletContainer.service (ServletContainer.java:228) at weblogic.servlet.internal.StubSecurityHelper $ ServletServiceAction.run (StubSecurityHelper.java:286) at weblogic.servlet.internal.StubSecurityHelper $ ServletServiceAction.run (StubSecurityHelper.java:260) на weblogic.servlet.internal.StubSecurityHelper.invokeServlet (StubSecurityHelper.java:137) на weblogic.servlet.internal.ServletStubImpl.execute (ServletStubImpl.java:350) на 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.run (JpsAbsFilter.java:174) at java.security.AccessController.doPrivileged (собственный метод) в oracle.security.jps.util.JpsSubject.doAsPrivileged (JpsSubject.java:315) в oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode (JpsPlatformUtil.java:650) в oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode (JpsAbsFilter.java:112) в oracle.security.jps.ee.http.JpsAbsFilter.doFilterInternal (JpsAbsFilter.java:292) в oracle.security.jps.ee.http.JpsAbsFilter.doFilter (JpsAbsFilter.java:149) в oracle.security.jps.ee.http.JpsFilter.doFilter (JpsFilter.java:94) на weblogic.servlet.internal.FilterChainImpl.doFilter (FilterChainImpl.java:78) в oracle.security.wls.filter.SSOSessionSynchronizationFilter.doFilter (SSOSessionSynchronizationFilter.java:294) на 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 (WebAppServletContext.java:3706) at weblogic.servlet.internal.WebAppServletContext $ ServletInvocationAction.run (WebAppServletContext.java:3672) в weblogic.security.acl.internal.AuthenticatedSubject.doAs (AuthenticatedSubject.java:328) в weblogic.security.service.SecurityManager.runAsForUserCode (SecurityManager.java:197) at weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode (WlsSecurityProvider.java:203) на weblogic.servlet.provider.WlsSubjectHandle.run (WlsSubjectHandle.java:71) на weblogic.servlet.internal.WebAppServletContext.doSecuredExecute (WebAppServletContext.java:2443) на weblogic.servlet.internal.WebAppServletContext.securedExecute (WebAppServletContext.java:2291) на weblogic.servlet.internal.WebAppServletContext.execute (WebAppServletContext.java:2269) на weblogic.servlet.internal.ServletRequestImpl.runInternal (ServletRequestImpl.java:1705) на weblogic.servlet.internal.ServletRequestImpl.run (ServletRequestImpl.java:1665) at weblogic.servlet.provider.ContainerSupportProviderImpl $ WlsRequestExecutor.run (ContainerSupportProviderImpl.java:272) at weblogic.invocation.ComponentInvocationContextManager._runAs (ComponentInvocationContextManager.java:352) at weblogic.invocation.ComponentInvocationContextManager.runAs (ComponentInvocationContextManager.java:337) на weblogic.work.LivePartitionUtility.doRunWorkUnderContext (LivePartitionUtility.java:57) на weblogic.work.PartitionUtility.runWorkUnderContext (PartitionUtility.java:41) на weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext (SelfTuningWorkManagerImpl.java:652) на weblogic.work.ExecuteThread.execute (ExecuteThread.java:420) at 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: Когда Google это исключение, он сказал, потому что один и тот же класс был загружен много раз различными загрузчиками классов во время выполнения

и моя структура приложения выглядит следующим образом: 1 модельный проект а также Проект 1, в котором выходные данные model.jpr являются зависимостями //у проекта 2 также есть выход model.jpr в виде зависимости

, а Ear для приложения содержит файл войны для проекта 1 и проект войны 2, внутри каждой войны есть файл .jar для модели

Я не уверен, является ли это причиной (имея много раз jar модели), но есть ли способ сделать общий jar для обоих проектов ??

1 Ответ

0 голосов
/ 22 апреля 2019

Во-первых, нам не нужна вся трассировка стека, первых 10 строк или около того достаточно. Вторые всегда указывают версию продукта. В-третьих, это в пользовательском коде ADF BC или в компоненте ADF Faces Backing Bean? Я предполагаю поддержку бина / код для пользовательского интерфейса? Тогда следующий вопрос: ПОЧЕМУ вы создаете экземпляр AM в клиенте ??? Это очень плохая практика, и вам специально сказано НЕ делать этого, поскольку все взаимодействие с BC ADF должно осуществляться через контейнер привязки и открытые методы для AM или VO.

...