服务端:
服务端和客户端都需要引入包
1 antlr-2.7.7.jar
2 aopalliance-1.0.jar
3 asm-3.3.jar
4 commons-collections-3.2.1.jar
5 commons-lang-2.6.jar
6 commons-logging-1.1.1.jar
7 cxf-2.4.2.jar
8 cxf-manifest.jar
9 cxf-xjc-boolean-2.4.0.jar
10 cxf-xjc-bug671-2.4.0.jar
11 cxf-xjc-dv-2.4.0.jar
12 cxf-xjc-ts-2.4.0.jar
13 FastInfoset-1.2.9.jar
14 geronimo-activation_1.1_spec-1.1.jar
15 geronimo-annotation_1.0_spec-1.1.1.jar
16 geronimo-javamail_1.4_spec-1.7.1.jar
17 geronimo-jaxws_2.2_spec-1.0.jar
18 geronimo-jms_1.1_spec-1.1.1.jar
19 geronimo-servlet_3.0_spec-1.0.jar
20 geronimo-stax-api_1.0_spec-1.0.1.jar
21 geronimo-ws-metadata_2.0_spec-1.1.3.jar
22 isorelax-20030108.jar
23 jaxb-api-2.2.1.jar
24 jaxb-impl-2.2.1.1.jar
25 jaxb-xjc-2.2.1.1.jar
26 jettison-1.3.jar
27 jetty-continuation-7.4.5.v20110725.jar
28 jetty-http-7.4.5.v20110725.jar
29 jetty-io-7.4.5.v20110725.jar
30 jetty-security-7.4.5.v20110725.jar
31 jetty-server-7.4.5.v20110725.jar
32 jetty-util-7.4.5.v20110725.jar
33 joda-time-1.6.2.jar
34 jra-1.0-alpha-4.jar
35 js-1.7R2.jar
36 jsr311-api-1.1.1.jar
37 msv-core-2010.2.jar
38 neethi-3.0.1.jar
39 opensaml-2.4.1.jar
40 openws-1.4.1.jar
41 relaxngDatatype-20020414.jar
42 saaj-api-1.3.jar
43 saaj-impl-1.3.2.jar
44 serializer-2.7.1.jar
45 slf4j-api-1.6.1.jar
46 slf4j-jdk14-1.6.1.jar
47 spring-aop-3.0.5.RELEASE.jar
48 spring-asm-3.0.5.RELEASE.jar
49 spring-beans-3.0.5.RELEASE.jar
50 spring-context-3.0.5.RELEASE.jar
51 spring-core-3.0.5.RELEASE.jar
52 spring-expression-3.0.5.RELEASE.jar
53 spring-jms-3.0.5.RELEASE.jar
54 spring-tx-3.0.5.RELEASE.jar
55 spring-web-3.0.5.RELEASE.jar
56 stax2-api-3.1.1.jar
57 velocity-1.7.jar
58 woodstox-core-asl-4.1.1.jar
59 wsdl4j-1.6.2.jar
60 wss4j-1.6.2.jar
61 xalan-2.7.1.jar
62 xml-resolver-1.2.jar
63 xmlbeans-2.4.0.jar
64 xmlschema-core-2.0.jar
65 xmlsec-1.4.5.jar
66 xmltooling-1.3.1.jar
67 xsdlib-2010.1.jar
View Code
web.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <web-app version="2.5"
3 xmlns="http://java.sun.com/xml/ns/javaee"
4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
6 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
7 <!-- 两种方式配置1.监听器配置 2.servlet配置, 以下的是采用监听器配置的 -->
8
9 <!-- 通过上下文参数指定spring配置文件的位置 -->
10 <context-param>
11 <param-name>contextConfigLocation</param-name>
12 <param-value>classpath:cxf-servlet.xml</param-value>
13 </context-param>
14 <listener>
15 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
16 </listener>
17
18 <!-- 配置CXF框架的核心Servlet -->
19 <servlet>
20 <servlet-name>cxf</servlet-name>
21 <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
22 <!-- 通过初始化参数指定配置文件的位置 -->
23 <!--
24 <init-param>
25 <param-name>config-location</param-name>
26 <param-value>classpath:cxf-servlet.xml</param-value>
27 </init-param>
28 -->
29 </servlet>
30
31 <servlet-mapping>
32 <servlet-name>cxf</servlet-name>
33 <url-pattern>/cxf/*</url-pattern>
34 </servlet-mapping>
35
36 <welcome-file-list>
37 <welcome-file>index.jsp</welcome-file>
38 </welcome-file-list>
39 </web-app>
cxf-servlet.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" xmlns:jaxws="http://cxf.apache.org/jaxws"
4 xmlns:soap="http://cxf.apache.org/bindings/soap" xmlns:jaxrs="http://cxf.apache.org/jaxrs"
5 xsi:schemaLocation="http://www.springframework.org/schema/beans
6 http://www.springframework.org/schema/beans/spring-beans.xsd
7 http://cxf.apache.org/bindings/soap
8 http://cxf.apache.org/schemas/configuration/soap.xsd
9 http://cxf.apache.org/jaxws
10 http://cxf.apache.org/schemas/jaxws.xsd
11 http://cxf.apache.org/jaxrs
12 http://cxf.apache.org/schemas/jaxrs.xsd
13 ">
14 <!-- 引入CXF Bean定义如下,早期的版本中使用,如果是servlet引入的话则下面三句不用了,因为框架引入了 -->
15 <import resource="classpath:META-INF/cxf/cxf.xml" />
16 <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
17 <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
18
19 <!-- 通过spring配置文件发布CXF的服务 -->
20
21 <!-- 第一种发布方式:没有接口的发布(简单发布) -->
22 <!--
23 id:唯一标识
24 address:访问url
25 implementor:提供服务的类型
26 -->
27 <jaxws:endpoint id="helloService" address="/hello"
28 implementor="cn.itcast.cxf.HelloService">
29 <!-- 加入消息拦截器 -->
30 <jaxws:inInterceptors>
31 <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>
32 </jaxws:inInterceptors>
33 <jaxws:outInterceptors>
34 <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean>
35 </jaxws:outInterceptors>
36 </jaxws:endpoint>
37
38 <!-- 第二种发布方式:带有接口的发布 -->
39 <!--
40 id:唯一标识
41 address:访问url
42 serviceClass:接口类型
43 -->
44 <jaxws:server id="hiService" address="/hi"
45 serviceClass="cn.itcast.cxf.IHiService">
46 <jaxws:serviceBean>
47 <!-- 提供服务的实现类 -->
48 <bean class="cn.itcast.cxf.HiServiceImpl"></bean>
49 </jaxws:serviceBean>
50
51 <!-- 加入消息拦截器 -->
52 <jaxws:inInterceptors>
53 <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>
54 </jaxws:inInterceptors>
55 <jaxws:outInterceptors>
56 <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean>
57 </jaxws:outInterceptors>
58 </jaxws:server>
59
60 <!-- 配置restful方式的web服务 -->
61 <bean id="ps" class="cn.itcast.restful.PersonServiceImpl"></bean>
62 <jaxrs:server id="personService" address="/p">
63 <jaxrs:serviceBeans>
64 <ref bean="ps"/>
65 </jaxrs:serviceBeans>
66 <jaxrs:inInterceptors>
67 <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>
68 </jaxrs:inInterceptors>
69 <jaxrs:outInterceptors>
70 <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean>
71 </jaxrs:outInterceptors>
72 </jaxrs:server>
73 </beans>
忽略60-72 那是 jason方面的配置
IHiService.java
1 package cn.itcast.cxf;
2
3 import javax.jws.WebService;
4
5 @WebService
6 public interface IHiService {
7 public String sayHi(String name);
8 }
View Code
HiServiceImpl.java
1 package cn.itcast.cxf;
2
3 public class HiServiceImpl implements IHiService {
4
5 @Override
6 public String sayHi(String name) {
7 System.out.println("sayHi....");
8 return "hi " + name;
9 }
10
11 }
View Code
然后
localhost:8080/项目地址/hi?xsdl
客户端
利用 wsimport -s 地址 或者ws2java -s地址的命令
得到文件后
把接口文件复制来
配置文件 ClientBean.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" xmlns:jaxws="http://cxf.apache.org/jaxws"
4 xmlns:soap="http://cxf.apache.org/bindings/soap"
5 xsi:schemaLocation="http://www.springframework.org/schema/beans
6 http://www.springframework.org/schema/beans/spring-beans.xsd
7 http://cxf.apache.org/bindings/soap
8 http://cxf.apache.org/schemas/configuration/soap.xsd
9 http://cxf.apache.org/jaxws
10 http://cxf.apache.org/schemas/jaxws.xsd">
11 <!-- 配置客户端bean -->
12 <!--
13 id:唯一标识
14 address:请求的服务地址
15 serviceClass:客户端接口
16 -->
17 <jaxws:client id="hiService" address="http://localhost/CXF_03/cxf/hi" serviceClass="cn.itcast.cxf.IHiService"></jaxws:client>
18
19 </beans>
测试 IHiService就是拷贝过来的接口文件,放到项目中
1 package cn.itcast.test;
2
3 import org.springframework.context.ApplicationContext;
4 import org.springframework.context.support.ClassPathXmlApplicationContext;
5
6 import cn.itcast.cxf.IHiService;
7
8 public class Test1 {
9 public static void main(String[] args) {
10 //初始化spring
11 ApplicationContext ctx = new ClassPathXmlApplicationContext("ClientBeans.xml");
12 IHiService s = (IHiService) ctx.getBean("hiService");
13 s.sayHi("abc");
14 System.out.println(s.getClass().getName());
15 }
16 }