Cómo utilizar el servicio web generado por Netbeans
Es muy conveniente desarrollar servicios web con netbeans. Por supuesto, es mejor tener un entorno jdk6, pero hay un problema que muchas veces nos confunde, es decir, cuando el código se completa en el entorno de prueba. o el entorno de desarrollo debe implementarse en otras máquinas, estaremos perdidos y tendremos que cambiar las direcciones de los puntos finales de destino en el código una por una, algunas personas dicen que debemos usar archivos de configuración, jaja, puede ser muy conveniente en eje o; xfire está escrito de forma puramente manual, pero en netbeans, estos fragmentos generados automáticamente no se pueden cambiar. Es un poco problemático levantarlos, aunque es muy conveniente arrastrarlos y soltarlos durante el desarrollo. En el pasado siempre me consolaba así, ¡todo tiene dos caras! Recientemente leí un artículo del jefe de Sun Webservice, Arun Gupta, y descubrí que en realidad es muy fácil cambiar esto, muy fácil, pero todavía hay problemas, que se describirán en detalle a continuación.
Por ejemplo:
Según Arun, el wsdl que utilizamos habitualmente ha generado código para llamar al servicio web, entre los que se encuentra la versión de jax-ws 2.1
Hola puerto = new HelloService().getHelloPort();
Resultado de cadena = port.sayHello("Duke!");
Por supuesto, todas las descripciones anteriores corresponden a una IP específica direcciones El servicio web publicado por la dirección no se puede utilizar si el mismo servicio finalmente se implementa en otras máquinas. Entonces, podemos agregar otra línea de código entre las dos líneas anteriores:
((javax.xml.ws.BindingProvider)port).getRequestContext().put(javax.xml.ws.BindingProvider.ENDPOINT_ADDRESS_PROPERTY , "NEW_ADDRESS_HERE");
En uso real, simplemente reemplace NEW_ADDRESS_HERE con la dirección del punto final correspondiente.
Creo que Arun cometió el mismo error que yo cometí antes al realizar la prueba. Después de cambiar el punto final, si sigue el método anterior, será factible cuando el servidor de la aplicación original no esté cerrado, pero esto rara vez sucede. . Al ejecutar el código "Hello port = new HelloService().getHelloPort();", el archivo wsdl original se recuperará primero. Si el servidor de aplicaciones original se ha cerrado, se informará una excepción ((javax.xml.ws. .BindingProvider)port).getRequestContext().put(javax.xml.ws.BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "NEW_ADDRESS_HERE");
Después de explorar un poco, encontré un buen método, el siguiente