[color=red]<servlet>
<servlet-name>CXFServlet</servlet-name>
<display-name>CXF Servlet</display-name>
<servlet-class>
org.apache.cxf.transport.servlet.CXFServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
注意一下绿色字体
CXF框架配置好了,我就来开发一个WebService接口
@WebService
public interface IService {
//public void save(@WebParam(name="info")String xml);
public void save(@WebParam(name="dto")UserInfoDTO dto,@WebParam(name="flag")boolean flag);
public void update(@WebParam(name="info")String xml);
public void delete(@WebParam(name="id")int id);
public @WebResult(name="String")String get(@WebParam(name="id")int id);
}
这里面有四个方法,其中有一个涉及到对象,这一点前面一节讲到怎么处理它。放在这里是再回顾前节内容。
创建一个WebService接口实现类
@WebService
public class ServiceImpl implements IService {
private Logger log = LoggerFactory.getLogger(ServiceImpl.class);
public void delete(int id) {
log.info("delete id is {} user"+id);
}
public void save(UserInfoDTO dto,boolean flag) {
System.out.println("name:"+dto.getName());
}
public void update(String xml) {
}
public String get(int id){
return null;
}
}
由于本节只讲解与Spring整合,没有涉及到数据库,因就打印一下传递过来的对象内容来证明整合成功。与spring,hibernate整合后面章节会讲到,请留意后面章节。
传递对象,当然创建对象啦
@XmlType(name="ServerUserInfo")
@XmlAccessorType(XmlAccessType.FIELD)
public class UserInfoDTO implements java.io.Serializable {
private static final long serialVersionUID = -4666026219400887433L;
private Integer id;
private String name;
private Integer age;
private Integer address;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Integer getAddress() {
return address;
}
public void setAddress(Integer address) {
this.address = address;
}
public UserInfoDTO() {
}
}
做了这么多工作,有人又会问,怎么现在做的与spring框架就没一点联系,呵呵,确实是这样。开戏开场了,利用Spring来发布WebService接口:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans "
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance "
[color=red]xmlns:jaxws="http://cxf.apache.org/jaxws"[/color ]
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd ">
[color=red]
<!--导入与CXF框架有关的xml-->
<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" />[/color]
<!--布布WebService接口-->
<jaxws:endpoint id="service"
implementor="com.itdcl.service.ServiceImpl" address="/Service">
</jaxws:endpoint>
</beans>
服务端开发工作基本结束。现在打包部署到Tomcat6.0.18(本人目前使用的测试服务器,你当然可以使用别的服务器)
服务器启动完成后,打开浏览器在地址栏中输入http://localhost:port/project name/Service?wsdl看看接口是否发成功。
接下来就是开发一个客户端了。
另建一个web project,现在前面的参数配置要起作用了,cmd进入DOS环境下输入wsdl2java -p com.itdcl.service(自定义包名) http://localhost:port/project name/Service?wsdl(前提是服务器没停止)
敲击Enter,wsdl2java工具帮你将发布出来的wsdl文件转换成webservice接口,到指定目录下将com.itdcl.service拷到刚才另建的web project的src目录下。
现在,我们就来创建一个客户端程序:
public class SampleClient {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(
"beans.xml");
IService service = (IService)context.getBean("service");
ServerUserInfo userInfo = new ServerUserInfo();
userInfo.setAddress(1);
userInfo.setAge(100);
userInfo.setName("Jason");
service.save(userInfo,true);
service.delete(1);
}
}
看得仔细的朋友就会问了,ServerUserInfo 这个类那来的,你进到com.itdcl.service目录下就会看到,是WebService发布出来的。
到目前为止,客户端还没有完成,你没有看到程序中ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");这个bean.xml就是spring框架来注删除 WebService接口的。好啦,创建一个bean.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 "
[color=red]xmlns:jaxws="http://cxf.apache.org/jaxws[/color ]"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
[color=red]http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd[/color ]">
<jaxws:client id="service"
address="http://localhost:9999/cxf/Service "
serviceClass="com.itdcl.service.IService" />
</beans>
留意一下绿色字体
剩下的事就是运行客户端程序了,没有异常抛出,打印出:name:Josen,则恭喜你CXF框架与Spring整合成功。