最近开始学习CXF框架下部署WebServices , 起初都是用注释类或使用JAX-WS的方式如@WebService 等方式来进行和Spring结合发布的WebService
但是后来突然发现这样无形中和Java代码的耦合程度更大了,于是便需找累死xfie的aegis方式进行部署,貌似这类的文章很难找,
虽然找了大概三四天吧不过很幸运,感谢博主http://blog.csdn.net/pengchua/article/details/2740588
本文将通过图文方式进行部署,顺便把和Spring的结合进行讲解一下:
1....................首先看一下我的工程目录,这样会更容易下面的理解

2...............................配置web.xml文件这样所有架构才能启动(之前别忘记加入Spring和CXF的架包)
- <?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- id="WebApp_ID" version="2.5">
- <!--spring需要加载的配置文件-->
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>
- classpath:applicationContext-server.xml
- </param-value>
- </context-param>
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <!--
- 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>/services/*</url-pattern>
- </servlet-mapping>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
3.....................................Spring 配置文件applicationContext.xml的配置
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:context="http://www.springframework.org/schema/context"
- 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-3.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.xsd">
- <import resource="xml/services.xml" />
- </beans>
4................................编写接口文件
- package com.interfaces;
- import java.util.List;
- import java.util.Map;
- import org.w3c.dom.Document;
- import com.javabean.User;
- public interface ServicesInterface {
- //字符串
- public String sayHi(String text);
- //document类型对象
- public Document getDocument();
- String sayUserHello(User user);
- List<User> findUsers();
- Map<Integer, User> getMapUsers();
- }
5...................编写实现类(这些应该都是小儿科了吧)
- package com.interfaces;
- import java.util.List;
- import java.util.Map;
- import org.w3c.dom.Document;
- import com.javabean.User;
- public interface ServicesInterface {
- //字符串
- public String sayHi(String text);
- //document类型对象
- public Document getDocument();
- String sayUserHello(User user);
- List<User> findUsers();
- Map<Integer, User> getMapUsers();
- }
6........................看看User这个JavaBean里面有什么冬冬
- package com.javabean;
- public class User {
- private String username;
- private String password;
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- }
7........................配置services.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:simple="http://cxf.apache.org/simple"
- 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/core
- http://cxf.apache.org/schemas/core.xsd
- http://cxf.apache.org/simple
- http://cxf.apache.org/schemas/simple.xsd">
- <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="aegisBean" class="org.apache.cxf.aegis.databinding.AegisDatabinding" />
- <simple:server id="helloservice" serviceClass="com.interfaces.ServicesInterface"
- address="/hello">
- <simple:serviceBean>
- <bean class="com.imp.HelloWorldImpl" />
- </simple:serviceBean>
- <simple:dataBinding>
- <ref bean="aegisBean" />
- </simple:dataBinding>
- </simple:server>
- </beans>
注意:上面的配置文件中不仅要注意配置的内容,而且要注意配置的顺序,例如
- http://cxf.apache.org/simple
- http://cxf.apache.org/schemas/simple.xsd
这两个的先后顺序是不能颠倒的,唉,在这里吃好大亏啊,如果颠倒了的话在写下面的标签的时候你回发现根本找不到simple的标签,所以一定要注意
8.............................如果一切顺利的话那么就来启动服务器来看看我们的成果吧
http://localhost:8080/aegis_CXF/services/hello?wsdl
呵呵最喜欢看到下面这张图了

本文介绍如何使用CXF框架结合Spring部署WebService,包括配置web.xml、Spring配置文件、编写接口及其实现类等步骤。

5012

被折叠的 条评论
为什么被折叠?



