CXF整合Spring之JaxWsProxyFactoryBean调用

//服务端代码

1.UserBean.Java

 

Java代码  收藏代码

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

 

 2.IUserDao.java

 

Java代码  收藏代码

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

 

3.IUserDaoImpl.java

Java代码  收藏代码

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

4.applicationContext.xml

 

Xml代码  收藏代码

  1.   
  2.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xmlns:aop="http://www.springframework.org/schema/aop"  
  4.     xmlns:tx="http://www.springframework.org/schema/tx"  
  5.     xmlns:jaxws="http://cxf.apache.org/jaxws"   
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans   
  7.     http://www.springframework.org/schema/beans/spring-beans.xsd   
  8.     http://www.springframework.org/schema/tx   
  9.     http://www.springframework.org/schema/tx/spring-tx.xsd   
  10.     http://www.springframework.org/schema/aop   
  11.     http://www.springframework.org/schema/aop/spring-aop.xsd  
  12.     http://cxf.apache.org/jaxws   
  13.     http://cxf.apache.org/schemas/jaxws.xsd">  
  14.       
  15.       
  16.       
  17.                      
  18.       
  19.        
  20.       
  21.   
  22.       
  23.           
  24.       
  25.       
  26.               
  27.                   
  28.               
  29.               
  30.                   
  31.               
  32.               
  33.                   
  34.               
  35.               
  36.                   
  37.               
  38.               
  39.                   
  40.               
  41.               
  42.       
  43.       
  44.   

5.web.xml

 

Xml代码  收藏代码

  1.   
  2.   
  3.       
  4.         contextConfigLocation  
  5.         classpath:applicationContext.xml  
  6.       
  7.       
  8.           
  9.             org.springframework.web.context.ContextLoaderListener  
  10.           
  11.          
  12.       
  13.       
  14.         CXFServlet  
  15.         org.apache.cxf.transport.servlet.CXFServlet  
  16.         1  
  17.       
  18.       
  19.         CXFServlet  
  20.         /services/*  
  21.       
  22.     cxfISpring  
  23.       
  24.         index.jsp        
  25.       
  26.   

 

6.CustomInFaultInterceptor.java

 

Java代码  收藏代码

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

 //客户端代码

1.UserBean.java

 

Java代码  收藏代码

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

 2.IUserDao.java

 

Java代码  收藏代码

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

 3.InvokeUsersServices.java 调用

 

Java代码  收藏代码

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

 

 

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一定要引用接口的实现类

你可能感兴趣的:(接口,cx)