作者:@展云
本文为作者原创,转载请注明出处:https://www.cnblogs.com/zhanxiaoyun/p/7942902.html
目录
一、CXF与Spring整合(jaxws:endpoint形式配置)
1.新建一个maven项目
2.web.xml文件中配置CXFServlet以及Spring容器,配置Spring的配置文件,配置webservice的配置文件
二、客户端调用(spring配置文件形式,不需要生成客户端代码)
1.spring配置文件信息
2.写对应接口信息
3.加载Spring的配置文件进行测试
4.需要的jar包
一、CXF与Spring整合(jaxws:endpoint形式配置)
工具要点:idea、maven
1.新建一个maven项目
pom.xml
2.web.xml文件中配置CXFServlet以及Spring容器,配置Spring的配置文件,配置webservice的配置文件
web.xml:
web.xml
applicationContext.xml:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <!-- 使用annotation 自动注册bean,并检查@Required,@Autowired的属性已被注入 --> <context:component-scan base-package="com.wp.learn.webservice"></context:component-scan> <!-- 导入其他配置文件 --> <import resource="applicationContext-ws.xml" /> </beans>
applicationContext-ws.xml:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> <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" /> <jaxws:endpoint id="helloWebservice" implementor="#helloServiceImpl" address="/hello" /> </beans>
接口HelloService:
Impl类HelloServiceImpl:
情况一、如果Impl类的注解是@Webservice,implementor需要写完全路径
情况二、Impl类注解是@Service,implementor只需“#”号加bean的id名
二、客户端调用(spring配置文件形式,不需要生成客户端代码)
Webservice的客户端调用,可以用ajax前端调用,java中可以通过生产客户端代码调用,也可以通过Spring配置文件、写对应接口信息调用。本例介绍配置文件,写接口信息进行webservice调用。
1.spring配置文件信息
<jaxws:client id="helloService" serviceClass="com.wp.learn.webservice.cxf.service.IHelloService" address="http://localhost:8080/ws/HelloService"> </jaxws:client>
2.写对应接口信息
需要注意两点:
- 1、targetNamespace的值必须和webservice服务项目中定义的一致,具体信息可以在WSDL文件中查看
- 2、接口名称可以自己随便起,但是方法名称、参数格式必须保持一致,否则无法找到服务的实现方法。
//注意,该出的targetNamespace的值必须和webService服务项目中定义的必须一致,否则调用不成功 @WebService(targetNamespace = "http://impl.service.cxf.webservice.learn.wp.com/", name = "IHelloService") public interface IHelloService { //接口名称可以不一样,方法名称、参数格式必须保持一致,否则无法找到服务的实现的方法 public String sayHi(String name); }
3.加载Spring的配置文件进行测试
public class Test { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-ws.xml"); IHelloService helloService = (IHelloService) context.getBean("helloService"); String result = helloService.sayHi("帅哥"); System.out.print(result); } }
4.需要的jar包
pom.xml
源码地址:https://gitee.com/wangpinggs/learn/tree/master/webserviceDemo