Tomcat下通过CXF实现不用注解发布WebService
最近开始学习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的架包)
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">
contextConfigLocation
classpath:applicationContext-server.xml
org.springframework.web.context.ContextLoaderListener
CXFServlet
org.apache.cxf.transport.servlet.CXFServlet
1
CXFServlet
/services/*
index.jsp
3.....................................Spring 配置文件applicationContext.xml的配置
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">
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 findUsers();
Map 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 findUsers();
Map 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就是用来部署接口的这个文件,这个很重要,真的很重要(后面就知道为什么了)
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">
address="/hello">
注意:上面的配置文件中不仅要注意配置的内容,而且要注意配置的顺序,例如
http://cxf.apache.org/simple
http://cxf.apache.org/schemas/simple.xsd
这两个的先后顺序是不能颠倒的,唉,在这里吃好大亏啊,如果颠倒了的话在写下面的标签的时候你回发现根本找不到simple的标签,所以一定要注意
8.............................如果一切顺利的话那么就来启动服务器来看看我们的成果吧
http://localhost:8080/aegis_CXF/services/hello?wsdl
呵呵最喜欢看到下面这张图了
9......................给自己点鼓励(恭喜恭喜呵呵)