首先是将CXF下载下来,下载网站是: http://cxf.apache.org/,解压,然后就是开发,开发是基于spring项目的基础之上。
首先是将架包导入项目中,因为我构建的是maven项目,所以在pom.xml添加一下代码即可
<dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-api</artifactId> <version>2.3.3</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>apache-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>2.3.3</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxrs</artifactId> <version>2.3.3</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>2.3.3</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-bindings-soap</artifactId> <version>2.3.3</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-bindings-http</artifactId> <version>2.3.3</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-common-utilities</artifactId> <version>2.3.3</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-testutils</artifactId> <version>2.3.3</version> <scope>test</scope> </dependency> <!-- Jetty is needed if you're are not using the CXFServlet --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http-jetty</artifactId> <version>2.3.3</version> <scope>provided</scope> </dependency>
架包导完了,接下来就是编码,编写要构发布的接口:Login.java
package com.webservice.cxf.worina.service; public interface Login { public String add(String name); }
LoginImpl.java
package com.webservice.cxf.worina.service.impl; import com.webservice.cxf.worina.service.Login; public class LoginImpl implements Login { public String add(String name) { return "hello " +name; } }
接口和实现类都写完了,接下来是配置文件
新建一个applicationContext-ws.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cxf="http://cxf.apache.org/core" xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:jaxrs="http://cxf.apache.org/jaxrs" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd" default-autowire="byName"> <!-- 以下三个文件为CXF架包自带的,只要引入即可以 --> <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" /> <jaxws:endpoint id="loginImpl" implementor="#login" address="/login"></jaxws:endpoint> <bean id="login" class="com.webservice.cxf.worina.service.impl.LoginImpl" /> </beans>
到这为止,还有一步很重要的,就是在web.xml配置CXF
<!-- 项目启动的时候启动CXF的servlet --> <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>/*</url-pattern> </servlet-mapping>
基本的代码已经有了,然后就是启动项目,浏览器中访问
http://localhost:9999/yourProjectName/login?wsdl
如果出现下面页面,那就说明成功了
<wsdl:definitions xmlns:ns1="http://service.worina.cxf.webservice.com/" xmlns:ns2="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://impl.service.worina.cxf.webservice.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="LoginImplService" targetNamespace="http://impl.service.worina.cxf.webservice.com/"> <wsdl:import location="http://localhost:9999/login?wsdl=Login.wsdl" namespace="http://service.worina.cxf.webservice.com/"></wsdl:import> <wsdl:binding name="LoginImplServiceSoapBinding" type="ns1:Login"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="add"> <soap:operation soapAction="" style="document"/> <wsdl:input name="add"> <soap:body use="literal"/> </wsdl:input> <wsdl:output name="addResponse"> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="LoginImplService"> <wsdl:port binding="tns:LoginImplServiceSoapBinding" name="LoginImplPort"> <soap:address location="http://localhost:9999/youProjectName/login"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
使用客户端调用
public static void main(String[] args) { JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.setAddress("http://localhost:9999/login?wsdl"); factory.setServiceClass(Login.class); Login login =(Login) factory.create(); System.out.println(login.add("XXX ")); }
调用成功的话即发布成功!