WebService es una tecnología de llamadas remotas que cruza los lenguajes de programación y cruza las plataformas del sistema operativo.
La llamada llamada remota es un método en el que un programa en una computadora A puede llamar a un objeto en otra computadora b. Por ejemplo, el sistema de deslizamiento de tarjetas POS proporcionado por UnionPay al centro comercial (utilizando preguntas interactivas para profundizar la comprensión de todos los que todos).
¿De qué sirve la tecnología de llamadas remotas? ¿El código del método de transferencia se requiere para la máquina POS en el centro comercial en el servidor bancario o en la máquina POS en el centro comercial? ¿En qué circunstancias se puede utilizar la tecnología de llamadas remotas? Por ejemplo, Amazon, Sistema de pronóstico del tiempo, Taobao, Campus Network, Baidu, etc. Expone sus servicios de sistema en forma de servicios de servicio web, permitiendo que los sitios web y programas de terceros llamen a estas funciones de servicio, lo que expande la cuota de mercado de su propio sistema y sopla al concepto más grande, que es la aplicación SOA de SOA.
El llamado lenguaje de programación cruzada y la plataforma de transferencia de transferencia significa que el programa del servidor está escrito en Java, mientras que el programa del cliente se puede escribir en otros lenguajes de programación, ¡y viceversa! Una plataforma de sistema transversal significa que los programas de servidores y los programas de clientes pueden ejecutarse en diferentes sistemas operativos.
Además del servicio web, las tecnologías comunes de llamadas remotas incluyen RMI (remotemethodinvoke) y Corba. Debido a las características del lenguaje multiplataforma y de programación cruzada del servicio web, se usa más ampliamente que las otras dos tecnologías, pero tiene un rendimiento ligeramente más bajo.
Los pasos habituales al usar JDK para hacer llamadas de servicio web son los siguientes:
// 1. Cree una instancia javax.xml.ws.service javax.xml.ws.service Service = javax.xml.ws.service.create (WSDL, ServiceName); // 2. Obtenga el proxy de la interfaz de servicio correspondiente a través de la instancia de servicio HelloService HelloService = Service.getPort (PortName, HelloService.Class); // 3. Llame al método de servicio correspondiente Helloservice.Sayhello ("Elim")En el paso 1 anterior, mientras construye una instancia de servicio, se construirá un tipo de objeto de delegado de servicio dentro del servicio para asignar el delegado de atributos a la retención interna. Luego, en el segundo paso, Delegate se utilizará para crear un objeto proxy para la interfaz de servicio, y también proxyará las interfaces BindingProvider e cerrables. Luego, cuando la solicitud de interfaz realmente se inicia en el tercer paso, se iniciará una solicitud HTTP internamente. Cuando se inicia la solicitud HTTP, los parámetros de tiempo de espera se obtendrán del resultado del retorno GetRequestContext () de BindingProvider, correspondiente al com.sun.xml.internal.ws.connection.timeout y com.sun.xml.internal.ws.request.timeut parameters respectivamente. El primero es el tiempo de tiempo de espera para establecer la conexión, y el segundo es el tiempo de tiempo de espera para obtener la respuesta de solicitud, que se encuentra en milisegundos. Si no se especifica el tiempo de espera correspondiente o el tiempo de espera especificado es 0, significa que el tiempo de espera nunca caducará. Entonces, para especificar el tiempo de tiempo de espera, podemos comenzar con BindingProvider. Por ejemplo:
Cliente de clase pública {public static void main (string [] args) lanza la excepción {String TargetNamesPace = "http://test.elim.com/ws" ;QName ServiceName = new Qname (TargetNamesPace," HelloService "); QNNAME = New QSDEM URL ("http: // localhost: 8888/hello"); // Se creará un objeto de tipo ServiceLegate internamente para asignarlo al atributo DelegatesService Service = Service.Create (WSDL, ServiceName); // Utilizará Delegate para crear un objeto Proxy para la interfaz de servicio, y también se produzca el interfaces de proxy y el cierre de cierre. HELLOSERVICE HELLOSERVICE = Service.getPort (PortName, HelloService.Class); BindingProvider BindingProvider = (BindingProvider) HELLOSERVICE; MAP <String, Object> requestContext = BindingProvider.getRequestContext (); SoldContext.put ("com.sun.xml.internal.ws.connection.TimeOut"; El tiempo de espera para establecer una conexión es de 10 segundos requestContext.put ("com.sun.xml.internal.ws.request.timeout", 15 * 1000); // Especifique el tiempo de espera de respuesta para que la solicitud sea de 15 segundos // al llamar al método de interfaz, una solicitud HTTP se iniciará internamente. Cuando se inicia una solicitud HTTP, los parámetros de tiempo de espera se obtendrán del resultado del retorno de GetRequestContext (), // correspondiente al resultado de Com.sun.xml.internal.ws.connection.timeout y com.sun.xml.internal.ws.request.timeout parámetros respectivamente. // El primero es el tiempo de espera para establecer una conexión, y el segundo es el tiempo de espera para obtener la respuesta de solicitud, y la unidad es milisegundos. Si no se especifica el tiempo de espera correspondiente o el tiempo de espera especificado es 0, significa que el tiempo de espera nunca caducará. System.out.println (HelloService.Sayhello ("Elim"));}} El ejemplo completo es el siguiente:
Interfaz de servicio:
@WebService (portname = "HelloService", ServiceName = "HelloService", TargetNamespace = "http://test.elim.com/ws") Interfaz pública HELOSERVICE {String Sayshello (nombre de cadena);}Implementación de la interfaz de servicio:
@WebService (PortName = "HelloService", ServiceName = "HelloService", TargetNamesPace = "http://test.elim.com/ws") clase pública HELLOSERVICEIMPL implementa HELLOSERVICE {private Random Random = new Random ();@overDepublic StringShello (name de cadena) {Pry {Pry {Pry {Pry {Pry {intent.seconds. Random.NextInt (21)); // sueño aleatorio durante 5-25 segundos} Catch (InterruptedException e) {E.PrintStackTrace ();} return "Hello" + Name;}}Código de servidor:
Public Class Server {public static void main (string [] args) {endpoint.publish ("http: // localhost: 8888/hello", new HelloserviceImpl ());}}El código del servidor mencionado anteriormente duerme al azar durante 5-25 segundos, mientras que el tiempo de espera especificado por el cliente es de 15 segundos, por lo que durante la prueba, verá que a veces la llamada de servicio tiempo saldrá tiempo y, a veces, responderá normalmente.
Resumir
Lo anterior es toda la explicación detallada del código de tiempo de espera de WebService de programación Java, espero que sea útil para todos. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!