-
Notifications
You must be signed in to change notification settings - Fork 38.7k
Description
John Zimmermann opened SPR-16670 and commented
I have a service which I am attempting to export via the JndiRmiServiceExporter.
<bean id="clientAdminServiceTargetSource" class="com.mypackages.ClientAdminServiceTargetSourceImpl">
<constructor-arg ref="defaultClientAdminService" />
</bean>
<bean id="clientAdminService" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces" value="com.mypackages.ClientAdminService" />
<property name="targetSource" ref="clientAdminServiceTargetSource" />
</bean>
<bean class="org.springframework.remoting.rmi.JndiRmiServiceExporter">
<property name="jndiTemplate" value="jndiTemplate" />
<property name="jndiName" value="ClientAdminService" />
<property name="service" ref="clientAdminService" />
<property name="serviceInterface" value="com.mypackages.ClientAdminService" />
</bean>
Since upgrading to Spring 5.x I've encountered the following error with the IBM j9 deployed on WebSphere 9.x. The same code is also deployed on Oracle Weblogic 12.2.1.3 with the Sun/Oracle JDK and works perfectly fine. Has anyone reported a similar issue or are there any suggestions how to go about handling this?
I have temporarily resolved this by using a customized version of Spring's JndiRmiServiceExporter to behave like the 4.x version did .. with the only notable difference is the absence of :
PortableRemoteObject.exportObject(this.exportedObject);
PortableRemoteObject.unexportObject(this.exportedObject);
With these re-added, everything behaves correctly. It seems based on github commits these lines were removed in association with JDK9 compatibility.
[3/4/18 19:26:50:041 EST] 00000065 webapp E com.ibm.ws.webcontainer.webapp.WebApp notifyServletContextCreated SRVE0283E: Exception caught while initializing context: {0}
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.remoting.rmi.JndiRmiServiceExporter#0' defined in class path resource [com/mypackages/clientContext.xml]: Invocation of init method failed; nested exception is javax.naming.NamingException: ClientAdminService [Root exception is java.rmi.NoSuchObjectException: object not exported]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1710)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:583)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:502)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:312)
at org.springframework.beans.factory.support.AbstractBeanFactory$$Lambda$24.0000000017529EF0.getObject(Unknown Source)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:310)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:760)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:868)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:144)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:109)
at com.mypackages.ApplicationContextHolder.<init>(ApplicationContextHolder.java:33)
at com.mypackages.ApplicationContext.getInstance(ApplicationContext.java:63)
at com.mypackages.ApplicationContextLoaderListener.contextInitialized(ApplicationContextLoaderListener.java:41)
at com.mypackages.LoggingServiceContextListener.contextInitialized(LoggingServiceContextListener.java:49)
at com.ibm.ws.webcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:1834)
at com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:442)
at com.ibm.ws.webcontainer.webapp.WebGroupImpl.addWebApplication(WebGroupImpl.java:88)
at com.ibm.ws.webcontainer.VirtualHostImpl.addWebApplication(VirtualHostImpl.java:171)
at com.ibm.ws.webcontainer.WSWebContainer.addWebApp(WSWebContainer.java:904)
at com.ibm.ws.webcontainer.WSWebContainer.addWebApplication(WSWebContainer.java:789)
at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:427)
at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:719)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1247)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1514)
at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:704)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:1096)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:799)
at com.ibm.ws.runtime.component.ApplicationMgrImpl$5.run(ApplicationMgrImpl.java:2315)
at com.ibm.ws.security.auth.ContextManagerImpl.runAs(ContextManagerImpl.java:5466)
at com.ibm.ws.security.auth.ContextManagerImpl.runAsSystem(ContextManagerImpl.java:5682)
at com.ibm.ws.security.core.SecurityContext.runAsSystem(SecurityContext.java:255)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:2320)
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$CUInitializer.run(CompositionUnitMgrImpl.java:985)
at com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:524)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1909)
Caused by: javax.naming.NamingException: ClientAdminService [Root exception is java.rmi.NoSuchObjectException: object not exported]
at com.ibm.ws.naming.jndicos.CNContextImpl.doRebind(CNContextImpl.java:2148)
at com.ibm.ws.naming.jndicos.CNContextImpl.rebind(CNContextImpl.java:698)
at com.ibm.ws.naming.util.WsnInitCtx.rebind(WsnInitCtx.java:233)
at com.ibm.ws.naming.util.WsnInitCtx.rebind(WsnInitCtx.java:245)
at org.apache.aries.jndi.DelegateContext.rebind(DelegateContext.java:177)
at javax.naming.InitialContext.rebind(InitialContext.java:444)
at org.springframework.jndi.JndiTemplate.lambda$rebind$2(JndiTemplate.java:213)
at org.springframework.jndi.JndiTemplate$$Lambda$142.000000001C87D5A0.doInContext(Unknown Source)
at org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:91)
at org.springframework.jndi.JndiTemplate.rebind(JndiTemplate.java:212)
at org.springframework.remoting.rmi.JndiRmiServiceExporter.rebind(JndiRmiServiceExporter.java:132)
at org.springframework.remoting.rmi.JndiRmiServiceExporter.prepare(JndiRmiServiceExporter.java:120)
at org.springframework.remoting.rmi.JndiRmiServiceExporter.afterPropertiesSet(JndiRmiServiceExporter.java:104)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1769)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1706)
... 41 more
Caused by: java.rmi.NoSuchObjectException: object not exported
at sun.rmi.transport.ObjectTable.getStub(ObjectTable.java:137)
at java.rmi.server.RemoteObject.toStub(RemoteObject.java:117)
at com.ibm.rmi.util.JDKBridge.getJRMPStub(JDKBridge.java:89)
at com.ibm.rmi.javax.rmi.PortableRemoteObject.toStub(PortableRemoteObject.java:187)
at com.ibm.CORBA.iiop.PortableRemoteObject.toStub(PortableRemoteObject.java:61)
at javax.rmi.PortableRemoteObject.toStub(PortableRemoteObject.java:127)
at com.ibm.ws.naming.util.Helpers.processRemoteObjectForBinding(Helpers.java:700)
at com.ibm.ws.naming.jndicos.CNContextImpl.doRebind(CNContextImpl.java:2061)
... 55 more
Affects: 5.0.4
Referenced from: commits 78681c6