<!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>
<!--spring配置-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 配置缓存清除监听器,负责处理由 JavaBean Introspector 功能而引起的缓存泄露 -->
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<!--CXF配置-->
<servlet>
<servlet-name>CXFService</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFService</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
<!--引入CXF命名空间:
1.xmlns:jaxws="http://cxf.apache.org/jaxws
2.http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
-->
<!--import为导入CXF定义Bean的文件-->
<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"/>
<bean id="ingInInterceptor" class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
<bean id="OutInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
<!--定义具体实现的Bean,这个Bean的定义与Spring普通的Bean定义是一样的-->
<bean id="userServiceImpl" class="com.jetair.server.UserServiceImpl"/>
<!--通过 CXF 提供的 <jaxws:server> 标签,将定义的 Bean 暴露出去成为 Web Service 服务 -->
<!--serviceClass = 接口类-->
<!--address = 调用时的URL-->
<jaxws:server id="userService" serviceClass="com.jetair.server.UserService" address="/hello">
<jaxws:serviceBean>
<!-- 要暴露的bean的引用上面定义的bean的id -->
<ref bean="userServiceImpl"/>
</jaxws:serviceBean>
<jaxws:inInterceptors>
<ref bean="ingInInterceptor"/>
</jaxws:inInterceptors>
<jaxws:outInterceptors>
<ref bean="OutInterceptor"/>
</jaxws:outInterceptors>
</jaxws:server>
</beans>
<UserService.java>接口类
package com.*.server;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
@WebService //指定WebService 接口实现类可以不加
@SOAPBinding(style = SOAPBinding.Style.RPC)
public interface UserService {
public String sayHallo(@WebParam(name = "name") String name);
}
<UserServiceImpl.java>实现类
package com.*.server;
public class UserServiceImpl implements UserService {
public String sayHallo(String name) {
return "你好,"+ name;
}
}
<测试类说明:首先要启动tomcat服务器,然后才能调用测试方法,不然会报错。>
import com.*.server.UserService;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
public class WebServiceTest {
public static void main(String[] args) {
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(UserService.class);
factory.setAddress("http://localhost:8080/hello");
UserService service = (UserService) factory.create();
System.out.println(service.sayHallo("张三"));
}
}