CXF的第一个例子

1.4.1编写服务端代码

步骤

  • 创建一个java工程
  • 导入cxf的jar包
  • 只有导入一个cxf-manifest.jar就可以,内部会导入所有jarIEDA就不要理】
  • 创建天气服务接口和实现类
  • 在接口上添加@webservice(与jax-ws不同,它是在实现类上添加的)

CXF------------第一个例子

CXF------------第一个例子

 

 

 

发布webservice服务:

使用JaxWsServerFactoryBean 来发布(soap12)

加入拦截器,拦截请求

bean.getInInterceptors().add(new LoggingInInterceptor());

bean.getOutInterceptors().add(new LoggingOutInterceptor());

import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

public class WeatherServer {

 

     public static void main(String[] args) {

          //创建服务工厂Bean

          JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();

          //设置服务实现对象

          factoryBean.setServiceBean(new WeatherIntefaceImpl());

          //设置服务发布地址

          factoryBean.setAddress("http://127.0.0.1:12345/weather");

          //创建服务

          factoryBean.create();

     }

}

 

 

14.2 wsimport生成客户端面代码

命令:wsimport -s . http://127.0.0.1:12345/weather?wsdl

14.3 wsdl2java生成客户端面代码

命令:wsdl2java –d . http://127.0.0.1:12345/weather?wsdl

 

  1. wsdl2javawindodw jdk1.8的执行失败原因

 

  1. Windodw jdk1.8的版本,使用wsdl2java未能成功
  2. 因为jrejdk都用的是jdk8, 而刚好jaxb-xjc-2.2.7jdk8有这个bug
  3. 解决办法

Create a file named jaxp.properties (if it doesn't exist) under /path/to/jdk1.8.0/jre/lib and then write this line in it:
javax.xml.accessExternalSchema = all

CXF------------第一个例子

 

1.4.4编写客户端代码

掌握两种方式:JAX-WS和CXF的方式

CXF------------第一个例子

package com.gyf.test;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

import com.gyf.weather.WeatherInteface;

public class Demo{

     public static void main(String[] args) {

          //创建代理工厂

          JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();

         

          //设置 服务接口类型

          factoryBean.setServiceClass(WeatherInteface.class);

         

          //设置服务器地址

          factoryBean.setAddress("http://127.0.0.1:12345/weather?wsdl");

         

          WeatherInteface weather = factoryBean.create(WeatherInteface.class);

         

          System.out.println(weather.queryWeather("北京"));

     }

}

 

1.4.5如何生成soap1.2的webservice

只需要在接口上添加BindingType即可,如下图

CXF------------第一个例子

相关文章: