เข้าถึง EJB ระยะไกลในโปรไฟล์ Websphere หนึ่งโปรไฟล์จากโปรไฟล์ WebSphere อื่น

กล่าวโดยย่อ: ฉันทำการเรียก JNDI ระยะไกลสำหรับ stateless bean จากเซิร์ฟเวอร์ Websphere หนึ่งไปยังอีกเซิร์ฟเวอร์หนึ่ง (โปรไฟล์ที่แตกต่างกันใน JVM ที่แตกต่างกันบนเครื่องเดียวกัน) แต่หลังจากการโทรเสร็จสิ้น InitialContext จะเปลี่ยนไปและฉันไม่สามารถเข้าถึง local beans ของฉันได้อีกต่อไป .

สถานการณ์เป็นดังนี้:
เซิร์ฟเวอร์ Websphere Server1 มีแอปพลิเคชันที่ซับซ้อนซึ่งมี bean จำนวนมาก และยังจำเป็นต้องเข้าถึง stateless bean (BeanX) บน Websphere Server2 ที่เรียกใช้แอปพลิเคชันอื่น
ฉันจัดการเพื่อเข้าถึง BeanX บน Server2 แล้ว โดยใช้วิธีใดวิธีหนึ่งจากสองวิธี:

  1. การเชื่อมต่อผ่านรหัส:

    private static Context;
    static {
      Hashtable env = new Hashtable();
      env.put(Context.INITIAL_CONTEXT_FACTORY, com.ibm.websphere.naming.WsnInitialContextFactory");
      env.put(Context.PROVIDER_URL, "iiop://localhost:9101");
      try {
        ctx = NamingManager.getInitialContext(env);
        mgr = (RemoteBeanXManager) PortableRemoteObject.narrow(ctx.lookup("BeanXManagerBean/remote"), RemoteBeanXManager.class);
      } catch (NamingException e) {//logging
      }
    }
    
  2. การเชื่อมต่อผ่านการกำหนดค่า Webshere กำหนดค่าในเซิร์ฟเวอร์ 1: สภาพแวดล้อม -> การตั้งชื่อ -> การเชื่อมโยงพื้นที่ชื่อ -> ใหม่ ... ทางอ้อม และแนะนำค่าที่ต้องการซึ่งสอดคล้องกับ bean ที่เปิดเผยจากเซิร์ฟเวอร์2
    URL ของผู้ให้บริการ: corbaloc:iiop:localhost:9101
    บริบทเริ่มต้น ชื่อโรงงาน: com.ibm.websphere.naming.WsnInitialContextFactory
    จากนั้นจึงดำเนินการรับ bean ในโค้ดราวกับว่าอยู่ในบริบทท้องถิ่นของฉัน

ฉันลบการรักษาความปลอดภัยสำหรับ RMI/IIOP สำหรับขาออกใน Server1 และสำหรับขาเข้าใน Server2 เพื่อให้เซิร์ฟเวอร์สามารถสื่อสารได้
bean ถูกเปิดเผยโดย Server2 ซึ่งมีอินเทอร์เฟซระยะไกล RemoteBeanXManager อยู่ในแพ็คเกจทั่วไปสำหรับทั้งสองแอปพลิเคชันและการโทรไป ผ่านอย่างถูกต้อง

ปัญหาปรากฏขึ้นหลังจากการเรียก เมื่อการฉีด EJB ตามมาใน เซิร์ฟเวอร์1 สำหรับถั่ว ท้องถิ่น ส่งคืน com.ibm.ejs.container.util.ExceptionUtil.NoSuchEJBException

โดยพื้นฐานแล้ว เมื่อพบคำอธิบายประกอบ @EJB ถัดไป Server1 จะส่ง:

com.ibm.ejs.container.EJBNotFoundException: EJB ชื่อ SomeOtherBean ไม่ปรากฏในแอปพลิเคชัน My Enterprise Application ที่ com.ibm.ejs.container.HomeOfHomes.resolveEJBLink(HomeOfHomes.java:751)

สิ่งที่ฉันจัดการเพื่อทำความเข้าใจในขณะที่ฉันตรวจสอบคือ InitialContext บน Server1 มีการเปลี่ยนแปลงโดยการเชื่อมต่อกับ Server2 และไม่สามารถ 'รีเซ็ต' กลับได้หลังจากการโทรผ่านอินเทอร์เฟซระยะไกล ฉันพยายามรับ InitialContext อีกครั้งด้วยการตั้งค่าเริ่มต้นหลังจากได้รับตัวจัดการระยะไกล แต่ก็ไม่เกิดประโยชน์
ฉันพยายามเพิ่มพารามิเตอร์การกำหนดค่าเพิ่มเติม:
com.ibm.websphere.naming.jndicache.cachename providerURL
com.ibm.websphere.naming.jndicache.cacheobject none

ยังคงเป็นข้อยกเว้นเหมือนเดิม

หากคุณมีแนวคิดใดๆ เกี่ยวกับวิธีการแยก/แคชบริบทบน Server1 เพื่อให้สามารถกลับมาดำเนินการตามปกติได้หลังจากการเรียก RMI-IIOP โปรดแจ้งให้เราทราบ

อัปเดตเพื่อเพิ่ม:
เมื่อฉันคอมเม้นต์โค้ดที่ทำการโทรระยะไกล แอปพลิเคชันจะเริ่มทำงานอย่างถูกต้อง และการฉีด @EJB ทั้งหมดทำงานได้

ใน Server2 เมื่อเรียกใช้เมธอดจาก Server1 - ไม่มีข้อยกเว้น มีเพียงข้อความเหล่านี้:

    [11/27/18 9:28:13:525 EET] 00000139 BeanXManagerB I com.my.app.manager.impl.BeanXManagerBean performTaskForServer1 End     
    [11/27/18 9:28:13:883 EET] 00000139 RegisteredRes E   WTRN0064E: An illegal attempt to commit a one phase capable resource in a subordinate transaction branch has occurred.    
    [11/27/18 9:28:13:920 EET] 00000139 FfdcProvider  W com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: FFDC Incident emitted on D:\programs\IBM\WebSphere\AppServer\profiles\profile2\logs\ffdc\Server2_db3b4f88_18.11.27_09.28.13.8878526370681854823401.txt com.ibm.tx.jta.TransactionImpl.prepareResources 467    
    [11/27/18 9:28:13:932 EET] 00000139 FfdcProvider  W com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: FFDC Incident emitted on D:\programs\IBM\WebSphere\AppServer\profiles\profile2\logs\ffdc\Server2_db3b4f88_18.11.27_09.28.13.9214065828085434219239.txt com.ibm.tx.jta.impl.TransactionImpl.prepareResources 1505    

สแต็กเทรซที่สมบูรณ์ของข้อผิดพลาดของ Server1 คือ:
[ฉันคิดว่ามันจะยาวเกินไปที่จะโพสต์รายงานเหตุการณ์ทั้งหมด ]

    [11/27/18 9:28:13:946 EET] 0000011a DMAdapter     I com.ibm.ws.ffdc.impl.DMAdapter getAnalysisEngine FFDC1009I: Analysis Engine using data base: D:\programs\IBM\WebSphere\AppServer\properties\logbr\ffdc\adv\ffdcdb.xml    
    [11/27/18 9:28:13:967 EET] 0000011a FfdcProvider  W com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: FFDC Incident emitted on D:\programs\IBM\WebSphere\AppServer\profiles\profile1\logs\ffdc\Server1_ede9c292_18.11.27_09.28.13.9411059231941807719848.txt com.ibm.tx.jta.impl.RegisteredResources.prepareResource 1216    
    [11/27/18 9:28:13:991 EET] 0000011a FfdcProvider  W com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: FFDC Incident emitted on D:\programs\IBM\WebSphere\AppServer\profiles\profile1\logs\ffdc\Server1_ede9c292_18.11.27_09.28.13.9683456920548561326798.txt com.ibm.tx.jta.TransactionImpl.prepareResources 467    
    [11/27/18 9:28:14:014 EET] 0000011a FfdcProvider  W com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: FFDC Incident emitted on D:\programs\IBM\WebSphere\AppServer\profiles\profile1\logs\ffdc\Server1_ede9c292_18.11.27_09.28.13.9913497264494769300154.txt com.ibm.tx.jta.impl.TransactionImpl.prepareResources 1505    
    [11/27/18 9:28:14:032 EET] 0000011a FfdcProvider  W com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: FFDC Incident emitted on D:\programs\IBM\WebSphere\AppServer\profiles\profile1\logs\ffdc\Server1_ede9c292_18.11.27_09.28.14.0285054752089388843670.txt com.ibm.ejs.csi.TranStrategy.commit 294    
    [11/27/18 9:28:14:039 EET] 0000011a FfdcProvider  W com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: FFDC Incident emitted on D:\programs\IBM\WebSphere\AppServer\profiles\profile1\logs\ffdc\Server1_ede9c292_18.11.27_09.28.14.036797394156202410033.txt com.ibm.ejs.container.EJSHome.createBeanO 1047    
    [11/27/18 9:28:14:044 EET] 0000011a FfdcProvider  W com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: FFDC Incident emitted on D:\programs\IBM\WebSphere\AppServer\profiles\profile1\logs\ffdc\Server1_ede9c292_18.11.27_09.28.14.0403016172875256112876.txt com.ibm.ejs.csi.EJBApplicationMetaData.createStartupBeans 6921    

    [11/27/18 9:28:14:044 EET] 0000011a EJBApplicatio E   CNTR0190E: The StarterBean startup singleton session bean in the app1.jar module failed initialization with exception:    
    javax.ejb.NoSuchEJBException: An error occurred during initialization of singleton session bean MY Enterprise Application#app1.jar#StarterBean, resulting in the discarding of the singleton instance.; nested exception is: javax.ejb.EJBTransactionRolledbackException: nested exception is: javax.transaction.RollbackException    
        at com.ibm.ejs.container.util.ExceptionUtil.NoSuchEJBException(ExceptionUtil.java:540)    
        at com.ibm.ejs.container.EJSHome.createSingletonBeanO(EJSHome.java:3752)    
        at com.ibm.ejs.csi.EJBApplicationMetaData.createStartupBeans(EJBApplicationMetaData.java:959)    
        at com.ibm.ejs.csi.EJBApplicationMetaData.startedModule(EJBApplicationMetaData.java:680)    
        at com.ibm.ws.runtime.component.EJBContainerImpl.stateChanged(EJBContainerImpl.java:4525)    
        at com.ibm.ws.runtime.component.ApplicationMgrImpl$ComparableDeployedObjectListener.stateChanged(ApplicationMgrImpl.java:2652)    
        at com.ibm.ws.runtime.component.ApplicationMgrImpl.stateChanged(ApplicationMgrImpl.java:1178)    
        at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectEvent(DeployedApplicationImpl.java:1558)    
        at com.ibm.ws.runtime.component.DeployedModuleImpl.setState(DeployedModuleImpl.java:252)    
        at com.ibm.ws.runtime.component.DeployedModuleImpl.setState(DeployedModuleImpl.java:248)    
        at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:707)    
        at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:1150)    
        at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:800)    
        at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplicationDynamically(ApplicationMgrImpl.java:1450)        
        at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:2311)    
        at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:436)    
        at com.ibm.ws.runtime.component.CompositionUnitImpl.start(CompositionUnitImpl.java:123)    
        at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:379)    
        at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.access$500(CompositionUnitMgrImpl.java:127)    
        at com.ibm.ws.runtime.component.CompositionUnitMgrImpl$1.run(CompositionUnitMgrImpl.java:654)    
        at com.ibm.ws.security.auth.ContextManagerImpl.runAs(ContextManagerImpl.java:5574)    
        at com.ibm.ws.security.auth.ContextManagerImpl.runAsSystem(ContextManagerImpl.java:5700)    
        at com.ibm.ws.security.core.SecurityContext.runAsSystem(SecurityContext.java:255)    
        at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.startCompositionUnit(CompositionUnitMgrImpl.java:668)    
        at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.startCompositionUnit(CompositionUnitMgrImpl.java:612)    
        at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:1340)    
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90)    
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)    
        at java.lang.reflect.Method.invoke(Method.java:508)    
        at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:83)    
        at sun.reflect.GeneratedMethodAccessor63.invoke(Unknown Source)    
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)    
        at java.lang.reflect.Method.invoke(Method.java:508)    
        at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:287)    
        at javax.management.modelmbean.RequiredModelMBean$4.run(RequiredModelMBean.java:1263)    
        at java.security.AccessController.doPrivileged(AccessController.java:666)    
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)    
        at javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1257)    
        at javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:1096)    
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:831)    
        at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:813)    
        at com.ibm.ws.management.AdminServiceImpl$1.run(AdminServiceImpl.java:1350)    
        at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118)    
        at com.ibm.ws.management.AdminServiceImpl.invoke(AdminServiceImpl.java:1243)    
        at com.ibm.ws.management.application.sync.StartDeploymentTask.startDeployment(StartDeploymentTask.java:249)    
        at com.ibm.ws.management.application.sync.StartDeploymentTask.fullAppUpdate(StartDeploymentTask.java:121)    
        at com.ibm.ws.management.application.sync.StartDeploymentTask.performTask(StartDeploymentTask.java:109)    
        at com.ibm.ws.management.application.sync.AppBinaryProcessor$ExpandApp.expand(AppBinaryProcessor.java:1770)    
        at com.ibm.ws.management.application.sync.AppBinaryProcessor.postProcessSynchronousExt(AppBinaryProcessor.java:811)    
        at com.ibm.ws.management.bla.sync.BLABinaryProcessor.postProcess(BLABinaryProcessor.java:599)    
        at com.ibm.ws.management.bla.sync.BLABinaryProcessor.onChangeCompletion(BLABinaryProcessor.java:476)    
        at com.ibm.ws.management.bla.sync.BinaryProcessorWrapper.onChangeCompletion(BinaryProcessorWrapper.java:109)    
        at com.ibm.ws.management.repository.FileRepository.postNotify(FileRepository.java:1938)    
        at com.ibm.ws.management.repository.FileRepository.update(FileRepository.java:1442)    
        at com.ibm.ws.management.repository.client.LocalConfigRepositoryClient.update(LocalConfigRepositoryClient.java:189)    
        at com.ibm.ws.sm.workspace.impl.WorkSpaceMasterRepositoryAdapter.update(WorkSpaceMasterRepositoryAdapter.java:667)    
        at com.ibm.ws.sm.workspace.impl.RepositoryContextImpl.update(RepositoryContextImpl.java:1998)    
        at com.ibm.ws.sm.workspace.impl.RepositoryContextImpl.synch(RepositoryContextImpl.java:1946)    
        at com.ibm.ws.sm.workspace.impl.WorkSpaceImpl.synch(WorkSpaceImpl.java:549)    
        at com.ibm.ws.console.core.action.SyncWorkSpaceAction$1.run(SyncWorkSpaceAction.java:284)    
        at com.ibm.ws.security.auth.ContextManagerImpl.runAs(ContextManagerImpl.java:5574)    
        at com.ibm.ws.security.auth.ContextManagerImpl.runAsSystem(ContextManagerImpl.java:5700)    
        at com.ibm.ws.security.core.SecurityContext.runAsSystem(SecurityContext.java:255)    
        at com.ibm.ws.console.core.action.SyncWorkSpaceAction.execute(SyncWorkSpaceAction.java:288)    
        at org.apache.struts.action.RequestProcessor.processActionPerform(Unknown Source)    
        at org.apache.struts.action.RequestProcessor.process(Unknown Source)    
        at org.apache.struts.action.ActionServlet.process(Unknown Source)    
        at org.apache.struts.action.ActionServlet.doGet(Unknown Source)    
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)    
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)    
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1235)    
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:779)    
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)    
        at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)    
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:143)    
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:96)    
        at com.ibm.ws.console.core.servlet.WSCUrlFilter.setUpCommandAssistance(WSCUrlFilter.java:971)    
        at com.ibm.ws.console.core.servlet.WSCUrlFilter.continueStoringTaskState(WSCUrlFilter.java:518)    
        at com.ibm.ws.console.core.servlet.WSCUrlFilter.doFilter(WSCUrlFilter.java:339)    
        at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:197)    
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:90)    
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:969)    
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1109)    
        at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:4217)    
        at com.ibm.ws.webcontainer.webapp.WebAppImpl.handleRequest(WebAppImpl.java:2208)    
        at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304)    
        at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1030)    
        at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817)    
        at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:382)    
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:465)    
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:532)    
        at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:318)    
        at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:88)    
        at com.ibm.ws.ssl.channel.impl.SSLReadServiceContext$SSLReadCompletedCallback.complete(SSLReadServiceContext.java:1833)    
        at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)    
        at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)    
        at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)    
        at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)    
        at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)    
        at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)    
        at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)    
        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1909)    
    Caused by: javax.ejb.EJBTransactionRolledbackException: nested exception is: javax.transaction.RollbackException    
        at com.ibm.ejs.container.BusinessExceptionMappingStrategy.mapCSIException(BusinessExceptionMappingStrategy.java:152)    
        at com.ibm.ejs.container.BusinessExceptionMappingStrategy.mapCSITransactionRolledBackException(BusinessExceptionMappingStrategy.java:613)    
        at com.ibm.ejs.container.EJSDeployedSupport.mapCSITransactionRolledBackException(EJSDeployedSupport.java:609)    
        at com.ibm.ejs.container.EJSContainer.postInvokeRolledbackException(EJSContainer.java:4392)    
        at com.ibm.ejs.container.EJSContainer.postInvokeForLifecycleInterceptors(EJSContainer.java:4584)    
        at com.ibm.ejs.container.SingletonBeanO.callTransactionalLifecycleInterceptors(SingletonBeanO.java:248)    
        at com.ibm.ejs.container.SingletonBeanO.initialize(SingletonBeanO.java:330)    
        at com.ibm.ejs.container.BeanOFactory.create(BeanOFactory.java:105)    
        at com.ibm.ejs.container.EJSHome.createSingletonBeanO(EJSHome.java:3738)    
        ... 101 more    
    Caused by: javax.transaction.RollbackException    
        at com.ibm.tx.jta.impl.TransactionImpl.stage3CommitProcessing(TransactionImpl.java:1279)    
        at com.ibm.tx.jta.impl.TransactionImpl.processCommit(TransactionImpl.java:1053)    
        at com.ibm.tx.jta.impl.TransactionImpl.commit(TransactionImpl.java:974)    
        at com.ibm.ws.tx.jta.TranManagerImpl.commit(TranManagerImpl.java:439)    
        at com.ibm.tx.jta.impl.TranManagerSet.commit(TranManagerSet.java:191)    
        at com.ibm.ejs.csi.TranStrategy.commit(TranStrategy.java:866)    
        at com.ibm.ejs.csi.TranStrategy.postInvoke(TranStrategy.java:188)    
        at com.ibm.ejs.csi.RequiresNew.postInvoke(RequiresNew.java:118)    
        at com.ibm.ejs.csi.TransactionControlImpl.postInvoke(TransactionControlImpl.java:482)    
        at com.ibm.ejs.container.EJSContainer.postInvokeForLifecycleInterceptors(EJSContainer.java:4576)    
        ... 105 more    
    [11/27/18 9:28:14:051 EET] 0000011a FfdcProvider  W com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: FFDC Incident emitted on D:\programs\IBM\WebSphere\AppServer\profiles\profile1\logs\ffdc\Server1_ede9c292_18.11.27_09.28.14.0481845564063299454983.txt com.ibm.ws.runtime.component.EJBContainerImpl.stateChanged 6637    

person Diana S    schedule 26.11.2018    source แหล่งที่มา


คำตอบ (1)


โดยปกติแล้ว HomeOfHomes.resolveEJBLink จะใช้สำหรับคำอธิบายประกอบ @EJB ที่ได้รับการแก้ไขในเครื่อง ไม่ได้ใช้ InitialContext และไม่ได้ดำเนินการค้นหา JNDI โค้ดที่ประมวลผล @EJB จะข้าม JNDI ทั้งหมดและค้นหา EJB โดยตรงใน EJB Container ข้อเท็จจริงที่ความล้มเหลวเกิดขึ้นหลังจากการค้นหาระยะไกลอาจเป็นเพียงเรื่องบังเอิญ

ฉันขอแนะนำให้ดูที่พารามิเตอร์ beanName ของ @EJB และตรวจสอบว่าจริง ๆ แล้ว beanName ตรงกับชื่อ bean ในแอปพลิเคชันเดียวกัน หากพารามิเตอร์ beanName อยู่ในรูปแบบ myModule.jar#SomeOtherBean หรือ myModule/SomeOtherBean ตรวจสอบให้แน่ใจว่าชื่อโมดูลถูกต้องเช่นกัน ชื่อ myModule และ SomeOtherBean ต้องตรงกับชื่อบนหนึ่งในข้อความ CNTR0167I ใน SystemOut.log ในแอปพลิเคชันเดียวกัน

สำหรับ WebSphere การแก้ไข EJB ตามพารามิเตอร์ beanName จะทำงานภายในแอปพลิเคชันเดียวกันเท่านั้น หาก @EJB อ้างอิง EJB ในแอปพลิเคชันอื่น แม้ว่าแอปพลิเคชันนั้นอยู่บนกระบวนการเซิร์ฟเวอร์เดียวกัน คุณต้องจัดให้มีการเชื่อมโยงที่ระบุชื่อ JNDI ของ EJB ที่อ้างอิง การเชื่อมโยงจะถูกระบุในไฟล์ใดไฟล์หนึ่ง ibm-ejb-jar-bnd.xml/xmi หรือ ibm-web-bnd.xml/xmi อาจมีการเชื่อมโยงระหว่างการปรับใช้แอปพลิเคชัน (และการปรับใช้จะเพิ่มลงในไฟล์ *bnd.xml ที่เหมาะสม)

หากพารามิเตอร์ beanName ดูเหมือนจะถูกต้อง และเกิดการค้นหา JNDI สำหรับคำอธิบายประกอบ @EJB คุณจะต้องจัดเตรียมสแต็กข้อยกเว้นแบบเต็มสำหรับทั้งฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์ของการค้นหา เพื่อให้เข้าใจวิธีการประมวลผล @EJB ได้ดียิ่งขึ้น ถูกเปลี่ยนเส้นทางไปยังเซิร์ฟเวอร์ที่ไม่ถูกต้อง หากสิ่งนี้เกิดขึ้น EJBNotFoundException ควรปรากฏในบันทึกของ Server2 จากนั้นไหลกลับไปยัง Server1 ซึ่งจะมีการรายงานอีกครั้ง ดังนั้นจึงจำเป็นต้องใช้สแต็กข้อยกเว้นจากทั้งเซิร์ฟเวอร์ 1 และเซิร์ฟเวอร์ 2 เพื่อระบุว่าการค้นหาถูกกำหนดเส้นทางอย่างไม่ถูกต้องอย่างไร

person Tracy    schedule 26.11.2018
comment
แอปพลิเคชันใช้งานได้โดยไม่มีข้อผูกมัดเมื่อฉันใส่ความคิดเห็นโค้ดที่ทำการโทรระยะไกล นั่นคือเหตุผลที่ฉันคิดว่า @EJB มี beanName ที่ถูกต้อง - person Diana S; 27.11.2018
comment
ฉันจะเพิ่มรายละเอียดเพิ่มเติมในโพสต์ด้านบนเนื่องจากความคิดเห็นจะยาวเกินไป - person Diana S; 27.11.2018
comment
สแต็กข้อยกเว้นแสดงว่าบางส่วนของแอปพลิเคชันของคุณเริ่มทำงานไม่ถูกต้อง โดยเฉพาะ singleton bean @PostConstruct ถั่วนี้จะไม่มีอยู่จริง และไม่สามารถฉีดเข้าไปในถั่วอื่นได้ มีแนวโน้มว่าการค้นหาระยะไกลและการเรียกใช้เมธอดทำให้เกิดปัญหาในการเริ่มแอป ฉันจะมุ่งเน้นไปที่การแก้ไข WTRN0064E: An illegal attempt to commit a one phase capable resource in a subordinate transaction branch has occurred. จากนั้นแอปของคุณควรเริ่มต้นอย่างถูกต้อง และการแทรก @EJB ก็มีแนวโน้มที่จะทำงานได้ - person Tracy; 27.11.2018