La aplicación del servicio web se ha vuelto cada vez más extenso. La siguiente presenta varias formas de desarrollar el servicio web en el sistema Java, que es equivalente a hacer un registro.
1.Axis2
Axis es el siguiente componente de desarrollo de servicio web de código abierto de Apache. Parecía relativamente temprano y maduro. Aquí presentamos principalmente el desarrollo del servicio web Axis+Eclipse. Por supuesto, puede desarrollar y publicar WebService sin eclipse, pero será más conveniente usar Eclipse.
(1) Descargue la versión Java EE de Eclipse //www.vevb.com/softs/239903.html#down
(2) Descargue axis2 http://axis.apache.org/axis2/java/core/download.cgi
(3) Descargue el complemento Axis2 de Eclipse
Axis2_codegen_wizard
Axis2_service_archiver
http://axis.apache.org/axis2/java/core/tools/index.html
Recomendado usar la versión 1.3
(4) Eclipse para instalar el complemento Axis2
1) Cree una nueva carpeta AXIS2 en cualquier directorio, cree un nuevo directorio de Eclipse en esta carpeta y cree un nuevo directorio de complementos y presente el directorio en el directorio de Eclipse, como: D:/Programatoftware/Eclipse-SVN/Axis2/Eclipse;
2) Descomprima el complemento Axis2 descargado y coloque el archivo descomprimido en el directorio de complementos del eclipse recién creado;
3) Cree un nuevo directorio de enlaces en el directorio % eclipse_home %, y cree un nuevo archivo axis2.link en el directorio de enlaces, con el contenido: ruta = d:/programasoftware/eclipse-svn/axis2;
4) Reinicie Eclipse y haga clic en ・ Archivo-nuevo-otro. Si ve los asistentes de Axis2, significa que el complemento se instala correctamente.
(5) Instalar axis2
Descargue la distribución de guerra de Axis2 y descomprima, coloque el paquete Axis2.war en %Tomcat_Home %/WebApps, inicie Tomcat, visite http: // localhost: puerto/axis2, y axis2 se instala con éxito.
(6) Use Eclipse para crear un nuevo proyecto web y crear una clase Java normal, que incluya al menos un método.
(7) publicar un servicio web
1) Haga clic en Archivo-Nuevo-Otro en Eclipse, abra los asistentes de Axis2, seleccione Archiver de servicio Axis2 y luego Siguiente;
2) Seleccione la ubicación del archivo de clase, es decir, la ruta de almacenamiento de archivos de clase. Nota: solo seleccione el directorio de clases, no incluya la carpeta del paquete y luego siguiente;
3) Seleccione omitir WSDL y luego a continuación
4) Vaya a continuación para seleccionar el archivo XML de servicio que se incluirá en el archivo de servicio, y verifique automáticamente el servicio XML;
5) Servicio de nombre de nombre en su nombre de servicio, relleno de nombre de clase en el nombre de clase, incluido el nombre del paquete, luego haga clic en Cargar y luego haga clic en Finalizar. En este momento, el servicio web se publicará con éxito;
6) Luego vaya a %Tomcat_Home %/WebApps/Axis2/Web-Inf/Services para ver si hay un archivo .aar adicional;
7) Visite http: // localhost: 8085/axis2/servicios/nombre de clase? Wsdl para ver el archivo WSDL generado.
Nota: El método anterior es publicarlo en el paquete axis2.war. También puede copiar el archivo .aar generado a su aplicación real. Al mismo tiempo, también puede usar la función Crear sitio web de Eclipse para publicar su sitio web. Seleccione Axis2 para generar su sitio web, de modo que el sitio web se implementará en su aplicación.
2.Apche CXF
El servicio web de desarrollo de CXF también es relativamente conveniente y simple, y se puede decir que su integración con la primavera es muy buena. Tomemos un ejemplo de servicio web de desarrollo CXF.
1) Cree un nuevo proyecto web en los paquetes de dependencia de Eclipse e importación.
2) Escriba una interfaz, como:
Prueba de cadena pública (@Webparam (name = "valor", targetNamespace = "http://service.cxf.zcl.com/", mode = webparam.mode.in) valor de cadena);
Nota: En el servicio web desarrollado por CXF, los parámetros de los métodos en la interfaz deben ser de esta manera; de lo contrario, el servidor CXF no recibirá el valor de parámetros cuando el cliente lo llama. Nombre: Nombre del parámetro, no lo escriba (recomendado para escribirlo), TargetNamespace: Namespace, debe completarse. El valor predeterminado es el orden inverso del nombre del paquete, modo: tipo de parámetro, en representación de entrada.
3) escribir una clase de implementación e implementar el método de interfaz;
4) Integre con Spring, escriba un archivo de frijoles, como: cxf-beanss.xml, con el siguiente contenido:
<? xml versión = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" "" "" xmlns: jaxws = "http://cxf.apache.org/jaxws" xsi: schemalocation = "http://www.springframework.org/schema/Beans http://www.springframework.org/schema/beans/spring-beanss. http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd "> <import croce =" classpath: metainf/cxf/cxf.xml "/> <importe =" classpath: metainf/cxf/cxf-exp.xml resource = "classpath: meta -inf/cxf/cxf-servlet.xml"/> <jaxws: endpoint id = "voto" implementer = "com.zcl.cxf.service.voteImpl" directo = "/voto"/> </beans>
Este archivo es más fácil de entender, por lo que no lo explicaré.
5) Configurar cxfservlet
Configurar cxfservlet en el archivo web.xml y cargue el archivo cxf-beanss.xml, con el siguiente contenido:
<web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns: web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi: schemalocation = "http://java.sun.com/xml/ns/Javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd "id =" webapp_id "version =" 2.5 "> <context-param> <amamamame> contextConfigLocation </amam-name> <amamnvalue> webinf/cxf-beans.xml </aam-vali <Oyerer-class> org.springframework.web.context.contextloaderListener </oyeyer-class> </oyeyer> <ervlet> <ervlet-name> cxf </servlet-name> <ervlet-class> org.apache.cxf.transport.servlet.cxfservlet </servlet> <load-sad-startup> </servlet> <servlet mapping> <ervlet-name> cxf </servlet-name> <url-pattern>/services/*</url-Pattern> </servlet-mapping> </seb-app>
Implemente el proyecto en el middleware, como Tomcat, y puede acceder al servicio del sitio web.
3. JDK Development WebService
1) Escriba una clase de Java de la siguiente manera:
demostración de paquete; import javax.jwss.webparam; import javax.jws.webservice; import javax.xml.ws.endpoint; @WebService public class jdkWebService {public String DosomThing (@Webparam (name = "valor", targetNamespace = "http: // demo/", mode = webparam.mode.in) string value) {return "solo hazlo", + valor + "!"; } public static void main (string [] args) {endpoint.publish ("http: // localhost: 8080/jdkwsdemo/demo.jdkwebservice", nuevo jdkwebservice ()); }} 2) Ejecute la clase Java y puede acceder al servicio web en el navegador.
Nota: Este método no es muy amigable al desarrollar ingeniería web. Podemos escribir una clase de servlet y publicar un servicio web en el método de inicialización de la clase Servlet, para que nuestro servidor de middleware nos ayude automáticamente a comenzar.
3) xfire
Hay muchos marcos para desarrollar WebService, y cada marco tiene sus propias características. Recientemente, utilicé XFIRE para practicar el desarrollo de WebService. A continuación se muestra un pequeño ejemplo de desarrollo web. Espero que sea útil para aquellos que están comenzando.
1. Cree un nuevo proyecto web de Java llamado TestWebService, agregue paquetes JAR relacionados con XFire al directorio lib, escriba clases de interfaz y clases de implementación
paquete com.lamp.service; Interfaz pública MessageService {public String getName (nombre de cadena); } paquete com.lamp.service; Interfaz pública MessageService {public String getName (nombre de cadena); } Clase de implementación
paquete com.lamp.service.impl; import com.lamp.service.messageService; public class MessageServiceImpl implementa MessageService {public String getName (name de cadena) {return "hellow" + name + ", bienvenido a WebService World"; }} paquete com.lamp.service.impl; import com.lamp.service.messageService; public class MessageServiceImpl implementa MessageService {public String getName (name de cadena) {return "hellow" + name + ", bienvenido a WebService World"; }} Cree una nueva carpeta Meta-INF en el directorio SRC, luego cree una nueva carpeta XFIRS en ella y cree un nuevo archivo de configuración Services.xml en el directorio XFIR
<? xml versión = "1.0" encoding = "utf-8"?> <beans xmlns = "http://xfire.codehaus.org/config/1.0"> <service> <name> messageService </name> <erviceClass> com.lamp.service.messageservice </serviceclass> <SplementationClass> com.lamp.service.impl.messageServiceImpl <//implementationClass> </service> </beans> <? xml version = "1.0" coding = "utf-8"?> <Beans xmlns = "http://xfire.codehaus.org/config/1.0"> <service> <name> <serviceClass> com.lamp.service.messageservice </serviceClass> <MaipeationClass> com.lamp.service.impl.messageServiceImpl </ImplementationClass> </serving> </beans>
Finalmente, configure el servlet de xfire en web.xml
<Servlet> <Servlet-name> xfirreServlet </servlet-name> <ervlet-class> org.codehaus.xfire.transport.http.xfireconfigurableServlet </servlet-class> </servlet> <servlet-mapping> <ervlet-mapping> <ervlet-name> xfirreservlet </servlet-name> <Url-Tattern>/Servlet/xfirreServlet/*</ url-Pattern> </servlet-mapping> <ervlet-mapping> <ervlet-name> xfirreServlet </servlet-name> <url-pattern>/servicios/*</url-pattern> </servlet-mapping> <ervlet> <ervlet-name> xfirreservlet </servlet-class> <servlet-class> org.codehaus.xfire.transport.http.xfiConfigurableServlet </servlet-class> </servlet> <servlet-mapping> <ervlet-name> xfireservlet </servlet-name> <url-pattern>/servlet/xfirreservlet/*</sl-pattern> </servlet-mapping> <ervlet-mapping> <Servlet-name> xfirreServlet </servlet-name> <url-pattern>/servicios/*</sl-Pattern> </servlet-mapping>
Después de implementar el proyecto, puede ver la interfaz de acceso remoto en el navegador a través de http: // localhost: 8080/testWebService/Services, y obtener WSDL como http: // localhost: 8080/testWebService/Services/MessageService? WSDL?
De esta manera, el desarrollo del servidor se completa y ahora se inicia el desarrollo del cliente
Cree un nuevo proyecto Java y también presente frascos relacionados con XFire. Utilizo ANT para generar objetos proxy en el cliente y crear una nueva compilación.xml en la ruta del proyecto, y el código es
<? Xml versión = "1.0" encoding = "utf-8"?> <Project name = "WebService" BaseIR = ". default = "gen-webservice"> <propiedad file = "build.properties"> </property> <path id = "proyecto-classpath"> <fileset dir = "$ {lib.dir}"> <include name = "**/*. jar"/> </silset> </hath> <target name = "gen-webservice"> <taskdef name = "wsgen" wsgen " classname = "org.codehaus.xfire.gen.wsgentask" classpathref = "Project-classpath"/> <wsgen outputDirectory = "$ {src.dir}" wsdl = "$ {wsdl.dir}" paquete = "com.lamp.ws.client" Overwrite = "verdadero"/> <<tact </Target </Target </Target </Project> </Project> </Project> <? Xml versión = "1.0" encoding = "utf-8"?> <Project name = "WebService" BaseIR = ". default = "gen-webservice"> <propiedad file = "build.properties"> </property> <path id = "proyecto-classpath"> <fileset dir = "$ {lib.dir}"> <include name = "**/*. jar"/> </silset> </hath> <target name = "gen-webservice"> <taskdef name = "wsgen" wsgen " classname = "org.codehaus.xfire.gen.wsgentask" classpathref = "Project-classpath"/> <wsgen outputDirectory = "$ {src.dir}" wsdl = "$ {wsdl.dir}" paquete = "com.lamp.ws.client" Overwrite = "verdadero"/> <<tact </Target </Target </Target </Project> </Project> </Project> El archivo build.properties que introdujo también está en la ruta del proyecto
src.dir = $ {BaseIR}/src lib.dir = f: /webservice/xfire-1.2.6/lib wsdl.dir = http: // localhost: 8080/testWebService/Services/MessageService? WSDL Donde lib.jar almacena el camino de xfire para mí, ejecute hormiga para obtener el objeto proxy
Escribe una clase de prueba
paquete com.lamp.test; import com.lamp.ws.client.messageServiceClient; import com.lamp.ws.client.messageServicePortType; public class testGetName {public static void main (string [] args) {MessageserviceClient msg = new MessageServiceClient (); MessageServicePortType PortType = msg.getMessageServiceHttpport (); Resultado de cadena = porttype.getName ("zhang san"); System.out.println (resultado); }} paquete com.lamp.test; import com.lamp.ws.client.messageServiceClient; import com.lamp.ws.client.messageServicePortType; public class testGetName {public static void main (string [] args) {MessageserviceClient msg = new MessageServiceClient (); MessageServicePortType PortType = msg.getMessageServiceHttpport (); Resultado de cadena = porttype.getName ("zhang san"); System.out.println (resultado); }} Al ejecutar la consola, vi a Hellow Zhang San, bienvenido a WebService World, y se ha completado un simple desarrollo de servicio web.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.