WebService 学习笔记之 集成Spring和Web容器
2014-08-30 15:40
274 查看
一.开发环境
我的开发环境是:
MyEclipse 10
Tomcat 6.0
Apache cxf-2.3.0 相关jar包下载地址: http://www.apache.org/dist/cxf/2.3.0/
二.开发步骤
创建Server
1.新建一个Web工程WebServiceDemo,并添加apache-cxf-2.3.0相关jar文件,然后建个com.demo包。在包里面创建HelloWorld接口
代码如下
再创建一个类实现HelloWorld接口
然后修改web.xml里面内容
在WEB-INF下面创建一个beans.xml
代码如下
将Web工程发布到Tomcat里面,然后启动Server
创建Client
接着创建客户端,在com.demo下面创建client-beans.xml。内容如下
在创建测试类Client.java
然后进行测试运行。如果遇到类似这种错误“AXB 2.1 API is being loaded from the bootstrap classloader”说明你的web工程添加了J2EE 1.4或者是1.5 library. 这样就与jaxb-api-2.2.1.jar
冲突了,只需删除即可。
最后运行如图
我的开发环境是:
MyEclipse 10
Tomcat 6.0
Apache cxf-2.3.0 相关jar包下载地址: http://www.apache.org/dist/cxf/2.3.0/
二.开发步骤
创建Server
1.新建一个Web工程WebServiceDemo,并添加apache-cxf-2.3.0相关jar文件,然后建个com.demo包。在包里面创建HelloWorld接口
代码如下
package com.demo; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; @WebService public interface HelloWorld { @WebMethod @WebResult String sayHi(@WebParam String text); }
再创建一个类实现HelloWorld接口
package com.demo; import javax.jws.WebService; @WebService public class HelloWorldImpl implements HelloWorld { public String sayHi(String text) { // TODO Auto-generated method stub return "Hi," + text; } }
然后修改web.xml里面内容
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name></display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <context-param> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/beans.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <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>/*</url-pattern> </servlet-mapping> </web-app>
在WEB-INF下面创建一个beans.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" 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"> <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="helloWorld" implementor="com.demo.HelloWorldImpl" address="/HelloWorld" /> </beans>
将Web工程发布到Tomcat里面,然后启动Server
创建Client
接着创建客户端,在com.demo下面创建client-beans.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" 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/schema/jaxws.xsd"> <bean id="client" class="com.demo.HelloWorld" factory-bean="clientFactory" factory-method="create" /> <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean"> <property name="serviceClass" value="com.demo.HelloWorld" /> <property name="address" value="http://127.0.0.1:8080/WebServiceDemo/HelloWorld" /> </bean> </beans>
在创建测试类Client.java
package com.demo; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Client { public static Client self = new Client(); private HelloWorld client = null; private Client() { ApplicationContext context = new ClassPathXmlApplicationContext( new String[] { "com/demo/client-beans.xml" }); client = (HelloWorld) context.getBean("client"); } public HelloWorld getServer() { return client; } public String getText(String text) throws Exception { String response = getServer().sayHi(text); return response; } public static void main(String[] args) { // TODO Auto-generated method stub try { System.out.println(self.getText("cuiran")); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
然后进行测试运行。如果遇到类似这种错误“AXB 2.1 API is being loaded from the bootstrap classloader”说明你的web工程添加了J2EE 1.4或者是1.5 library. 这样就与jaxb-api-2.2.1.jar
冲突了,只需删除即可。
最后运行如图
相关文章推荐
- 巴巴运动网学习笔记四之在Web层集成Struts2.3与Spring3.1
- Spring学习笔记:spring集成hibernate
- Spring Web MVC 的学习笔记
- 《Spring 3.x 企业应用开发实战》学习笔记 第三章 IoC容器概述 3.2 相关Java基础知识 类装载器 反射机制
- 【Spring学习笔记】Spring框架的IoC容器学习笔记
- Spring2.5学习笔记1-控制反转-DI容器泛型访问
- spring学习笔记:ioc容器高级特性
- 《Spring 3.x 企业应用开发实战》学习笔记 第三章 IoC容器概述 3.2 相关Java基础知识 类装载器 反射机制
- Spring3.x学习笔记----Spring容器(不断更新)
- spring web flow学习笔记一
- [Webservice] web service入门学习笔记
- webservice 笔记(小结) axis2 集成spring 传递对象
- Spring通过容器获取配置对象及事件注入(学习笔记二)
- webservice 笔记(小结) axis2 集成spring 发布服务
- 《Spring 3.x 企业应用开发实战》学习笔记 第三章 IoC容器概述 3.5 Bean的生命周期
- FastSpring学习笔记五(Web页面显示)
- Spring视频学习笔记(1)IoC容器
- Spring2.5学习笔记1-控制反转-DI容器配置元数据方式
- Java 学习笔记08:在Eclipse中的安装Jetty web运行容器
- FastSpring学习笔记五(Web页面显示)