spring boot 集成WebService Cxf简单实例(soap)

这里是一个简单的例子

服务端pom文件如下

  4.0.0
  cxf
  cxf
  0.0.1-SNAPSHOT
  
	org.springframework.boot
        spring-boot-starter-parent
	1.5.9.RELEASE
  
  
        1.8
        UTF-8
  
  
	
    	org.apache.cxf
    	cxf-spring-boot-starter-jaxws
    	3.1.12
	
  

这里只依赖可一个Cxf组件,服务端配置类如下:

@Configuration
public class TestConfig {
        //这里有默认值,如果不配置默认是/services/*
	@Bean
	public ServletRegistrationBean dispatcherServlet() {
	    return new ServletRegistrationBean(new CXFServlet(), "/test/*");
	  }
	@Bean(name = Bus.DEFAULT_BUS_ID)
	public SpringBus springBus() {
	    return new SpringBus();
	}
	@Bean
	public CxfService cxfService() {
	return new CxfServiceImpl();
	}
	@Bean
	public Endpoint endpoint() {
	EndpointImpl endpoint = new EndpointImpl(springBus(), cxfService());
	endpoint.publish("/user");
	return endpoint;
	}

}

服务接口类如下

@WebService(targetNamespace="http://cxf.cgj")
public interface CxfService {
    @WebMethod(operationName="sayHello")
    String sayHello(@WebParam(name="User") User user);
}
服务接口实现类如下
@WebService(targetNamespace="http://cxf.cgj",endpointInterface="cgj.cxf.CxfService")
public class CxfServiceImpl implements CxfService {
	@Override
	public String sayHello(User user) {
		return "hello "+ user.toString();
	}

}
这里@WebService注解标明是一个服务类,targetNamespace指发布的命名空间,接口和实现类必须一致要不然会报错,如果不指定默认是当前包路径;endpointInterface指发布的哪个类的方法,这里指定接口的路径,表示对外发布接口中的方法,如果不指定默认发布当前类的所有方法(注意实现类比接口方法多的情况);@WebMethod修饰一个发布的方法,可以改方法名或者排除不发布;
这里传递的是javaBean类型,这里还有一点,必须保证服务端的User与客户端的User在同一包下,不然会报错。

客户端pom与服务端一致,客户端代码如下

public static void main(String[] args) throws Exception {
		JaxWsDynamicClientFactory dcf =JaxWsDynamicClientFactory.newInstance();
		org.apache.cxf.endpoint.Client client =dcf.createClient("http://localhost:8080/test/user?wsdl");
		User user=new User();
		Body body=new Body();
		body.setGender("男");
		user.setBody(body);
		Object[] objects=client.invoke("sayHello",user);
		System.out.println("*****"+objects[0].toString());
	}
输出结果如下

hello User [sysHead=null, body=Body [name=null, gender=男]]

你可能感兴趣的:(WebService)