在大多数情况下我们用webService调用接口,完成报文的传输,报文格式一般为xml。
1、首先在 web.xml 配置
2、创建接口
import javax.jws.WebService;
@WebService(targetNamespace = "http://impl.service.cxf.zhu.com/")
public interface FindProduct {
public String findAllProduct();
}
3、创建实现类
@WebService(targetNamespace="http://impl.service.cxf.zhu.com/")
public class FindProductImpl implements FindProduct {
@Autowired
public ProductMapper mapper
@Override
public String findAllProduct() {
List
StringBuilder sb = new StringBuilder();
sb.append("\n");
sb.append("\n");
for (T_Product product : allProduct) {
sb.append("
sb.append("
sb.append("
sb.append(" \n");
}
sb.append("\n");
return sb.toString();
}
注意:接口和实现类的targetNamespace 命名空间一定要一样,这个非常简单,可以先不写,等配置完成后再copy上去
4、与spring集成
在spring配置文件中配置如下:
头文件中加入:
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd"
要暴露的接口:在访问时 通过address访问
implementor="com.zhu.cxf.service.impl.FindProductImpl">
5、访问webService接口
然后在浏览器上访问 http://localhost:8080/springMVC1_1/WS/findProduct?wsdl 本地地址+项目名+访问路径(findProduct为暴露的接口地址)+?wsdl
显示如上图即配置成功,在图中第三行可以清晰的看到targetNamespace,copy到接口和实现类的webService注解中。
6、创建客户端,动态调用webService接口
/*
*获取工厂实例
*创建客户端
*/
JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance();
Client createClient = factory.createClient("http://localhost:8080/springMVC1_1/WS/findProduct?wsdl");
Object[] invoke = null;
try {
invoke = createClient.invoke("要调用的方法名","该方法所需的参数,没有参数可不写");
} catch (Exception e) {
e.printStackTrace();
}
String xml = invoke[0].toString();//xml 即为该接口方法的返回值