ssm集成webservice,我这里用的是CXF,因为对于Axis和Afire来说CXF算是非常好的,这里就不对他们的区别多说了,首先:
1、加入相应的依赖:
2、在web.xml里加上webservice的servlet
3、在spring.xml加入相应的配置
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:soap="http://cxf.apache.org/bindings/soap"
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd
这是图中的配置,位置最好一样,因为ssm框架太操蛋。
4、开始写接口:
import java.util.List;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import com.yltd.cnyun.common.area.entity.Area;
/**
*
* 基于soap的服务
*/
@WebService
public interface TestService {
// 提供一个对外公开的服务
@WebMethod(operationName = "sayHellow")
public String sayHellow(@WebParam(name = "username") String username);
}
实现类:
import java.util.List;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import org.springframework.beans.factory.annotation.Autowired;
import com.yltd.cnyun.common.area.entity.Area;
import com.yltd.cnyun.common.area.service.AreaService;
/**
* 服务实现类
*/
@WebService
public class TestServiceImpl implements TestService {
@Autowired
AreaService areaService;
@WebMethod(operationName = "sayHellow")
@Override
public String sayHellow(@WebParam(name = "username")String username) {
// TODO Auto-generated method stub
return username+"你好!";
}
}
5、把写好的接口配置在spring.xml中,项目启动的时候扫描spring.xml自动发布出去
两个方式都可以
然后启动项目,访问路径localhost:8080/项目名字/webSerive/webService?wsdl出现,
说明你发布成功了。
6、最后一步测试你发布的接口:
@SuppressWarnings("unchecked")
public static void main(String[] args) throws Exception {
System.out.println("开始调用接口!");
Properties props = System.getProperties();
props.setProperty("org.apache.cxf.stax.allowInsecureParser", "1");
props.setProperty("UseSunHttpHandler", "true");
//采用动态工厂方式 不需要指定服务接口
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client client = dcf.createClient("http://10.10.26.108:8080/cnyun-web/webService/webService?wsdl");
Object[] res = client.invoke("sayHellow", "admin");
System.out.println("Echo response: sayHellow" + res[0]);
}
}
console不报错有数据,就说明你调通了,这里客户端调服务端的时候,我写的是java程序测试用的,相应的jar包比较多,图片给你贴出来:
大部分的包是没用的,我去官网把apache.cxf所有的包都到进来了,你用的时候自己删除吧,可能会出现包的版本不一样报错的问题,这都是小问题了,自己搞一下,哪看不懂的可以私信。