Apache CXF簡單WebService例子

來源:互聯網
上載者:User

一.開發環境

我的開發環境是:

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介面

代碼如下

/**<br /> * HelloWorld.java<br /> * 著作權(C) 2010 cuiran2001@163.com<br /> * 建立:崔冉 Dec 2, 2010 9:47:44 AM<br /> */<br />package com.demo;</p><p>import javax.jws.WebService;</p><p>/**<br /> * @author 崔冉<br /> * @version 1.0.0<br /> * @desc 介面HelloWorld<br /> */<br />@WebService<br />public interface HelloWorld {<br />String sayHi(String text);<br />}<br />

 

再建立一個類實現HelloWorld介面

/**<br /> * HelloWorldImpl.java<br /> * 著作權(C) 2010 cuiran2001@163.com<br /> * 建立:崔冉 Dec 2, 2010 9:49:17 AM<br /> */<br />package com.demo;</p><p>import javax.jws.WebService;</p><p>/**<br /> * @author 崔冉<br /> * @version 1.0.0<br /> * @desc 實現HelloWorld介面<br /> */<br />@WebService<br />public class HelloWorldImpl implements HelloWorld {</p><p>/**<br /> *<br /> */<br />public String sayHi(String text) {</p><p>return "Hi,"+text;<br />}</p><p>}<br />

 

然後修改web.xml裡面內容

<?xml version="1.0" encoding="UTF-8"?><br /><web-app><br /> <context-param><br /> <param-name>contextConfigLocation</param-name><br /> <param-value>WEB-INF/beans.xml</param-value><br /> </context-param></p><p> <listener><br /> <listener-class><br /> org.springframework.web.context.ContextLoaderListener<br /> </listener-class><br /> </listener></p><p> <servlet><br /> <servlet-name>CXFServlet</servlet-name><br /> <display-name>CXF Servlet</display-name><br /> <servlet-class><br /> org.apache.cxf.transport.servlet.CXFServlet<br /> </servlet-class><br /> <load-on-startup>1</load-on-startup><br /> </servlet></p><p> <servlet-mapping><br /> <servlet-name>CXFServlet</servlet-name><br /> <url-pattern>/*</url-pattern><br /> </servlet-mapping></p><p></web-app><br />

 

 

在WEB-INF下面建立一個beans.xml

代碼如下

<?xml version="1.0" encoding="UTF-8"?><br /><beans xmlns="http://www.springframework.org/schema/beans"<br /> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br /> xmlns:jaxws="http://cxf.apache.org/jaxws"<br /> xsi:schemaLocation="http://www.springframework.org/schema/beans </p><p>http://www.springframework.org/schema/beans/spring-beans.xsd</p><p> http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"></p><p> <import resource="classpath:META-INF/cxf/cxf.xml" /><br /> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /><br /> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /></p><p> <jaxws:endpoint id="helloWorld" implementor="com.demo.HelloWorldImpl" address="/HelloWorld" /><br /></beans></p><p>

 

將Web工程發布到Tomcat裡面,然後啟動Server

 

 

 

  建立Client

  接著建立用戶端,在com.demo下面建立client-beans.xml。內容如下

<?xml version="1.0" encoding="UTF-8"?><br /><beans xmlns="http://www.springframework.org/schema/beans"<br /> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br /> xmlns:jaxws="http://cxf.apache.org/jaxws"<br /> xsi:schemaLocation="<br />http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd<br />http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd"></p><p> <bean id="client" class="com.demo.HelloWorld"<br /> factory-bean="clientFactory" factory-method="create" /></p><p> <bean id="clientFactory"<br /> class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean"><br /> <property name="serviceClass" value="com.demo.HelloWorld" /><br /> <property name="address" value="http://127.0.0.1:8080/cxfdemo/HelloWorld" /><br /> </bean></p><p></beans></p><p>

 

 

在建立測試類別Client.java

/**<br /> * Client.java<br /> * 著作權(C) 2010 cuiran2001@163.com<br /> * 建立:崔冉 Dec 2, 2010 9:53:30 AM<br /> */<br />package com.demo;</p><p>import org.springframework.context.ApplicationContext;<br />import org.springframework.context.support.ClassPathXmlApplicationContext;</p><p>/**<br /> * @author 崔冉<br /> * @version 1.0.0<br /> * @desc 測試類別<br /> */<br />public class Client {<br /> public static Client self = new Client();<br /> private HelloWorld client = null;</p><p> private Client() {<br /> // START SNIPPET: client<br /> ApplicationContext context = new ClassPathXmlApplicationContext(<br /> new String[]{"com/demo/client-beans.xml"});<br /> client = (HelloWorld) context.getBean("client");<br /> }</p><p> public HelloWorld getServer() {</p><p> return client;</p><p> }</p><p> public String getText(String text) throws Exception {<br /> String response = getServer().sayHi(text);<br /> return response;<br /> }</p><p>/**<br /> * @param args<br /> */<br />public static void main(String[] args) {<br />// TODO Auto-generated method stub<br />try {</p><p>System.out.println(self.getText("cuiran"));<br />} catch (Exception e) {<br />// TODO Auto-generated catch block<br />e.printStackTrace();<br />}</p><p>}</p><p>}<br />

 

 

    然後進行測試回合。如果遇到類似這種錯誤“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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.