一.開發環境
我的開發環境是:
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