JAXWS CXF GlobalWeather + MyEclipse + Maven + Dom4j Byron自學視頻05
JAXWS CXF GlobalWeather + MyEclipse + Maven + Dom4j Byron自學視頻05
使用 Apache CXF 調用 全球氣象 GlobalWeather 提供的 WebService
範例來源: http://www.webservicex.net/globalweather.asmx
- Tags: jaxws, cxf, apache, webservice, myeclipse, maven, hello world, java, eclipse, byron, wsdl2java, wsdl first, jetty, tomcat, jaxb, marshal, unmarshal, dom4j, jaxen, global, weather, 氣象
Powered by VideoBam - Free Video Hosting提及技巧:
* WDSL 內定目錄
* 用 DOM4J 取得温度節點
* 用 Spring 取得 proxy bean
* pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.wyd.jaxws</groupId> <artifactId>jaxws-cxf-wsdl</artifactId> <version>0.0.1-SNAPSHOT</version> <properties> <cxf.version>2.3.3</cxf.version> </properties> <dependencies> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>${cxf.version}</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>${cxf.version}</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>jaxen</groupId> <artifactId>jaxen</artifactId> <version>1.1.1</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.cxf</groupId> <artifactId>cxf-codegen-plugin</artifactId> <version>${cxf.version}</version> <executions> <execution> <id>generate-sources</id> <phase>generate-sources</phase> <configuration> <!-- 默認的 產生source檔 存放位置, 故可省略不寫 <sourceRoot>${project.build.directory}/generated-sources/cxf</sourceRoot> --> <!-- 另一種指定 WSDL 檔案的方式 <wsdlOptions> <wsdlOption> <wsdl>${basedir}/src/main/wsdl/ZzhelloWorld.wsdl</wsdl> </wsdlOption> </wsdlOptions> --> <!-- 默認的 WSDL檔 存放位置, 故也可省略不寫 --> <wsdlRoot>${basedir}/src/main/resources/wsdl</wsdlRoot> <includes> <include>*.wsdl</include> </includes> </configuration> <goals> <goal>wsdl2java</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
* client-beans.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:jaxws="http://cxf.apache.org/jaxws" 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.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> <jaxws:client id="weatherClient" serviceClass="net.webservicex.GlobalWeatherSoap" address="http://www.webservicex.net/globalweather.asmx" /> <!-- 另一種代理工廠方式 <bean id="client" class="net.webservicex.GlobalWeatherSoap" factory-bean="clientFactory" factory-method="create" /> <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean"> <property name="serviceClass" value="net.webservicex.GlobalWeatherSoap" /> <property name="address" value="http://www.webservicex.net/globalweather.asmx" /> </bean> --> </beans>
* WeatherProxyTest.java
package junit.test; import java.util.List; import net.webservicex.GlobalWeatherSoap; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.Node; public class WeatherProxyTest { public static void main(String[] args) { //利用 CXF client端代理工廠 取得 WebService JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean(); factoryBean.setServiceClass(GlobalWeatherSoap.class); factoryBean.setAddress("http://www.webservicex.net/globalweather.asmx"); GlobalWeatherSoap client = (GlobalWeatherSoap) factoryBean.create(); String citiesXml = client.getCitiesByCountry("taiwan"); String weatherXml = client.getWeather("taipei", "taiwan"); System.out.println(weatherXml); try { //利用 dom4j 將 XML字串 轉為 DOM物件 Document doc = DocumentHelper.parseText(citiesXml); //利用 XPath 定位到 DOM的節點 List<Element> cityList = doc.selectNodes("//Table/City"); //傳回符合的所有節點 for (Element e : cityList) { System.out.println(e.getText()); } Document weatherDoc = DocumentHelper.parseText(weatherXml); Node temperature = weatherDoc.selectSingleNode("//Temperature"); //傳回單一節點 System.out.println("台北温度:" + temperature.getText()); } catch (DocumentException e) { e.printStackTrace(); } } }
* WeatherSpringTest.java
package junit.test; import java.util.List; import net.webservicex.GlobalWeatherSoap; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.Node; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class WeatherSpringTest { public static void main(String[] args) { //利用 CXF 搭配 Spring 取得 WebService ApplicationContext context = new ClassPathXmlApplicationContext("client-beans.xml"); GlobalWeatherSoap client = (GlobalWeatherSoap) context.getBean("weatherClient"); String citiesXml = client.getCitiesByCountry("taiwan"); try { //利用 dom4j 將 XML字串 轉為 DOM物件 Document citiesDoc = DocumentHelper.parseText(citiesXml); //利用 XPath 定位到 DOM的節點 List<Element> cityList = citiesDoc.selectNodes("//Table/City"); //傳回符合的所有節點 for (Element city : cityList) { String weatherXml = null; try { weatherXml = client.getWeather(city.getText(), "taiwan"); Document weatherDoc = DocumentHelper.parseText(weatherXml); Node temperature = weatherDoc.selectSingleNode("//Temperature"); //傳回單一節點 System.out.println(city.getText() + ": " + temperature.getText()); } catch (Exception e) { System.out.println("錯了: " + city.getText() + ": " + weatherXml); } } } catch (DocumentException e) { e.printStackTrace(); } } }
* 輸出:
Kangshan Tw-Afb: 73 F (23 C) 錯了: Chinmem / Shatou Air Force Base: Data Not Found Pingtung South Air Force Base: 73 F (23 C) 錯了: Mazu: Data Not Found 錯了: Feng Nin Tw-Afb: Data Not Found 錯了: Chia Tung: Data Not Found 錯了: Taoyuan Ab = 589650: Data Not Found Kaohsiung International Airport: 75 F (24 C) Chiayi Tw-Afb: 68 F (20 C) 錯了: Hengchun: Data Not Found 錯了: Taichung Tw-Afb: Data Not Found 錯了: Dongsha: Data Not Found 錯了: Wuchia Observatory: Data Not Found 錯了: Ilan: Data Not Found 錯了: Tainan Tw-Afb: Data Not Found 錯了: Dongshi: Data Not Found 錯了: Hsinchu Tw-Afb: Data Not Found 錯了: Makung Ab: Data Not Found 錯了: Chihhang Tw-Afb: Data Not Found 錯了: Pingtung North Air Force Base: Data Not Found Sungshan / Taipei: 57 F (14 C) Chiang Kai Shek: 57 F (14 C) 錯了: Pa Kuei / Bakuai: Data Not Found 錯了: Hulien Ab: Data Not Found
JAXWS CXF GlobalWeather + MyEclipse + Maven + Dom4j Byron自學視頻05相关推荐
- JAXWS CXF Spring + MyEclipse + Maven + Tomcat Byron自學視頻02
JAXWS CXF Spring + MyEclipse + Maven + Tomcat Byron自學視頻02 Description: 使用 Apache CXF 建置 WebService 並 ...
- JAXWS CXF HelloWorld + MyEclipse + Maven + Jetty Byron自學視頻01
JAXWS CXF HelloWorld + MyEclipse + Maven + Jetty Byron自學視頻01 Description: 使用 Apache CXF 建置 WebServic ...
- JAXWS CXF JAXB + MyEclipse + Maven Byron自學視頻04
JAXWS CXF JAXB + MyEclipse + Maven Byron自學視頻04 Description: 使用 Apache CXF 搭配 wsdl2java + JAXB 調用 Web ...
- JAXWS CXF WSDL first + MyEclipse + Maven Byron自學視頻03
JAXWS CXF WSDL first + MyEclipse + Maven Byron自學視頻03 Description: 使用 Apache CXF 搭配 wsdl2java 調用 WebS ...
- MyEclipse + Maven开发Web工程的配置
MyEclipse + Maven开发Web工程的配置 1. 使用Maven创建webapp工程----原因是使用Maven时一般需要遵循一定的目录结构,虽然也可以使用不同的目录结构,但目前还不熟悉如 ...
- MyEclipse + Maven开发Web工程的详细配置过程
好久没做Web方面的开发,今天突然想弄弄SpringMVC,因为不久前又学了点Maven觉得非常好,所以在弄SpringMVC这个Web框架时想使用Maven来做,但是问题又来了,我一直是在Eclip ...
- MyEclipse — Maven+Spring+Struts+Hibernate 整合 [学习笔记-1]
示例数据库test,用户信息表 MyEclipse连接 MySql Database . MyEclipse创建Web工程 ,并加入Hibernate支持 [项目右键->MyEclipse-&g ...
- MyEclipse Maven 警告: Failed to scan JAR [file:/C:/xxxxx.jar] from WEB-INF/lib
警告: Failed to scan JAR [file:/C:/Program%20Files/Tomcat%207.0/me-webapps/nlp/WEB-INF/lib/xercesImpl- ...
- myeclipse maven 创建 web项目
为什么80%的码农都做不了架构师?>>> maven是个项目管理工具,集各种功能于一身,下面介绍maven web项目在eclipse种的配置,并于tomcat集成.配置成功后 ...
最新文章
- 【Kotlin】Kotlin 自定义组件 ( 自定义 View | 自定义 SurfaceView )
- java 消息队列_java消息队列
- 认识Linux设备驱动模型和Kobject
- 江翰服务器保护系统(JH-Data Backup server)
- java连接摄像头_Java实现 海康摄像头抓拍图像(示例代码)
- static_cast、dynamic_cast、reinterpret_cast、const_cast[转]
- 如何为.NETCore安装汉化包智能感知
- Web前端基础---认识HTML及其组成---标签、框架
- android xml 多行注释,C#中的XML多行注释 - 我做错了什么?
- echarts按照时间显示柱状图_百度Echarts 柱状图 动态显示
- free、detele与野指针
- MyBatisPlus的使用--十数个案例足以让你步入mybatisplus
- 基于微软 SAPI 的 TTS 程序实现
- SSO (Single Sign On)
- 【Western Digital】常用固件模块编号及作用介绍
- vue 点赞+收藏 图标
- CTPN windows下实现
- Spark性能优化--如何解决数据倾斜
- pycharm执行rf测试用例和日志监听
- 全面详细介绍一个P2P网贷领域的ERP系统的主要功能