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

本文档详细介绍了使用CXF框架创建第一个Web服务的步骤,包括服务端代码编写,通过wsimport和wsdl2java工具生成客户端代码,以及如何处理SOAP1.2的Web服务。同时,提到了在Windows JDK1.8中遇到的问题及其解决方案。
摘要由CSDN通过智能技术生成

CXF的第一个例子

1.4.1编写服务端代码

步骤

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

 

 

 

发布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

 

1.4.4编写客户端代码

掌握两种方式:JAX-WS和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即可,如下图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值