方式一:
配置CXF环境变量,用wsdl2java工具自动产生代码。项目结构目录如下:
其中com.yq.webservice下面的所有的java类都是wsdl2java工具自动产生的。
JaxWsProxyFactoryBean factoryBean = newJaxWsProxyFactoryBean();
factoryBean.getInInterceptors().add(newLoggingInInterceptor());
factoryBean.getOutInterceptors().add(newLoggingOutInterceptor());
factoryBean.setServiceClass(HelloWorldDao.class);
factoryBean.setAddress(":8080/WebServiceTest/webservice/helloworld?wsdl");
HelloWorldDao impl=(HelloWorldDao) factoryBean.create();
impl.sayHello("zhengmo");
其中:
http//:8080/WebServiceTest/webservice/helloworld?wsdl是服务端提供的web service的端口地址。
上面的代码就是WebServiceClient.java中main方法里面的代码。
方式二:
任然需要先用wsdl2java工具生成相应的java代码。
HelloWorldDaoService factory = new HelloWorldDaoService();
HelloWorldDao helloWorldDao = factory.getHelloWorldDaoPort();
helloWorldDao.sayHello("zhengmo");
方式三:
最后一种方式不需要使用wsdl2java工具在客户端产生代码。
JaxWsDynamicClientFactory dcf =JaxWsDynamicClientFactory.newInstance();
String wsUrl= "http//:8080/WebServiceTest/webservice/helloworld?wsdl";
Client client=dcf.createClient(wsUrl);
String method= "sayHello";//webservice的方法名
Object[] result = null;try{
result= client.invoke(method, "zhengmo");//调用webservice
} catch(Exception e) {
e.printStackTrace();
}
CXF提供了很多client端的调用方法。这里让你快速了解这些选择,帮助你判断使用哪种。
参见:
源代码主体使用PacktPub.Apache.CXF.Web.Service.Development.Dec.2009书中的代码。本例中,将5种调用方式集中在一个工程中,并使用Maven重组的调用方式。
本例下载地址:
WSDL2Java generated Client
JAX-WS Proxy
JAX-WS Dispatch APIs
JAX-WS Client Proxy
Dynamic Client
Reflection API
Service Model API
在这里Dispatch本节内容不做介绍。
WSDL2Java generated Client
也就是依据wsdl文件生成java客户端,直接调用。查看调用方式,也就是OrderProce