如何发布webservice

2024-11-14 06:47:05
推荐回答(1个)
回答1:

1. 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文件,如下(重要的地方已标记):


contextConfigLocation
classpath:/applicationContext.xml

org.springframework.web.context.ContextLoaderListener



encodingFilter
org.springframework.web.filter.CharacterEncodingFilter

encoding
UTF-8



encodingFilter
/*


CXFServlet org.apache.cxf.transport.servlet.CXFServlet
1


CXFServlet
/webservice/*


上述标记的地方,第一处是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 sendOrg(OrgEntity org) {
System.out.println("-------sendOrg--begin-------");
return true;
}
}

第四步,Spring配置文件


xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">




address="/sendServie" />





“jaxws:client”该标签可以不必写,访问时可以手动拼接该url
第五步,发布,直接部署到服务器,访问:

http://10.137.138.11:9080/Wb/webservice/sendServie?wsdl