这里不介绍原理,只是记录自己spring+cxf的开发过程和遇到的问题

场景:第三方公司需要调用我们的业务系统,以xml报文的形式传递数据,之后我们解析报文存储到我们数据库生成业务单据;

WebService的框架由多种,这里选cxf,与Spring的集成比较好;

直接看代码

1 项目用的maven,首先添加依赖(这个依赖啊  ,教程引用几个的都有,这个看需要吧,我是用了四个)

          <dependency><groupId>org.apache.cxf</groupId><artifactId>cxf</artifactId><version>2.7.11</version><type>pom</type></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-frontend-jaxws</artifactId><version>2.7.11</version></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-transports-http</artifactId><version>2.7.11</version></dependency><dependency>  <groupId>org.apache.cxf</groupId>  <artifactId>cxf-rt-transports-http-jetty</artifactId>  <version>2.7.11</version>  </dependency>

2 配置web.xml,在原来基础上添加(这里我只是添加cxf配置,spring中基础的配置之前项目中肯定有,像什么context-param什么的我想你们肯定早就有了)

 <!-- cxf --><servlet>  <servlet-name>CXFServlet</servlet-name>  <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>  </servlet>  <servlet-mapping>  <servlet-name>CXFServlet</servlet-name>  <url-pattern>/webservice/*</url-pattern>  </servlet-mapping>  

3 配置applicationContext.xml(还是在原来的基础上添加如下)

3.1 首先在该xml添加命名空间,这是我在原来基础上添加的(红色部分是我自己添加的)

  

3.2 在原来基础上添加

 <!-- cxf配置 --><import resource="classpath:META-INF/cxf/cxf.xml" />  <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />  <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />  <bean id="reimBillHandler" class="com.ufgov.lp.xml.sax.handler.ReimBillHandler" /><bean id="reciveBillServiceImpl" class="com.ufgov.lp.bill.webservice.impl.ReciveBillServiceImpl">  <property name="reimBillHandler" ref="reimBillHandler"></property>  </bean> <jaxws:endpoint id="reciveBillService"  implementor="#reciveBillServiceImpl" address="/reciveBillService" /> <!-- cxf配置结束 -->

 接下来开始写代码

4 定义接口

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;/*** * <p>接收报文接口</p>* @author shangcg* @since 2017年11月1日*/@WebService
public interface ReciveBillService {@WebMethod  public String request(@WebParam(name = "xmlStr") String xmlStr);   }

5 创建实现类

import javax.annotation.Resource;
import javax.jws.WebService;import com.ufgov.lp.bill.webservice.ReciveBillService;
import com.ufgov.lp.bill.webservice.bean.LpBizBillDataCollect;
import com.ufgov.lp.xml.sax.handler.ReimBillHandler;@WebService
public class ReciveBillServiceImpl implements ReciveBillService {@Resource ReimBillHandler reimBillHandler;@Overridepublic String request(String xmlStr) {try {/**与数据库结构一致的javaBean对象*/LpBizBillDataCollect lpBizBillDataCollect  = new LpBizBillDataCollect();//把传过来的报文直接装到对象中(实际上业务系统一般得对XML解析,这里不说解析)
      lpBizBillDataCollect.setField01(xmlStr);//插入数据库(reimBillHandler注入进来才能调用方法)
      reimBillHandler.excuteBillInsert(lpBizBillDataCollect);} catch (Exception e) {e.printStackTrace();}return "这里是返回的报文";}public ReimBillHandler getReimBillHandler() {return reimBillHandler;}//注意这里的set方法,不然稍后配置bean后会注入不进来public void setReimBillHandler(ReimBillHandler reimBillHandler) {this.reimBillHandler = reimBillHandler;}}

6看ReimBillHandler (这个类就是本来业务系统已经存在的用@service标注的类,成功注入该类后,如果该类在注入其他类咱们就可以不用管了)

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import com.ufgov.lp.bill.dao.LpBizBillDao;
import com.ufgov.lp.bill.webservice.bean.LpBizBillDataCollect;/*** * <p>注入LpBizBillDao插入数据</p>* @author shangcg* @since 2017年11月3日*/
@Service
public class ReimBillHandler{@AutowiredLpBizBillDao lpBizBillDao;/**插入数据库表数据*/public int excuteBillInsert(LpBizBillDataCollect lpBizBillDataCollect){return lpBizBillDao.insert(lpBizBillDataCollect);//插入数据库数据
  }}

说一下这些过程中我遇到的错误:

1 spring的bean注入不进来  解决:以@WebService注解的类,引用spring中bean事需要干两件事,第一是用@Resource注解注入,不是@autowire;   第二必须有set方法 ; 第三是ApplicationContext.xm必须配置bean和引用

转载于:https://www.cnblogs.com/cs-forget/p/7811400.html

spring+cxf 开发webService(主要是记录遇到spring bean注入不进来的解决方法)相关推荐

  1. 使用Spring+CXF开发WebService

    Apache CXF 提供方便的Spring整合方法,可以通过注解.Spring标签式配置来暴露Web Services和消费Web Services 各种类型的Annotation.@WebServ ...

  2. Spring+CXF开发WebService

    ps:所有源码下载地址: http://download.csdn.net/download/gaowenhui2008/7977097 准备工作: 下载spring,apache-cxf,soapU ...

  3. cxf开发webservice服务端怎么返回固定的报文格式_Spring boot webservice怎么玩? 第277篇...

    相关历史文章(阅读本文之前,您可能需要先看下之前的系列?) WebService SOAP概述 - 第275篇 WSDL是什么"Lese" - 第276篇 一.前言 当官不为民做主 ...

  4. 使用cxf开发webservice应用时抛出异常

    在使用cxf开发webservice应用时,报出了类似下面的错误 JAXB: [javax.xml.bind.UnmarshalException: unexpected element (uri:& ...

  5. Java笔记-使用CXF开发WebService服务器

    这里使用CXF开发WebService,要引入下面这个Maven <dependency><groupId>org.apache.cxf</groupId>< ...

  6. 开发chrome 插件, background.js中 console log 看不到解决方法

    开发chrome 插件, background.js中 console log 看不到解决方法 参考文章: (1)开发chrome 插件, background.js中 console log 看不到 ...

  7. 微信开发学习 问题1: 网页授权问题 “该连接无法访问” 解决方法

    微信开发学习 问题1: 网页授权问题 "该连接无法访问" 解决方法 参考文章: (1)微信开发学习 问题1: 网页授权问题 "该连接无法访问" 解决方法 (2) ...

  8. 记录一次Anaconda安装Spyder失败及解决方法

    记录一次Anaconda安装Spyder失败及解决方法 之前换了电脑硬盘,需要重装anaconda.安装成功以后,在base环境下安装并打开Spyder成功.之后新建了一个环境,在此环境中安装Spyd ...

  9. Spring boot+CXF开发WebService Demo

    本文转载自: https://www.cnblogs.com/fuxin41/p/6289162.html 作者:fuxin41 转载请注明该声明. 最近工作中需要用到webservice,而且结合s ...

最新文章

  1. Uploadify jquery+falsh+UploadHandler.ashx
  2. 欧洲超高速网比宽带快万倍 几秒下载一部电影
  3. 《企业云桌面实施》-小技巧-04-VMWare Workstation-虚拟机强行关机开机
  4. 网站优化人员必须具备的几个工作原则
  5. 要看懂MATLAB的Help需要积累的英文词汇!
  6. 世界上最浪费时间的三件事
  7. 5.3 个体条件期望(Individual Conditional Expectation, ICE)
  8. Sonar 质量扫描的输出日志--对应源码的跟踪(一){源码解析sonar-scanner-maven3.2}
  9. AliOS Things SIG BLE Mesh网络的介绍和搭建
  10. java打印日期序列,Java GSON-日期格式
  11. 常用配置文件格式比较
  12. Python打印指定日期的日历
  13. Hiho1384 倍增+归并排序
  14. Error in library(patRoon) : 不存在叫‘patRoon‘这个名字的程辑包
  15. python 设计单张扑克牌类Card 设计整副扑克牌类Cards
  16. 做前端的你,如何克服技术焦虑?
  17. java读取 png_JAVA如何操作PNG图片
  18. Wide Deep模型的理解及实战(Tensorflow)
  19. JZOJ B组【GDKOI2014】壕壕的寒假作业
  20. 搜索引擎快速排名的黑帽技术【揭秘SEO黑帽技术】

热门文章

  1. Android点赞音效播放
  2. NSUserDefaults设置bool值重新启动后bool仅仅设置丢失问题
  3. Akka Cluster原理与应用
  4. iOS学习笔记---oc语言第八天
  5. 发票管理及打印系统的部分代码
  6. sqlserver 查询语句执行历史
  7. 在nodejs中的集成虹软人脸识别
  8. 我的R之路:参数假设检验
  9. 2014年12月日本語能力試験N3聴解部分
  10. 三星嵌入式开发平台 三星Cortex-A9 4412 POP与SCP对比