1. 添加cxf.jar 包(集成了Spring.jar、servlet.jar ),spring.jar包 ,servlet.jar 包。
2. 编写业务类,通过CXF来发布webservice
3. 添加一个CXF请求的 Servlet,用来处理webservice的请求 。过滤的地址例如:/ws/*
4. 配置Spring的配置文件: applicationContext.xml ,把cxf的bean在spring配置 。
5. 在web.xml中配置 CXF的 Servlet , 添加spring的监听 。
6. 通过wsimport生成本地代理 ,访问webservice 。
下面举个例子,向外暴露StudentInter接口,里面有获取学生和添加学生的方法:
1、引入CXF的jar包,这里把Spring和Servlet相关的去取,因为Spring的我自己加,Servlet的我myEclipse会自动添加。
2、创建暴露出去的接口类(服务类),并添加@webServer注释:
//通过注释更改server的名称,如果不改,也要添加@WebService此注释,不然发布失败
@WebService(serviceName="StudentManager")
public interface StudentInter {
//获取学生
public abstract Student getStudent(int num);
//添加学生
public abstract void addStudent(Student student);
}
3、实现该接口的类(服务的实现类):
public class StudentManagerImpl implements StudentInter {
//为了测试添加的数据
private static List<Student> list = null;
static {
list = new ArrayList<Student>();
list.add(new Student(0, "lmk0"));
list.add(new Student(1, "lmk1"));
list.add(new Student(2, "lmk2"));
}
@Override
public Student getStudent(int num) {
return list.get(num);
}
@Override
public void addStudent(Student student) {
list.add(student);
}
}
4、添加Spring相应的jar包
添加cxf的语言格式:
配置bean:
<!-- CXF的配置:
address:
地址:http://192.168.114.10:8080/CXF_Server/ws/studentManager
组成说明:http://192.168.114.10:8080 +CXF_Server( 项目名)+ws(过滤的路径)+/studentManager(自定义部分)。
serviceClass:暴露出去的接口(服务类)。
serviceBean:服务的实现类。
inInterceptors/outInterceptors:有人用到这个服务时候打印的log
-->
<jaxws:server address="/studentManager" serviceClass="com.lmk.service.inter.StudentInter">
<jaxws:serviceBean>
<ref bean="studentManagerImpl" />
</jaxws:serviceBean>
<jaxws:inInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
</jaxws:inInterceptors>
<jaxws:outInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
</jaxws:outInterceptors>
</jaxws:server>
5、web.xml的配置:
<!-- cxf的Servlet拦截器 -->
<servlet>
<servlet-name>cxf</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>cxf</servlet-name>
<!-- 拦截地址,是wsdl文件地址的组成一部分 -->
<url-pattern>/ws/*</url-pattern>
</servlet-mapping>
<!-- 初始化Spring -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
6、发布完成后运行tomcat,输入http://localhost:8080/CXF_Server/ws
测试部分(你可以用myEclipse自带的webServer浏览器,这里是用生成本地代理的方式测试):
1、在cmd命令窗口中输入以下代码,生成class字节码:wsimport ./ http://localhost:8080/CXF_Server/ws/studentManager?wsdl
2、把字节码打成jar包: jar cvf jobService.jar xx(刚才的字节码文件地址)
3、新建项目,把以上jar包放入项目中,编写以下代码,测试:
public static void main(String[] args) {
//获取服务
StudentManager sm=new StudentManager();
//获取服务的实现类
StudentInter studentInterPort = sm.getStudentInterPort();
//调用实现的方法
Student student = studentInterPort.getStudent(0);
System.out.println(student.getName());
}