无接口的项目结构图:
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>WebService_Web</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- CXF框架的核心Servlet -->
<servlet>
<servlet-name>cxf</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>cxf</servlet-name>
<url-pattern>/ws/*</url-pattern>
</servlet-mapping>
</web-app>
cxf-servlet.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"
xmlns:soap="http://cxf.apache.org/bindings/soap"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/bindings/soap
http://cxf.apache.org/schemas/configuration/soap.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<!-- 引入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" />
<!-- 直接发布一个类,无接口
<jaxws:endpoint id="one" implementor="cn.itcast.ws1.OneService"
address="/one">
</jaxws:endpoint>
发布一个服务,没有指定接口
<jaxws:server id="two" address="/two" serviceClass="cn.itcast.ws2.ITwoService">
<jaxws:serviceBean>
指定发布类,下面类必须添加@WebService注解
<bean class="cn.itcast.ws2.TwoServiceImpl"></bean>
</jaxws:serviceBean>
</jaxws:server> -->
<!-- 简单发布(PS:没有接口) -->
<!--
id:当前服务的唯一表示
address:挡墙服务请求的ip
implementor:提供的服务类型
-->
<jaxws:endpoint id="helloService" address="/hello" implementor="Web_Service.Web_Servlet">
<!-- 添加客户端消息请求拦截器 -->
<jaxws:inInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
</jaxws:inInterceptors>
<!-- 添加服务端消息请求拦截器 -->
<jaxws:outInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
</jaxws:outInterceptors>
</jaxws:endpoint>
</beans>
Web_Servlet.java:(这里是服务提供的方法:注意在类上加@WebService)
package Web_Service;
import javax.jws.WebService;
@WebService
public class Web_Servlet {
public String sayHello(String name){
System.out.println("sayHello called。。。"+name);
return "hello"+name;
}
}
有接口的项目结构图:
就在上面的结构图中多加了一个接口和实现方法。
cxf-servlet.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"
xmlns:soap="http://cxf.apache.org/bindings/soap"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/bindings/soap
http://cxf.apache.org/schemas/configuration/soap.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<!-- 引入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" />
<!-- 直接发布一个类,无接口
<jaxws:endpoint id="one" implementor="cn.itcast.ws1.OneService"
address="/one">
</jaxws:endpoint>
发布一个服务,没有指定接口
<jaxws:server id="two" address="/two" serviceClass="cn.itcast.ws2.ITwoService">
<jaxws:serviceBean>
指定发布类,下面类必须添加@WebService注解
<bean class="cn.itcast.ws2.TwoServiceImpl"></bean>
</jaxws:serviceBean>
</jaxws:server> -->
<!-- 简单发布(PS:没有接口) -->
<!--
id:当前服务的唯一表示
address:挡墙服务请求的ip
implementor:提供的服务类型
-->
<jaxws:endpoint id="helloService" address="/hello" implementor="Web_Service.Web_Servlet">
<!-- 添加客户端消息请求拦截器 -->
<jaxws:inInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
</jaxws:inInterceptors>
<!-- 添加服务端消息请求拦截器 -->
<jaxws:outInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
</jaxws:outInterceptors>
</jaxws:endpoint>
<!-- 方式二:带有接口的发布形式 -->
<!-- serviceClass="Web_Service.HiService"接口的类 -->
<jaxws:server id="hiServer" address="/hi" serviceClass="Web_Service.HiService">
<jaxws:serviceBean>
<!-- 实现类的类 -->
<bean class="Web_Service.sayHiImpl"/>
</jaxws:serviceBean>
</jaxws:server>
</beans>
如果我们要指定cxf-servlet.xml文件的位置需要在web.xml如下配置:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>WebService_Web</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <!-- CXF框架的核心Servlet --> <servlet> <servlet-name>cxf</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> <init-param> <param-name>config-location</param-name> <param-value>classpath:cxf-servlet.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>cxf</servlet-name> <url-pattern>/ws/*</url-pattern> </servlet-mapping> </web-app>