Apache CXF简单WebService例子

一.开发环境

我的开发环境是:

MyEclipse 6.5

Tomcat 6.0

Apache cxf-2.3.0 下载地址: http://www.apache.org/dist/cxf/2.3.0/

二.开发步骤

创建Server

1. 将下载的cxf-2.3.0 解压。然后在MyEclipse里面添加一个

User Library名字叫library-cxf-2.3.0 把 lib下的包都添加进去。

2.新建一个Web工程cxfdemo,并添加library-cxf-2.3.0,然后建个com.demo包。在包里面创建HelloWorld接口

代码如下

/** * HelloWorld.java * 版权所有(C) 2010 cuiran2001@163.com * 创建:崔冉 Dec 2, 2010 9:47:44 AM */ package com.demo; import javax.jws.WebService; /** * @author 崔冉 * @version 1.0.0 * @desc 接口HelloWorld */ @WebService public interface HelloWorld { String sayHi(String text); }

再创建一个类实现HelloWorld接口

/** * HelloWorldImpl.java * 版权所有(C) 2010 cuiran2001@163.com * 创建:崔冉 Dec 2, 2010 9:49:17 AM */ package com.demo; import javax.jws.WebService; /** * @author 崔冉 * @version 1.0.0 * @desc 实现HelloWorld接口 */ @WebService public class HelloWorldImpl implements HelloWorld { /** * */ public String sayHi(String text) { return "Hi,"+text; } }

然后修改web.xml里面内容

<?xml version="1.0" encoding="UTF-8"?> <web-app> <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> <display-name>CXF Servlet</display-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/cxfdemo/HelloWorld" /> </bean> </beans>

在创建测试类Client.java

/** * Client.java * 版权所有(C) 2010 cuiran2001@163.com * 创建:崔冉 Dec 2, 2010 9:53:30 AM */ package com.demo; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * @author 崔冉 * @version 1.0.0 * @desc 测试类 */ public class Client { public static Client self = new Client(); private HelloWorld client = null; private Client() { // START SNIPPET: 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; } /** * @param args */ 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

冲突了,只需删除即可。

最后运行如图

源码下载地址:http://dl.dbank.com/c0vhvbrxlr

对于jar包下载http://dl.dbank.com/c0y67j2hqq

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值