1.见解

1.1 客户端的接口代码还一定要和服务端的接口代码一样,连注解都要一样,不够灵活

1.2 当客户端访问服务器的请求地址时,如果服务端没有对应的地址,就会报错,但是又没有cxf的异常捕获处理

1.3 address中的url是模糊匹配的

//服务端代码

2.UserBean.Java

  1. package cn.hk.bean;
  2. public class UserBean {
  3. private int id;
  4. private String userName;
  5. private String password;
  6. public UserBean(){
  7. }
  8. public UserBean(int id, String userName, String password) {
  9. super();
  10. this.id = id;
  11. this.userName = userName;
  12. this.password = password;
  13. }
  14. public int getId() {
  15. return id;
  16. }
  17. public void setId(int id) {
  18. this.id = id;
  19. }
  20. public String getUserName() {
  21. return userName;
  22. }
  23. public void setUserName(String userName) {
  24. this.userName = userName;
  25. }
  26. public String getPassword() {
  27. return password;
  28. }
  29. public void setPassword(String password) {
  30. this.password = password;
  31. }
  32. @Override
  33. public String toString() {
  34. return "UserBean [id=" + id + ", password=" + password + ", userName="
  35. + userName + "]";
  36. }
  37. }

3.IUserDao.java

  1. package cn.hk.dao;
  2. import java.util.List;
  3. import javax.jws.WebParam;
  4. import javax.jws.WebService;
  5. import cn.hk.bean.UserBean;
  6. @WebService
  7. public interface IUserDao {
  8. public UserBean getUser(@WebParam(name="id") int id);
  9. public String getUserName(int id);
  10. public List<UserBean> getUserList();
  11. }

4.IUserDaoImpl.java

  1. package cn.hk.dao.impl;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import javax.jws.WebParam;
  5. import javax.jws.WebService;
  6. import cn.hk.bean.UserBean;
  7. import cn.hk.dao.IUserDao;
  8. @WebService
  9. public class IUserDaoImpl implements IUserDao {
  10. @Override
  11. public UserBean getUser(@WebParam(name="id") int id) {
  12. return new UserBean(id,"zhangsan","zhangsan");
  13. }
  14. @Override
  15. public List<UserBean> getUserList() {
  16. List<UserBean> list=new ArrayList<UserBean>();
  17. UserBean u1=new UserBean(1,"lisi","lisi");
  18. list.add(u1);
  19. u1=new UserBean(2,"wanwu","wanwu");
  20. list.add(u1);
  21. u1=new UserBean(3,"tiantian","tiantian");
  22. list.add(u1);
  23. return list;
  24. }
  25. @Override
  26. public String getUserName(int id) {
  27. return "id:"+id+"name:zhangsan";
  28. }
  29. }

5.applicationContext.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:aop="http://www.springframework.org/schema/aop"
  5. xmlns:tx="http://www.springframework.org/schema/tx"
  6. xmlns:jaxws="http://cxf.apache.org/jaxws"
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans
  8. http://www.springframework.org/schema/beans/spring-beans.xsd
  9. http://www.springframework.org/schema/tx
  10. http://www.springframework.org/schema/tx/spring-tx.xsd
  11. http://www.springframework.org/schema/aop
  12. http://www.springframework.org/schema/aop/spring-aop.xsd
  13. http://cxf.apache.org/jaxws
  14. http://cxf.apache.org/schemas/jaxws.xsd">
  15. <import resource="classpath:META-INF/cxf/cxf.xml"/>
  16. <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
  17. <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
  18. <import resource="classpath:META-INF/cxf/cxf-extension-javascript-client.xml"/>
  19. <bean id="userDaoService" class="cn.hk.dao.impl.IUserDaoImpl"></bean>
  20. <bean id="customInFaultInterceptor" class="cn.hk.interceptor.CustomInFaultInterceptor">
  21. <constructor-arg value="send"/>
  22. </bean>
  23. <jaxws:server address="/users" serviceClass="cn.hk.dao.impl.IUserDaoImpl" id="userService"   >
  24. <jaxws:serviceBean >
  25. <ref bean="userDaoService"/>
  26. </jaxws:serviceBean>
  27. <jaxws:inInterceptors>
  28. <ref bean="customInFaultInterceptor"/>
  29. </jaxws:inInterceptors>
  30. <jaxws:inFaultInterceptors>
  31. <ref bean="customInFaultInterceptor"/>
  32. </jaxws:inFaultInterceptors>
  33. <jaxws:outInterceptors>
  34. <ref bean="customInFaultInterceptor"/>
  35. </jaxws:outInterceptors>
  36. <jaxws:outFaultInterceptors>
  37. <ref bean="customInFaultInterceptor"/>
  38. </jaxws:outFaultInterceptors>
  39. </jaxws:server>
  40. </beans>

6.web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  3. <context-param>
  4. <param-name>contextConfigLocation</param-name>
  5. <param-value>classpath:applicationContext.xml</param-value>
  6. </context-param>
  7. <listener>
  8. <listener-class>
  9. org.springframework.web.context.ContextLoaderListener
  10. </listener-class>
  11. </listener>
  12. <servlet>
  13. <servlet-name>CXFServlet</servlet-name>
  14. <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
  15. <load-on-startup>1</load-on-startup>
  16. </servlet>
  17. <servlet-mapping>
  18. <servlet-name>CXFServlet</servlet-name>
  19. <url-pattern>/services/*</url-pattern>
  20. </servlet-mapping>
  21. <display-name>cxfISpring</display-name>
  22. <welcome-file-list>
  23. <welcome-file>index.jsp</welcome-file>
  24. </welcome-file-list>
  25. </web-app>

7.CustomInFaultInterceptor.java

  1. package cn.hk.interceptor;
  2. import org.apache.cxf.message.Message;
  3. import org.apache.cxf.phase.AbstractPhaseInterceptor;
  4. public class CustomInFaultInterceptor extends AbstractPhaseInterceptor<Message> {
  5. public CustomInFaultInterceptor(String phase){
  6. super(phase);
  7. }
  8. @Override
  9. public void handleMessage(Message message)  {
  10. System.out.println("getInMessage------------------"+message.getExchange().getInMessage());
  11. System.out.println("getInFaultMessage------------------"+message.getExchange().getInFaultMessage());
  12. System.out.println("getOutMessage------------------"+message.getExchange().getOutMessage());
  13. System.out.println("getOutFaultMessage------------------"+message.getExchange().getOutFaultMessage());
  14. }
  15. }

//客户端代码

1.UserBean.java

  1. package cn.hk.bean;
  2. public class UserBean {
  3. private int id;
  4. private String userName;
  5. private String password;
  6. public UserBean(){
  7. }
  8. public UserBean(int id, String userName, String password) {
  9. super();
  10. this.id = id;
  11. this.userName = userName;
  12. this.password = password;
  13. }
  14. public int getId() {
  15. return id;
  16. }
  17. public void setId(int id) {
  18. this.id = id;
  19. }
  20. public String getUserName() {
  21. return userName;
  22. }
  23. public void setUserName(String userName) {
  24. this.userName = userName;
  25. }
  26. public String getPassword() {
  27. return password;
  28. }
  29. public void setPassword(String password) {
  30. this.password = password;
  31. }
  32. @Override
  33. public String toString() {
  34. return "UserBean [id=" + id + ", password=" + password + ", userName="
  35. + userName + "]";
  36. }
  37. }

2.IUserDao.java

  1. package cn.hk.dao;
  2. import java.util.List;
  3. import javax.jws.WebParam;
  4. import javax.jws.WebService;
  5. import cn.hk.bean.UserBean;
  6. @WebService
  7. public interface IUserDao {
  8. public UserBean getUser(@WebParam(name="id") String  id);
  9. public String getUserName(String id);
  10. public List<UserBean> getUserList();
  11. }

3.InvokeUsersServices.java 调用

  1. package cn.webservice.client;
  2. import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
  3. import cn.hk.dao.IUserDao;
  4. public class InvokeUsersServices {
  5. public static void main(String[] args) {
  6. JaxWsProxyFactoryBean factory=new JaxWsProxyFactoryBean();
  7. factory.setServiceClass(IUserDao.class);
  8. factory.setAddress("http://localhost:8085/cxfISprint/services/userss");
  9. IUserDao userDao=(IUserDao)factory.create();
  10. System.out.println(userDao.getUser("1"));
  11. System.out.println(userDao.getUserName("12"));
  12. System.out.println(userDao.getUserList().size());
  13. }
  14. }

CXF整合spring之JaxWsProxyFactoryBean调用异常

1.

Exception in thread "main" java.lang.ClassCastException: org.apache.cxf.endpoint.ClientImpl cannot be cast to cn.hk.dao.IUserDao

at cn.webservice.client.InvokeUsersServices.main(InvokeUsersServices.java:13)

cause 是JaxWsProxyFactoryBean对象,不是JaxWsClientFactoryBean对象

2.

Exception in thread "main" javax.xml.ws.WebServiceException: Could not find wsdl:binding operation info for web method getUserName.

at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:113)

at $Proxy17.getUserName(Unknown Source)

at cn.webservice.client.InvokeUsersServices.main(InvokeUsersServices.java:14)

cause 客户端的接口也庶加@WebService注解

3.

object is not an instance of declaring class while invoking public java.lang.String cn.hk.dao.impl.IUserDaoImpl.getUserName(int) with params [10].

... 2 more

cause jaxws:serviceBean一定要引用接口的实现类

CXF整合Spring之JaxWsProxyFactoryBean调用的更多相关文章

  1. WebService—CXF整合Spring实现接口发布和调用过程

    一.CXF整合Spring实现接口发布 发布过程如下: 1.引入jar包(基于maven管理) <!-- cxf --> <dependency> <groupId> ...

  2. 【WebService】——CXF整合Spring

    相关博客: [WebService]--入门实例 [WebService]--SOAP.WSDL和UDDI 前言: 之前的几篇博客基本上都是使用jdk来实现WebService的调用,没有使用任何框架 ...

  3. webservice 服务端例子+客户端例子+CXF整合spring服务端测试+生成wsdl文件 +cxf客户端代码自动生成

    首先到CXF官网及spring官网下载相关jar架包,这个不多说.webservice是干嘛用的也不多说. 入门例子 模拟新增一个用户,并返回新增结果,成功还是失败. 大概的目录如上,很简单. Res ...

  4. 【Java EE 学习 81】【CXF框架】【CXF整合Spring】

    一.CXF简介 CXF是Apache公司下的项目,CXF=Celtix+Xfire:它支持soap1.1.soap1.2,而且能够和spring进行快速无缝整合. 另外jax-ws是Sun公司发布的一 ...

  5. CXF整合Spring开发WebService

    刚开始学webservice时就听说了cxf,一直没有尝试过,这两天试了一下,还不错,总结如下: 要使用cxf当然是要先去apache下载cxf,下载完成之后,先要配置环境变量,有以下三步: 1.打开 ...

  6. cxf整合spring错误为:cvc-complex-type.2.4.c

    cxf整合spring,报错信息如下: Multiple annotations found at this line:- cvc-complex-type.2.4.c: The matching w ...

  7. cxf整合spring中出现的错误

    Caused by: java.lang.ClassNotFoundException: javax.wsdl.extensions.ElementExtensible at org.apache.c ...

  8. CXF整合Spring发布WebService实例

    一.说明: 上一篇简单介绍了CXF以及如何使用CXF来发布一个简单的WebService服务,并且介绍了客户端的调用. 这一篇介绍如何使用CXF与spring在Web项目中来发布WebService服 ...

  9. CXF整合spring

    近公司需要弄webservics,还说不用框架整合(提倡使用hessian,他们既然说与操作系统有兼容问题,由于人员单薄,不得不屈服,哎),我想了老半天没弄明白他说的不用框架整合spring,尝试过直 ...

随机推荐

  1. JVM基础学习之基本概念、可见性与同步

    开发高性能并发应用不是一件容易的事情.这类应用的例子包括高性能Web服务器.游戏服务器和搜索引擎爬虫等.这样的应用可能需要同时处理成千上万个请求.对于这样的应用,一般采用多线程或事件驱动的 架构 .对 ...

  2. swift 继承和构造器

    继承 class Vehicle { var numberOfWheels: Int var maxPassengers: Int func description() -> String { ...

  3. visual studio 2013 触发挂起事件

    在 VS2013 中调试 winddows phone 或者 win rt 程序的时候,需要手动触发 “挂起” 事件. 如果找不到这个按钮: 1.打开菜单栏中的 “自定义” 对话框: 2.选择调试位置 ...

  4. android 获取屏幕高度和宽度 的方法

    我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现.下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即可获取屏幕的尺寸.    在一个Activity的onC ...

  5. Apache Avro:一个新的数据交换格式

    原文: http://blog.cloudera.com/blog/2009/11/avro-a-new-format-for-data-interchange/ 注:由于个人英语能力有限,翻译不准确 ...

  6. lua工具库penlight--03字符串

    字符串提取函数 这些方法也是从Python借鉴来的,但索引从1开始.stringx定义了一些函数如isalpha和isdigit, 用来判断字母和数字:startswith和endswith可以方便用 ...

  7. Ubuntu 下添加OpenERP command 快捷启动方式

    编辑home目录下的.bashrc文件 alias xjerp="~/odoo/xj/openerp-server -r openerp --addons-path='~/odoo/xj/o ...

  8. 虚拟机和Docker的异同

    [摘要]各种虚拟机技术开启了云计算时代:而Docker,作为下一代虚拟化技术,正在改变我们开发.测试.部署应用的方式.那虚拟机与Docker究竟有何不同呢? 首先,大家需要明确一点,Docker容器不 ...

  9. Differential Geometry之第六章平面曲线的整体性质

    第六章.平面曲线的整体性质 1.平面的闭曲线 1.1.切线的旋转指数定理 1.2.等周不等式与圆的几何特性 ,其中 2.平面的凸曲线 支撑函数: 2.1.Minkowski问题 2.2.四顶点定理

  10. linux下解压 tar.bz2

    tar xvfj xxx.tar.bz2 转自: http://www.360doc.com/content/12/0907/16/8006573_234845810.shtml