primavera cxf integración, facilidad de escritura cliente webService, servidor

WebService es un lenguaje de programación cruz, comunicación remota de sistema operativo multiplataforma tecnología, ampliamente utilizado en el desarrollo, la interfaz, la integración real del sistema.

el servidor

  1. elemento de la lista

Añadir la dependencia maven
dependencia específica del proyecto, además de la primavera, tenemos que añadir los dos siguientes dependencias.

    <dependency>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-rt-frontend-jaxws</artifactId>
      <version>3.3.5</version>
    </dependency>
    <dependency>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-rt-transports-http</artifactId>
      <version>3.3.5</version>
      <scope>compile</scope>
    </dependency>
  1. Configuración de web.xml

Además de la configuración de resorte convencional, donde la necesidad de añadir la configuración cxfServlet.

<!--  1.cxfServlet配置-->
  <servlet>
    <servlet-name>cXFServlet</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>cXFServlet</servlet-name>
    <url-pattern>/webservice/*</url-pattern>
  </servlet-mapping>
<!--  2.配置spring容器-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
<!--    3.监听器-->
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  1. webService interfaz de escritura y clase de implementación de
    clase de interfaz IHelloService
    Interfaces necesitan para marcar comentario @WebService
@WebService
public interface IHelloService {

    /**
     *     对外发布服务接口的方法
     *      @param name
     */
    public String welcome(String name);
}

clase de interfaz HelloServiceImpl

public class HelloServiceImpl implements IHelloService {
    @Override
    public String welcome(String name) {
        return "welcome to webService "+name;
    }
}

  1. ApplicationContext.xml dispuesta
    en el espacio de nombres relacionados para añadir cxf XSD, y la información de configuración correspondiente al servicio, incluyendo la dirección de servicio, servicios, etc.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:cxf="http://cxf.apache.org/jaxws"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://cxf.apache.org/jaxws
        http://cxf.apache.org/schemas/jaxws.xsd">
    <cxf:server address="/hello">
        <jaxws:serviceBean>
            <bean class="service.impl.HelloServiceImpl"></bean>
        </jaxws:serviceBean>
    </cxf:server>
</beans>
  1. Iniciar un servicio web, probar
    el servicio se ha iniciado satisfactoriamente, podemos acceder en su navegador: http://localhost:8081/webservice/hello?wsdldonde http://localhost:8081es nuestra entrada de acceso del servidor, /webserviceen nuestro web.xmlperfil de configuración cxfServletcorrespondiente servlet-mapping, /hellopara el servicio de acceso a la addressdirección, el último también es necesario añadir ?wsdlel acceso especificación WSDL.
    La imagen muestra la pantalla es decir, navegador, el navegador Firefox Probé es un espacio en blanco, coherente con el correspondiente contenido f12 para el siguiente contenido.
    Aquí Insertar imagen Descripcióncliente

  2. Añadir cxf sus dependencias

  3. La introducción de la clase de interfaz de servicio correspondiente al tipo
    aquí, tenemos que añadir el servicio hasta el final IHelloService HelloServiceImpl y código de cliente.Además, el cliente o servidor, interfaces de IHelloService se requieren anotaciones @WebService etiquetado.

  4. cliente applicationContext.xml Preparado
    interfaz de servidor define el tipo de servicio, dirección de servicio, correspondiente a la misma, las necesidades de los clientes para configurarse la misma dirección de servicio, el tipo de interfaz de servicio.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:cxf="http://cxf.apache.org/jaxws"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://cxf.apache.org/jaxws
        http://cxf.apache.org/schemas/jaxws.xsd"
    <jaxws:client id="helloService" serviceClass="service.impl.HelloServiceImpl" address="http://localhost:8081/webservice/hello"></jaxws:client>
</beans>
  1. pruebas de unidad de escritura
    usados en este documento para probar la unidad de resorte, por lo tanto, no sólo para la importación junit-dependiente, pero también spring-testdependiente.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class Client {

    //注入对象
    @Resource
    private HelloServiceImpl helloService;
    @Test
    public void doClientRemote(){
        System.out.println(helloService);
        String content = helloService.welcome("Elaine");
        System.out.println(content);
    }

}
  1. Muestra los resultados
org.apache.cxf.jaxws.JaxWsClientProxy@45905bff
welcome to webService Elaine

Se puede encontrar, HelloServiceImpl objetos obtenemos un objeto proxy porque las interfaces pertinentes de antelación, es de naturaleza dinámica JDK aplicación proxy.
Al visualizar la salida del servidor, hay una advertencia

org.apache.cxf.interceptor.Fault: Unexpected wrapper element {http://impl.service/}welcome found.   Expected {http://service/}welcome.

Bien entendido, nos damos cuenta de la clase, espero que CxF directamente tipo de interfaz en la adquisición objeto de tipo de prueba de unidad proxy. Reemplazar con:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class Client {

    //注入对象
    @Resource
    private IHelloService helloService;
    @Test
    public void doClientRemote(){
        System.out.println(helloService);
        String content = helloService.welcome("Elaine");
        System.out.println(content);
    }

}

Repetición de la prueba, sin previo aviso, no hay error.

Publicado 98 artículos originales · elogios ganado 13 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/qq_41885819/article/details/104868395
Recomendado
Clasificación