WebService est une technologie d'appel à distance qui traverse les langages de programmation et traverse les plates-formes du système d'exploitation.
Le soi-disant appel distant est une méthode dans laquelle un programme sur un ordinateur a peut appeler un objet sur un autre ordinateur b. Par exemple, le système de balayage de la carte POS fourni par UnionPay au centre commercial (en utilisant des questions interactives pour approfondir la compréhension de chacun de cette technologie).
À quoi sert la technologie d'appels distants? Le code de la méthode de transfert est-il appelé à la machine POS dans le centre commercial sur le serveur bancaire ou sur la machine POS dans le centre commercial? Dans quelles circonstances la technologie d'appel à distance peut-elle être utilisée? Par exemple, Amazon, Système de prévision météorologique, Taobao, Campus Network, Baidu, etc. Exposez leurs services système sous forme de services WebService, permettant aux sites Web et programmes tiers pour appeler ces fonctions de service, qui étend la part de marché de leur propre système et des coups au plus grand concept, qui est l'application SOA.
La soi-disant langage de programmation croisée et la plate-forme croisée d'opération signifie que le programme de serveur est écrit en Java, tandis que le programme client peut être écrit dans d'autres langages de programmation, et vice versa! Une plate-forme système inter-opératrice signifie que les programmes de serveur et les programmes clients peuvent fonctionner sur différents systèmes d'exploitation.
En plus de WebService, les technologies d'appels à distance communes incluent RMI (RemoteMethodInvoke) et Corba. En raison des caractéristiques du langage multiplateforme et de la programmation croisée de WebService, il est plus largement utilisé que les deux autres technologies, mais a une performance légèrement inférieure.
Les étapes habituelles lors de l'utilisation de JDK pour passer des appels de servisice sont les suivantes:
// 1. Créez une instance javax.xml.ws.service javax.xml.ws.service service = javax.xml.ws.service.create (wsdl, ServiceName); // 2. Obtenez le proxy de l'interface de service correspondante via l'instance de service HellOservice HellOservice = Service.Getport (PortName, HellOservice.class); // 3. Appelez la méthode de service correspondante Helloservice.sayhello ("élimin")Dans l'étape ci-dessus 1, lors de la création d'une instance de service, un type de délégué de service sera construit à l'intérieur du service pour attribuer le délégué d'attribut à la prise interne. Ensuite, dans la deuxième étape, le délégué sera utilisé pour créer un objet proxy pour l'interface de service, et proxyra également les interfaces BindingProvider et clôtuables. Ensuite, lorsque la demande d'interface est réellement lancée dans la troisième étape, une demande HTTP sera lancée en interne. Lorsque la demande HTTP est lancée, les paramètres de délai d'expiration seront obtenus à partir du résultat du retour getRequestContext () de BindingProvider, correspondant à la com.sun.xml.internal.ws.connection.Timeout et com.sun.xml.internal.ws.request.Timeout paramètres. Le premier est le délai d'attente pour établir la connexion, et le second est le délai d'expiration pour obtenir la réponse à la demande, qui est en millisecondes. Si le délai d'attente correspondant n'est pas spécifié ou si le délai d'expiration spécifié est 0, cela signifie que le délai d'expiration n'expirera jamais. Ainsi, afin de spécifier l'heure du délai d'expiration, nous pouvons commencer par BindingProvider. Par exemple:
Client de classe publique {public static void main (String [] args) lève une exception {String TargetNamespace = "http://test.elim.com/ws" ;qname ServiceName = new Qname (TargetNamespace," Helloservice "); Qname Portname = new Qname (TargetNamespace," Helloservice "); Url Wsdl = New URL ("http: // localhost: 8888 / bonjour"); // Un objet de type ServiceDelegate sera créé en interne pour l'affecter à l'attribut DelegaService Service = Service.Create (WSDL, ServiceName); // il utilisera le délégué pour créer un objet proxy pour l'interface de service, et il proxymera également le BindingProvider et les interfaces. HELLOSERVICE HELLOSERVICE = Service.Getport (PortName, HelloService.Class); BindingProvider BindingProvider = (BindingProvider) HellOservice; Map <String, Object> requestContext = bindingProvider.GetRequestContext (); requestContext.put ("com.sun.xml.internal.ws.connection.timeout", 10 * 1000); L'établissement d'une connexion est de 10 secondes requestContext.put ("com.sun.xml.internal.ws.request.timeout", 15 * 1000); // Spécifiez le délai de réponse pour que la demande soit 15 secondes // lors de l'appel de la méthode d'interface, une demande HTTP sera lancée en interne. Lorsqu'une demande HTTP est lancée, les paramètres de délai d'expiration seront obtenus à partir du résultat du retour de la BindingProvider GetRequestContext (), // correspondant au com.sun.xml.internal.ws.connection.Timeout et com.sun.xml.internal.ws.request.timeout paramètres respectivement. // Le premier est le délai d'établissement d'une connexion, et le second est le délai d'obtention de la réponse à la demande, et l'unité est une milliseconde. Si le délai d'attente correspondant n'est pas spécifié ou si le délai d'expiration spécifié est 0, cela signifie que le délai d'expiration n'expirera jamais. System.out.println (Helloservice.Sayhello ("Elim"));}} L'exemple complet est le suivant:
Interface de service:
@WebService (portname = "Helloservice", ServiceName = "Helloservice", TargetNamespace = "http://test.elim.com/ws") Interface publique Helloservice {String Sayshello (nom de chaîne);}Implémentation de l'interface de service:
@WebService (portname = "Helloservice", ServiceName = "Helloservice", TargetNamespace = "http://test.elim.com/ws") Classe publique HelloserviceImplt implémente Helloservice {private Random = New Random (); @ Overdedipublic String Sayshello (String Name) {Try { random.nextint (21)); // sommeil aléatoire pendant 5-25 secondes} catch (InterruptedException e) {e.printStackTrace ();} return "Hello" + name;}}Code du serveur:
public class Server {public static void main (string [] args) {endpoint.publish ("http: // localhost: 8888 / bonjour", new HellOserviceImpl ());}}Le code du serveur mentionné ci-dessus dort au hasard pendant 5 à 25 secondes, tandis que le délai d'expiration spécifié par le client est de 15 secondes, donc pendant le test, vous verrez que parfois l'appel de service sera le temps libre et parfois il répondra normalement.
Résumer
Ce qui précède est toute l'explication détaillée du code de délai d'expiration de la programmation Java, j'espère que cela sera utile à tout le monde. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!