1. 编写需要发布的服务类
首先,创建一个service类的接口,功能为打印“Hello”加上传入的参数name。package demo.spring.service; import javax.jws.WebService; /* * 首先,编写Service接口 */ @WebService public interface HelloWorld {
}
然后,编写service接口类的实现类。package demo.spring.service; import javax.jws.WebService; /* * service接口的实现类 */ @WebService public class HelloWorldImpl implements HelloWorld { @Override public String SayHi(String text) { System.out.println("SayHicalled"); return "Hello"+text; } }
2. 声明服务器端beans。
在WEN-INF文件夹下创建一个名为cxf-Servlet.xml的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://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/jaxwshttp://cxf.apache.org/schemas/jaxws.xsd"> <!-- 引入cxf的两个配置文件 --> <import resource="classpath:META-INF/cxf/cxf.xml"/> <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/> <!-- 通过<jaxw:endpoint创建一个服务终端 --> <jaxws:endpoint id="helloWorld" <!-- spring上下文中的bean的id --> implementor="demo.spring.service.HelloWorldImpl" <!-- 服务端实现类 --> address="/HelloWorld" <!-- 服务请求地址 -->
></jaxws:endpoint>
</beans>
3. 设置Servlet
首先,在web.xml中配置Spring的ContextLoaderListener。 <!-- 配置Spring的ContextLoaderListener --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/cxf-servlet.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class>
</listener>
然后,在web.xml中配置CXFServlet的作用范围。 <!-- 配置CXFServlet的作用范围 --> <servlet> <servlet-name>CXFServlet</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class></servlet> <servlet-mapping> <servlet-name>CXFServlet</servlet-name> <url-pattern>/*</url-pattern>
</servlet-mapping>
4. 创建客户端
首先,在cxf-servlet.xml中配置客户端。
1, 简单的方法 <!-- 配置客户端代码方法一 --> <jaxws:client id="helloClient" serviceClass="demo.spring.service.HelloWorld" address="http://localhost:8080/cxftest/HelloWorld"
></jaxws:client>
2, 繁琐的方法 <!-- 配置客户端代码方法二 --> <bean id="client"class="demo.spring.service.HelloWorld" factory-bean="clientFactory" factory-method="create"> </bean> <bean id="clientFactory"class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean"> <property name="serviceClass"value="demo.spring.service.HelloWorld"></property> <property name="address"value="http://localhost:8080/cxftest/HelloWorld"></property>
</bean>
然后,在客户端调用package demo.spring.client; import org.apache.catalina.core.ApplicationContext; importorg.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; import demo.spring.service.HelloWorld; public class Client { private Client(){ } public static void main(String[] args) { ClassPathXmlApplicationContext context = newClassPathXmlApplicationContext("cxf-servlet.xml"); HelloWorld client = (HelloWorld)context.getBean("helloClient"); String response = client.SayHi("zhangjie"); System.out.println("Response:"+response); System.exit(0); } }
英文原文:http://cxf.apache.org/docs/writing-a-service-with-spring.html |