Le printemps appelle RMI
RMI (Méthode Remote Invocation) Appel de méthode distante pour réaliser la communication distante entre les applications Java. Ce qui suit décrit comment utiliser RMI en utilisant le ressort.
La structure du package est la suivante:
Définissez l'interface d'appel
Interface publique UserDao {public String getuser (nom d'utilisateur de chaîne) lève une exception;}Classe d'implémentation d'interface
classe publique UserDaOIMPLIMPLES UserDao {public String getUser (StringUserName) lève l'exception {return "test:" + username; }}(1) Configurer le service RMI:
applicationContext-rmi-server.xml <anEdId = "userdaoimpl" class = "com.rmi.userdaoimpl" /> <eanid = "userdaoimpl_exporter" class = "org.springframework.remoting.rmi.rmiserserviceExporter"> <propriété = "service" Ref = "userdaoImp" /> <propriétéName = "ServiceName" value = "rmi / userdaoimpl" /> <propriétéName = "ServiceInterface" value = "com.rmi.userdao" /> <propriétéName = "Registryport" value = "8819" /> </ bean>
(2) Démarrer le service RMI:
public class rmiserver {publicStaticFinal applicationContextContext = new ClassPathxmlApplicationContext ("ApplicationContext-rmi-server.xml"); publicStaticVoid Main (String [] args) {}}(3) Accès aux services RMI
applicationContext-rmi-Client.xml <anEdId = "userdaoimpl_client" class = "org.springframework.remoting.rmi.rmiproxyfactorybean"> <propriété = "serviceUrl" value = "rmi: // localhost: 8819 / rmi / userdaoIMPL" /> <propriétéName = "ServiceInterface" value = "com.rmi.userdao" /> <propriétéName = "RefreshStubonConnectFailure" value = "true" /> <propriété) Classe publique Rmiclient {publicStatitum = string [] args) {application ContextCon ClassPathxmlApplicationContext ("ApplicationContext-rmi-Client.xml"); Userdao userdao = (userdao) context.getBean ("userdaoimpl_client"); if (userdao! = null) {try {System.out.println (userdao.getUser ("li")); } catch (exception e) {e.printStackTrace (); }}}} quartz d'appel de printemps
1.Quartz est un cadre de planification de l'emploi, quartz intégré à Spring, qui est très pratique à utiliser.
2. Écrivez des classes d'exécution
import org.springframework.context.ApplicationContext; import org.springframework.context.support.classPathxmlApplicationContext; classe publique QuartzTest {public static void main (String [] args) {System.out.println ("Test Start."); ApplicationContext context = new ClassPathXmlApplicationContext ("ApplicationContext-terartz.xml"); // Si l'initiale paresseuse du bean startQuetz est définie sur false dans le fichier de configuration, il n'est pas nécessaire d'instancier //context.getBean("StartQuertz "); System.out.print ("Test End .."); }}3. Écrivez des fichiers de configuration
<! - Classe ouvrière pour appeler -> <bean id = "QuartzJob" /> <! - Définissez la méthode d'appel des objets et d'appels d'objets -> <bean id = "jobdetail"> <propriété name = "TargetObject" ref = "QuartzJob" /> <propriété name = "TargetMethod" value = "work" /> </ bean> <! name = "jobdetail"> <ref bean = "jobdetail" /> </ propriété> <! - Cron Expression -> <propriété name = "cronexpression"> <value> 2/5 44-46 22,23 9 9? 2012 </value> <! - De gauche à droite sont: les secondes, les minutes, le temps, le jour, le mois, l'année et la semaine? Les nombres ne peuvent être utilisés que dans les domaines de jour et de semaine, mais ne peuvent pas être utilisés simultanément dans ces deux domaines. Pouvez-vous penser? Le personnage est "Je me fiche de la valeur sur le terrain." Ceci est différent d'un astérisque, qui indique chaque valeur sur le terrain. ? signifie qu'aucune valeur n'est spécifiée pour ce champ. Une virgule (,) est utilisée pour spécifier une liste de valeurs dans un champ. Par exemple, l'utilisation de valeurs 0,15,30,45 dans le deuxième champ signifie qu'un déclencheur est déclenché toutes les 15 secondes. Les barres obliques (/) sont utilisées pour les horaires incrémentiels. Nous venons d'utiliser des virgules pour représenter les incréments toutes les 15 minutes, mais nous pouvons également les écrire comme 0/15. Scribble (-) est utilisé pour spécifier une plage. Par exemple, 3-8 sur le domaine Hour signifie "3, 4, 5, 6, 7 et 8 points". Les valeurs du domaine ne permettent pas le rembobinage, donc les valeurs comme 50-10 ne sont pas autorisées. L'astérisque (*) indique que vous souhaitez inclure toutes les valeurs juridiques sur ce champ. Par exemple, l'utilisation d'un astérisque sur le domaine du mois signifie que ce déclencheur sera déclenché chaque mois. La lettre L indique la dernière valeur autorisée sur un champ. Il n'est soutenu que par les domaines quotidiens et hebdomadaires. Le caractère W représente les jours de semaine (lun-fri) et ne peut être utilisé que dans le domaine quotidien. Il est utilisé pour spécifier le jour de semaine le plus proche du jour spécifié (non-samedi). # Les caractères ne peuvent être utilisés que dans le domaine périphérique. Il est utilisé pour spécifier le jour de la semaine dans un mois spécifié. Par exemple, si vous spécifiez la valeur du champ hebdomadaire à 6 # 3, cela signifie le troisième vendredi d'un certain mois (6 = vendredi, # 3, la troisième semaine du mois). -> </ propriété> </ank> <! - Classe de gestion générale Si paresseux-Init = 'false' est utilisée, le conteneur exécutera le planificateur -> <bean id = "startQuertz" Lazy-Init = "false" autowire = "no"> <propriété name = "Triggers"> <st> <réf.
4. À propos des expressions de cronexpression
<! - Cron Expression -> <propriété name = "Cronexpression"> <value> 2/5 44-46 22,23 9 9? 2012 </value> <! - De gauche à droite sont: les secondes, les minutes, le temps, le jour, le mois, l'année et la semaine? Les nombres ne peuvent être utilisés que dans les domaines de jour et de semaine, mais ne peuvent pas être utilisés simultanément dans ces deux domaines. Pouvez-vous penser? Le personnage est "Je me fiche de la valeur sur le terrain." Ceci est différent d'un astérisque, qui indique chaque valeur sur le terrain. ? signifie qu'aucune valeur n'est spécifiée pour ce champ. Une virgule (,) est utilisée pour spécifier une liste de valeurs dans un champ. Par exemple, l'utilisation de valeurs 0,15,30,45 dans le deuxième champ signifie qu'un déclencheur est déclenché toutes les 15 secondes. Les barres obliques (/) sont utilisées pour les horaires incrémentiels. Nous venons d'utiliser des virgules pour représenter les incréments toutes les 15 minutes, mais nous pouvons également les écrire comme 0/15. Scribble (-) est utilisé pour spécifier une plage. Par exemple, 3-8 sur le domaine Hour signifie "3, 4, 5, 6, 7 et 8 points". Les valeurs du domaine ne permettent pas le rembobinage, donc les valeurs comme 50-10 ne sont pas autorisées. L'astérisque (*) indique que vous souhaitez inclure toutes les valeurs juridiques sur ce champ. Par exemple, l'utilisation d'un astérisque sur le domaine du mois signifie que ce déclencheur sera déclenché chaque mois. La lettre L indique la dernière valeur autorisée sur un champ. Il n'est soutenu que par les domaines quotidiens et hebdomadaires. Le caractère W représente les jours de semaine (lun-fri) et ne peut être utilisé que dans le domaine quotidien. Il est utilisé pour spécifier le jour de semaine le plus proche du jour spécifié (non-samedi). # Les caractères ne peuvent être utilisés que dans le domaine périphérique. Il est utilisé pour spécifier le jour de la semaine dans un mois spécifié. Par exemple, si vous spécifiez la valeur du champ hebdomadaire à 6 # 3, cela signifie le troisième vendredi d'un certain mois (6 = vendredi, # 3, la troisième semaine du mois). ->