webservice四种发布方式及客户端调用.docx
文本预览下载声明
WebService 四种发布方式总结
Author:yczhang
CXF方式
CXF与spring搭建webservice是目前最流行的方式,但是传闻cxf与jdk1.5有些不兼容,我没有遇到过,我遇到的问题是cxf与was6.1.1不兼容,表现在cxf必须的jar包“wsdl4j-1.6.2.jar”报错,报的错为: java.lang.IncompatibleClassChangeError,明显的jar包不兼容问题,很是头痛,后来查找资料找到解决办法是,将上述jar包新建一个was共享库,可以解决,但是客户周经理不想用此种方式,因为需要修改was,于是改用了axis2方式,下文会介绍。该问题在此处做个记录,以后使用cxf与was的时候需要注意!!!
使用cxf+spring搭建WebService:
第一步,添加jar包。此处需要注意,不同环境(tomcat、was)jar也不一定相同,例如我本地cxf+spring只需要如下jar包:
而泰康的was环境则需要如下jar包:
明显的多了很多,原因应该是服务器jar包池的不同。根据错误提示缺什么补什么就可以了,注意jar包勿重复。
第二步,配置web.xml文件,如下(重要的地方已标记):
context-param
param-namecontextConfigLocation/param-name
param-valueclasspath:/applicationContext.xml/param-value
/context-param
listener listener-classorg.springframework.web.context.ContextLoaderListener/listener-class
/listener
!-- Character Encoding filter --
filter
filter-nameencodingFilter/filter-name
filter-classorg.springframework.web.filter.CharacterEncodingFilter/filter-class
init-param
param-nameencoding/param-name
param-valueUTF-8/param-value
/init-param
/filter
filter-mapping
filter-nameencodingFilter/filter-name
url-pattern/*/url-pattern
/filter-mapping
servlet
servlet-nameCXFServlet/servlet-name servlet-classorg.apache.cxf.transport.servlet.CXFServlet/servlet-class
load-on-startup1/load-on-startup
/servlet
servlet-mapping
servlet-nameCXFServlet/servlet-name
url-pattern/webservice/*/url-pattern
/servlet-mapping
上述标记的地方,第一处是spring配置文件路径;第二出是wsdl地址内容;
第三步,编写接口类与实现类,注意注解
接口类
@WebService
public interface SendService {
public boolean sendOA(@WebParam(name=param)String param);
public boolean sendOrg(OrgEntity org);
}
实现类
@WebService(endpointInterface=com.service.SendService,serviceName=sendService)
public class SendServiceImpl implements SendService{
public boolean sendOA(String param) {
System.out.println(-------sendOA---------param:+param);
if(param.equals(zhoujian)){
return true;
}
return false;
}
public boolean
显示全部