项目说明
MAVEN集成
maven集成cxf的jar包,我的项目用的spring4.x版本,所以找的cxf版本为3.1.8
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.1.8</version>
</dependency>
<!--web service 以下都是cxf必备的 -->
<!--org.apache.cxf.transport.servlet.CXFServlet -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.1.8</version>
</dependency>
<!--不加这个包会报错Unable to locate spring NamespaceHandler for XML schema namespace
[http://cxf.apache.org/jaxws] -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.1.8</version>
</dependency>
<!--java实现webservice,不部署到tomcat,需要jetty包支持 -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>3.1.8</version>
</dependency>
服务端配置
配置spring-webservice.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" xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"
default-lazy-init="true">
<bean id="webserviceServer" class="cn.com.jd.credit.pbccr.service.impl.OrderWebServiceImpl" />
<jaxws:endpoint id="myService" implementor="#webserviceServer"
address="/web-publish">
</jaxws:endpoint>
</beans>
配置web.xml
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/server/*</url-pattern>
</servlet-mapping>
服务端测试代码
- OrderWebServiceImpl类
//实现类
import javax.jws.WebService;
import cn.com.jd.credit.pbccr.service.OrderWebService;
@WebService(endpointInterface = "cn.com.jd.credit.pbccr.service.OrderWebService", serviceName = "OrderWebService")
public class OrderWebServiceImpl implements OrderWebService {
@Override
public int add(int a, int b) {
System.out.println(a + "+" + b + "=" + (a + b));
return a + b;
}
@Override
public int minus(int a, int b) {
System.out.println(a + "-" + b + "=" + (a - b));
return a - b;
}
}
- OrderWebService接口类
import javax.jws.WebService;
@WebService
public interface OrderWebService {
int add(int a, int b);
int minus(int a, int b);
}
客户端测试代码
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import cn.com.jd.credit.pbccr.service.OrderWebService;
public class ClientForCXF {
public static OrderWebService getInterFace() {
JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();
factoryBean.setServiceClass(OrderWebService.class);
factoryBean.setAddress("http://localhost:11200/server/web-publish");
return (OrderWebService) factoryBean.create();
}
public static void main(String[] args) {
OrderWebService myWebService = getInterFace();
System.out.println("client: " + myWebService.add(1, 3));
}
}