Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo configurar la dirección de publicación del servicio web de desarrollo Spring integrado de xfire

Cómo configurar la dirección de publicación del servicio web de desarrollo Spring integrado de xfire

1. Primero cree un proyecto web, introduzca el paquete jar correspondiente y descargue el paquete jar más optimizado desarrollado por Xfire

Lado del servidor:

commons-logging-1.1.1.jar

p>

jdom-1.0.jar

org.1.1.jar

jdom-1.0.jar

org.springframework.aop -3.1.1 .RELEASE.jar

org.springframework.asm-3.1.1.RELEASE.jar

org.springframework.beans-3.1.1.-3.1.1. RELEASE.jar

wsdl4j-1.6.1.jar

xfire-all-1.2.6.jar

Cliente:

com .springsource org.junit-4.7.0.jar

commons-codec-1.3.jar

commons-mons-logging-1.1.1.jar

jdom- 1.0.jar

wsdl4j-1.6.1.jar

xfire-all-1.2.6.jar

XmlSchema-1.1.jar

2. Modifique web.xml y agregue el siguiente código:

[html] ver copia simple

lt context-paramgt; lt; param-namegt.contextConfigLocationlt;/param-namegt;

lt;param-valuegt;classpath: applicationContext.xmllt;/param-valuegt

lt;/context-paramgt;

lt;listenergt;

lt;listener-classgt;org.codehaus.xfire.spring.XFireSpringServletXFireSpringServletlt;/servlet-classgt;/ servletgt;

lt;/servletgt; p>

lt;servlet-mappinggt;

lt;servlet-namegt;xfireServletlt;/servlet-namegt; p> lt;url-patterngt;/service/*lt; /url-patterngt;

lt;/servlet-mappinggt

3. Agregue el archivo de configuración Spring applicationContext.xml debajo del classpath y agregue el siguiente código:

[html] ver copia simple

lt; contexto: componente-scan base-package="my.webservice" /gt; p>

lt;! -- XFire inicio --gt

lt;

urce="classpath:org/codehaus/xfire/spring/xfire.xml" /gt;

lt; bean id="webAnnotations" class="org.codehaus.xfire.annotations.jsr181.Jsr181WebAnnotations" /gt;

lt; bean id="jsr181HandlerMapping" class="org.codehaus .xfire.spring.remoting.Jsr181HandlerMapping"gt;

lt;nombre de propiedad="xfire" ref="xfire" /gt;

lt; nombre de propiedad=" webAnnotations" ref="webAnnotations"

lt; es;! -- XFire end --gt;

4. Defina la interfaz del WebService y agregue los comentarios apropiados:

[java] ver copia simple

@WebService

p>

interfaz pública IBookService {

@WebMethod

libro público getBook()

} 5.

5. Clase de implementación de interfaz, la anotación serviceName define el nombre del servicio de publicación, endpointInterface define la interfaz implementada:

[java] ver copia simple

@Component

@ WebService(serviceName="BookService",

endpointInterface = "my.p>la clase pública BookServiceImpl implementa IBookService {

@Override

Libro público getBook() {

Libro b = nuevo Libro(1, "Java Core Ideas",

System.out.println("gt;gt;gt; gt;gt;gt; Servidor: " b);

devolver b;

}

}

}

6. Arriba Está la configuración e implementación del lado del servidor, ¿no es muy simple? Publique el proyecto en Tomcat e inícielo, ingrese en el navegador: http://127.0.0.1:8080/XFireTest/service. /BookService?wsdl (BookService se define mediante el nombre del servicio arriba), si el navegador muestra la información XML relacionada con BookService, significa que el WebService se publicó correctamente

7. Cómo llama el cliente al servicio. servidor:

(1) Utilice la llamada de interfaz, este El método requiere que el proveedor de servicios de publicación proporcione una interfaz, o generamos nuestra propia interfaz a través de wsdl.

Genere la interfaz usted mismo:

wsimport -keep -p my.client http://127.0.0.1:8080/XFireTest/service/BookService?wsdl

-keep indica que se debe mantener el archivo generado, -p especifica el nombre del paquete para el cual necesitamos generar artefactos. http://127.0.0.1:8080/XFireTest/service/BookService?wsdl es la ubicación del archivo WSDL.

wsimport se encuentra en el directorio JAVA_HOME/bin y debe agregarse a la variable de entorno PATH. Puede ejecutar los comandos anteriores directamente en cmd. Tenga en cuenta que antes de ejecutar estos comandos, primero debe ingresar el directorio donde desea generar clases (como src).

[java] Ver copia pura

@Test

public void testBookService() {

Service serviceModel = new ObjectServiceFactory(). create(IBookService.class);

String url = "http://127.0.0.1:8080/XFireTest/service/BookService"

IBookService service = null; >

intente {

servicio = (IBookService) new XFireProxyFactory().create(serviceModel, url

Libro b = service.getBook();

System.out.println("gt; gt; gt; gt; gt; gt; Cliente: "

} catch (Excepción e) {

e); .printStackTrace();

}

p>}

(2) Llamado a través de wsdl, si el valor de retorno es String, este método se puede usar normalmente Si el valor de retorno es de tipo Libro, como esta columna, el valor impreso es [#document: null] y el tipo de retorno es org.apache.xerces.dom.DocumentImpl, que debe analizarse manualmente. Cuando uso esto en mi proyecto, los datos se devuelven como xml cuando publico el servicio y el cliente los analiza usando dom4j.

[java] Ver copia pura

@Test

public void wsdlTest() lanza MalformedURLException, Exception {

Cliente cliente = nuevo Cliente(nueva URL("http://127.0.0.1:8080/XFireTest/service/BookService?wsdl"));

Objeto[] resultados = cliente.invoke("getBook", nuevo Objeto[ ] {});

System.out.println(resultados[0]);