Tomcat下通过CXF实现不用注解发布WebService
2013-11-04 14:28
411 查看
最近开始学习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的架包)
[html] view
plaincopyprint?
<?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的配置
[html] view
plaincopyprint?
<?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................................编写接口文件
[java] view
plaincopyprint?
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...................编写实现类(这些应该都是小儿科了吧)
[java] view
plaincopyprint?
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里面有什么冬冬
[java] view
plaincopyprint?
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就是用来部署接口的这个文件,这个很重要,真的很重要(后面就知道为什么了)
[html] view
plaincopyprint?
<?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>
注意:上面的配置文件中不仅要注意配置的内容,而且要注意配置的顺序,例如
[html] view
plaincopyprint?
http://cxf.apache.org/simple http://cxf.apache.org/schemas/simple.xsd
这两个的先后顺序是不能颠倒的,唉,在这里吃好大亏啊,如果颠倒了的话在写下面的标签的时候你回发现根本找不到simple的标签,所以一定要注意
8.............................如果一切顺利的话那么就来启动服务器来看看我们的成果吧
http://localhost:8080/aegis_CXF/services/hello?wsdl
呵呵最喜欢看到下面这张图了
但是后来突然发现这样无形中和Java代码的耦合程度更大了,于是便需找累死xfie的aegis方式进行部署,貌似这类的文章很难找,
虽然找了大概三四天吧不过很幸运,感谢博主http://blog.csdn.net/pengchua/article/details/2740588
本文将通过图文方式进行部署,顺便把和Spring的结合进行讲解一下:
1....................首先看一下我的工程目录,这样会更容易下面的理解
2...............................配置web.xml文件这样所有架构才能启动(之前别忘记加入Spring和CXF的架包)
[html] view
plaincopyprint?
<?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的配置
[html] view
plaincopyprint?
<?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................................编写接口文件
[java] view
plaincopyprint?
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...................编写实现类(这些应该都是小儿科了吧)
[java] view
plaincopyprint?
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里面有什么冬冬
[java] view
plaincopyprint?
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就是用来部署接口的这个文件,这个很重要,真的很重要(后面就知道为什么了)
[html] view
plaincopyprint?
<?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>
注意:上面的配置文件中不仅要注意配置的内容,而且要注意配置的顺序,例如
[html] view
plaincopyprint?
http://cxf.apache.org/simple http://cxf.apache.org/schemas/simple.xsd
这两个的先后顺序是不能颠倒的,唉,在这里吃好大亏啊,如果颠倒了的话在写下面的标签的时候你回发现根本找不到simple的标签,所以一定要注意
8.............................如果一切顺利的话那么就来启动服务器来看看我们的成果吧
http://localhost:8080/aegis_CXF/services/hello?wsdl
呵呵最喜欢看到下面这张图了
相关文章推荐
- Tomcat下通过CXF实现不用注解发布WebService
- CXF整合Spring通过tomcat发布webservice
- WebService -- Java 实现之 CXF ( 使用:Spring+CXF+Tomcat发布webService)
- CXF发布WS,不用tomcat,实现usernametoken认证机制(2)
- CXF发布WS,不用tomcat,实现usernametoken认证机制(1)
- CXF发布WS,不用tomcat,实现usernametoken认证机制(3)
- CXF实现简单webservice应用、集成spring发布到tomcat
- CXF配置的方式发布WebService并运行于Tomcat容器
- CXF—六天系列—第三天—HelloWorld!-通过servlet发布webservice .
- Webservice实践(七)CXF 与Spring结合+tomcat发布
- 通过CXF发布WebService第一例
- webservice之CXF注解实现(一)
- webservice之CXF注解实现(二)
- CXF用JDK注解的方式发布WebService简单例子
- Maven+SpringMVC+CXF整合实现webservice服务的发布与调用
- CXF用JDK注解的方式发布WebService简单例子
- CXF学习笔记(3)-HelloWorld!-通过servlet发布webservice
- cxf webservice 注解方式实现!!!!!
- 一个实例演示jersey框架实现RESTful风格的Webservice,并发布到Tomcat,以及客户端调用示范
- CXF—六天系列—第四天—HelloWorld!-通过servlet发布webservice . .