新建一个maven项目(or下载cxf所需jar包),pom.xml如下
1.pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.webservice</groupId> <artifactId>WebserviceProject</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>WebserviceProject Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-api</artifactId> <version>2.5.0</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>2.5.0</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-bindings-soap</artifactId> <version>2.5.0</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>2.5.0</version> </dependency> </dependencies> <build> <finalName>WebserviceProject</finalName> </build> </project>
2.新建一个配置文件application.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:context="http://www.springframework.org/schema/context" 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://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> <bean id="greetingServiceImpl" class="com.webservice.server.GreetingServiceImpl" > <property name="excludeName" value="Michael"/> <property name="leastPonit" value="10"/> </bean> <jaxws:endpoint id="greetingService" implementor="#greetingServiceImpl" address="/Greeting" > </jaxws:endpoint> </beans>
3.配置web.xml文件,加载xml和配置url
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:application.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <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> <!--==这个设置很重要,那么我们的webservice的地址就是http://localhost:8080/webserviceProject/webservice/Greeting===--> <url-pattern>/webservice/*</url-pattern> </servlet-mapping> </web-app>
4 新建server实体类和接口
Greeting.java
package com.webservice.server; import javax.jws.WebParam; import javax.jws.WebService; import com.webservice.to.WebServiceTo; @WebService public interface Greeting { public WebServiceTo greeting(@WebParam(name = "username")String username,@WebParam(name = "point")int point); }
GreetingServiceImpl.java
package com.webservice.server; import javax.jws.WebService; import com.webservice.to.UserInfo; import com.webservice.to.WebServiceTo; @WebService(endpointInterface = "com.webservice.server.Greeting") public class GreetingServiceImpl implements Greeting { private String excludeName = "Michael"; private int leastPonit = 5; public WebServiceTo greeting(String username, int point) { String result = ""; if (excludeName.equals(username)) { result = " 您不能重复进行投票!"; } else { result = " 谢谢您的投票!"; if (point < leastPonit) { result += " 您的投票分数太低!"; } else { result += " 您的投票分数通过审核!"; } } WebServiceTo to = new WebServiceTo(); to.setResult(result); UserInfo user = new UserInfo(); user.setUserName("zhangsan"); user.setPassword("abcd"); to.setInfo(user); return to; } public String getExcludeName() { return excludeName; } public void setExcludeName(String excludeName) { this.excludeName = excludeName; } public int getLeastPonit() { return leastPonit; } public void setLeastPonit(int leastPonit) { this.leastPonit = leastPonit; } }
5.server端已经完成,接下来创建一个client端类Test
GreetingServiceClient.java
package com.webservice.client; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; import com.webservice.server.Greeting; public class GreetingServiceClient { public static void main(String[] args) { // 创建WebService客户端代理工厂 JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); // 注册WebService接口 factory.setServiceClass(Greeting.class); // 设置WebService地址 factory.setAddress("http://localhost:8080/WebserviceProject/webservice/Greeting"); Greeting greetingService = (Greeting) factory.create(); System.out.println("invoke webservice..."); // 1、定义调查投票的变量与内容,用来发送给服务 String username = "Test"; int point = 88; // 调用方法进行服务消费 String result = greetingService.greeting(username, point).getResult(); System.out.println("Result:" + result); // 2、传递不一样的调查投票内容 username = "Michael"; point = 100; // 再次调用方法进行服务消费,得到不一样的结果 result = greetingService.greeting(username, point).getResult(); System.out.println("Result:" + result); // 3、第三次传递与调用 username = "Jordan"; point = 9; result = greetingService.greeting(username, point).getResult(); System.out.println("Result:" + result); } }