Class JndiRmiServiceExporter
- java.lang.Object
- org.springframework.remoting.support.RemotingSupport
- org.springframework.remoting.support.RemoteExporter
- org.springframework.remoting.support.RemoteInvocationBasedExporter
- org.springframework.remoting.rmi.RmiBasedExporter
- org.springframework.remoting.rmi.JndiRmiServiceExporter
- All Implemented Interfaces:
Aware
,BeanClassLoaderAware
,DisposableBean
,InitializingBean
public class JndiRmiServiceExporter extends RmiBasedExporter implements InitializingBean, DisposableBean
Service exporter which binds RMI services to JNDI. Typically used for RMI-IIOP (CORBA).Exports services via the
javax.rmi.PortableRemoteObject
class. You need to run "rmic" with the "-iiop" option to generate corresponding stubs and skeletons for each exported service.Also supports exposing any non-RMI service via RMI invokers, to be accessed via
JndiRmiClientInterceptor
/JndiRmiProxyFactoryBean
's automatic detection of such invokers.With an RMI invoker, RMI communication works on the
RmiInvocationHandler
level, needing only one stub for any service. Service interfaces do not have to extendjava.rmi.Remote
or throwjava.rmi.RemoteException
on all methods, but in and out parameters have to be serializable.The JNDI environment can be specified as "jndiEnvironment" bean property, or be configured in a
jndi.properties
file or as system properties. For example:<property name="jndiEnvironment"> <props> <prop key="java.naming.factory.initial">com.sun.jndi.cosnaming.CNCtxFactory</prop> <prop key="java.naming.provider.url">iiop://localhost:1050</prop> </props> </property>
- Since:
- 1.1
- Author:
- Juergen Hoeller
- See Also:
RemoteExporter.setService(java.lang.Object)
,setJndiTemplate(org.springframework.jndi.JndiTemplate)
,setJndiEnvironment(java.util.Properties)
,setJndiName(java.lang.String)
,JndiRmiClientInterceptor
,JndiRmiProxyFactoryBean
,javax.rmi.PortableRemoteObject#exportObject
Field Summary
Fields inherited from class org.springframework.remoting.support.RemotingSupport
logger
Constructor Summary
Constructors Constructor Description JndiRmiServiceExporter()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
afterPropertiesSet()
Invoked by the containingBeanFactory
after it has set all bean properties and satisfiedBeanFactoryAware
,ApplicationContextAware
etc.void
destroy()
Unbind the RMI service from JNDI on bean factory shutdown.void
prepare()
Initialize this service exporter, binding the specified service to JNDI.void
rebind()
Rebind the specified service to JNDI, for recovering in case of the target registry having been restarted.void
setJndiEnvironment(Properties jndiEnvironment)
Set the JNDI environment to use for JNDI lookups.void
setJndiName(String jndiName)
Set the JNDI name of the exported RMI service.void
setJndiTemplate(JndiTemplate jndiTemplate)
Set the JNDI template to use for JNDI lookups.Methods inherited from class org.springframework.remoting.rmi.RmiBasedExporter
getObjectToExport, invoke
Methods inherited from class org.springframework.remoting.support.RemoteInvocationBasedExporter
getRemoteInvocationExecutor, invokeAndCreateResult, setRemoteInvocationExecutor
Methods inherited from class org.springframework.remoting.support.RemoteExporter
checkService, checkServiceInterface, getExporterName, getProxyForService, getService, getServiceInterface, setInterceptors, setRegisterTraceInterceptor, setService, setServiceInterface
Methods inherited from class org.springframework.remoting.support.RemotingSupport
getBeanClassLoader, overrideThreadContextClassLoader, resetThreadContextClassLoader, setBeanClassLoader
Constructor Detail
JndiRmiServiceExporter
public JndiRmiServiceExporter()
Method Detail
setJndiTemplate
public void setJndiTemplate(JndiTemplate jndiTemplate)
Set the JNDI template to use for JNDI lookups. You can also specify JNDI environment settings via "jndiEnvironment".
setJndiEnvironment
public void setJndiEnvironment(Properties jndiEnvironment)
Set the JNDI environment to use for JNDI lookups. Creates a JndiTemplate with the given environment settings.
setJndiName
public void setJndiName(String jndiName)
Set the JNDI name of the exported RMI service.
afterPropertiesSet
public void afterPropertiesSet() throws NamingException, RemoteException
Description copied from interface:InitializingBean
Invoked by the containingBeanFactory
after it has set all bean properties and satisfiedBeanFactoryAware
,ApplicationContextAware
etc.This method allows the bean instance to perform validation of its overall configuration and final initialization when all bean properties have been set.
- Specified by:
afterPropertiesSet
in interfaceInitializingBean
- Throws:
NamingException
RemoteException
prepare
public void prepare() throws NamingException, RemoteException
Initialize this service exporter, binding the specified service to JNDI.- Throws:
NamingException
- if service binding failedRemoteException
- if service export failed
rebind
public void rebind() throws NamingException
Rebind the specified service to JNDI, for recovering in case of the target registry having been restarted.- Throws:
NamingException
- if service binding failed
destroy
public void destroy() throws NamingException, RemoteException
Unbind the RMI service from JNDI on bean factory shutdown.- Specified by:
destroy
in interfaceDisposableBean
- Throws:
NamingException
RemoteException