Spring llama a RMI
Llamada de método remoto RMI (Invocación de método remoto) para realizar una comunicación remota entre aplicaciones Java. Lo siguiente describe cómo usar RMI usando Spring.
La estructura del paquete es la siguiente:
Defina la interfaz de llamadas
interfaz pública userdao {public String getUser (String UserName) lanza la excepción;}Clase de implementación de interfaz
Public Class UserDAOMPLIMPLE USERDAO {public String getUser (StringUsername) lanza la excepción {return "test:"+username;(1) Configurar el servicio RMI:
ApplicationContext-Rmi-Server.xml <beanid = "userDaoMpl" class = "com.rmi.userdaoImpl"/> <beanid = "userdaoImpl_Exporter" class = "org.springframework.remoting.rmi.rmiserviceExporter"> <propiety = "Service" ref = "User"/"User"/"/"/"<Pos propietaria". valor = "rmi/userdaoImpl"/> <propertyyname = "ServiceInterface" value = "com.rmi.userdao"/> <Propertyname = "Registryport" value = "8819"/> </reme>
(2) Iniciar servicio RMI:
Public Class Rmiserver {PublicStaticFinal ApplicationContextContext = new ClassPathXMLApPlicationContext ("ApplicationContext-Rmi-Server.xml");(3) acceder a los servicios RMI
ApplicationContext-Rmi-Client.xml <beanid = "userdaoImpl_client" class = "org.springframework.remoting.rmi.rmiproxyfactorybean"> <propietaria = "servicio" value = "rmi: // localhost: 8819/rmi/userdaoM"/>> <propiety " Dao "/> <Propertyname =" RefreshStubonConnectFailure "value =" true "/> <propertyName =" LookupStubonStartUp "value =" false "/> </bean> public class rmiclient {publicStaticVoid Main (String [] args) {ApplicationContext context = new ClassPathXMLAplaPlicationContext ("ApplicationContext-Rmi-Client.xml"); (userDao.getuser ("li")); }} Cuarzo de llamadas de primavera
1.Cartz es un marco de programación de trabajo, cuarzo integrado con Spring, que es muy conveniente de usar.
2. Escribir clases de ejecución
importar org.springframework.context.applicationContext; quartz.xml "); // Si la INIT delzada del bean Startquetz se establece en falso en el archivo de configuración Entonces no hay necesidad de instanciar //context.getbean("Startquertz ");3. Escribir archivos de configuración
< ref Bean = "JobDetail"/> </Property> <!-Cron Expression-> <Property Name = "Cronexpression"> <valor> 2/5 44-46 22,23 9 9? ¿Puedes pensar que el personaje es "No me importa qué valor en el campo". ? Se utiliza una coma (,) para especificar una lista de valores a un campo. Por ejemplo, el uso de valores 0,15,30,45 en el segundo campo significa que un disparador se desencadena cada 15 segundos. Las cortes (/) se usan para horarios incrementales. Acabamos de usar comas para representar incrementos cada 15 minutos, pero también podemos escribirlos como 0/15. Scribble (-) se usa para especificar un rango. Por ejemplo, 3-8 en el dominio de la hora significa "3, 4, 5, 6, 7 y 8 puntos". El asterisco (*) indica que desea incluir todos los valores legales en este campo. Por ejemplo, usar un asterisco en el dominio del mes significa que este desencadenante se activará cada mes. La letra L indica el último valor permitido en un campo. Solo es compatible con los dominios diarios y semanales. El personaje W representa entre semana (lunes a viernes) y solo puede usarse en el dominio diario. Se utiliza para especificar el día de la semana más cercano al día especificado (no sábado). # Los caracteres solo se pueden usar en el dominio periférico. Se utiliza para especificar qué día de la semana en un mes específico. Por ejemplo, si especifica el valor del campo semanal como 6 #3, significa el tercer viernes de un cierto mes (6 = viernes, #3 significa la tercera semana del mes). -> </property> </bean> <!-Clase de gestión general si se usa lazy-init = 'false', el contenedor ejecutará el planificador-> <bean id = "startquertz" lazyinit = "false" autowire = "no"> <Property name = "Triggers"> <List> <ref Bean = "Dotime"/> </List> </propers> </bean>
4. Acerca de las expresiones de cronexpresión
< ¿Puedes pensar que el personaje es "No me importa qué valor en el campo". ? Se utiliza una coma (,) para especificar una lista de valores a un campo. Por ejemplo, el uso de valores 0,15,30,45 en el segundo campo significa que un disparador se desencadena cada 15 segundos. Las cortes (/) se usan para horarios incrementales. Acabamos de usar comas para representar incrementos cada 15 minutos, pero también podemos escribirlos como 0/15. Scribble (-) se usa para especificar un rango. Por ejemplo, 3-8 en el dominio de la hora significa "3, 4, 5, 6, 7 y 8 puntos". El asterisco (*) indica que desea incluir todos los valores legales en este campo. Por ejemplo, usar un asterisco en el dominio del mes significa que este desencadenante se activará cada mes. La letra L indica el último valor permitido en un campo. Solo es compatible con los dominios diarios y semanales. El personaje W representa entre semana (lunes a viernes) y solo puede usarse en el dominio diario. Se utiliza para especificar el día de la semana más cercano al día especificado (no sábado). # Los caracteres solo se pueden usar en el dominio periférico. Se utiliza para especificar qué día de la semana en un mes específico. Por ejemplo, si especifica el valor del campo semanal como 6 #3, significa el tercer viernes de un cierto mes (6 = viernes, #3 significa la tercera semana del mes). ->