當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
IDEA快速 实现 SpringMVC 整合xfire 发布 WebService 服务
生活随笔
收集整理的這篇文章主要介紹了
IDEA快速 实现 SpringMVC 整合xfire 发布 WebService 服务
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 一、idea快速搭建web項目
- 二、xfire 服務(wù)方搭建
- 1. pom依賴
- 2. web.xml
- 3. 創(chuàng)建一個entity
- 4. 創(chuàng)建一個接口
- 5. 創(chuàng)建接口實現(xiàn)類
- 6. 在WEB-INF創(chuàng)建一個META-INF的目錄
- 7. 在META-INF創(chuàng)建一個xfire的目錄
- 8. 在xfire創(chuàng)建一個services.xml的目錄
- 二、xfire客戶端搭建
- 1. 創(chuàng)建xfire客戶端(企業(yè)版本)
- 2. xfire客戶端調(diào)用
| spring | 4.3.10.RELEASE |
| xfire | 1.26 |
一、idea快速搭建web項目
二、xfire 服務(wù)方搭建
1. pom依賴
<properties><spring.version>4.3.10.RELEASE</spring.version><xfire-all.version>1.2.6</xfire-all.version></properties><!--spring start--><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.version}</version></dependency><!--spring end--><dependency><groupId>org.codehaus.xfire</groupId><artifactId>xfire-all</artifactId><version>${xfire-all.version}</version></dependency>2. 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"><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><!-- webservices 接口 XFire 需要引入的 Servlet Start --><servlet><servlet-name>XFireServlet</servlet-name><servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class></servlet><!-- 區(qū)配前綴 Start --><servlet-mapping><servlet-name>XFireServlet</servlet-name><url-pattern>/servlet/XFireServlet/*</url-pattern></servlet-mapping><servlet-mapping><servlet-name>XFireServlet</servlet-name><url-pattern>/xfireUser/services/*</url-pattern></servlet-mapping><!-- 區(qū)配前綴 End --><!-- webservices 接口 XFire 需要引入的 Servlet End --> </web-app>3. 創(chuàng)建一個entity
@Data @AllArgsConstructor @NoArgsConstructor @Builder public class User implements Serializable {private Long id;private String name;private Integer age;private String email; }4. 創(chuàng)建一個接口
package com.gblfy.service;public interface IXfireService {/*** 測試傳遞json類型 的User對象 類型的信息 獲取戶信息接口** @param jsonUser* @return*/public String getUser(String jsonUser);}5. 創(chuàng)建接口實現(xiàn)類
package com.gblfy.service.impl;import com.gblfy.service.IXfireService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service;@Service @Slf4j public class IXfireServiceImpl implements IXfireService {/*** 測試傳遞User對象 類型的信息 獲取戶信息接口*/@Overridepublic String getUser(String jsonUser) {log.info("接收的到 紐約 發(fā)送的報文 {}", jsonUser);return jsonUser;} }6. 在WEB-INF創(chuàng)建一個META-INF的目錄
7. 在META-INF創(chuàng)建一個xfire的目錄
8. 在xfire創(chuàng)建一個services.xml的目錄
services.xml 配置內(nèi)容如下:
<?xml version="1.0" encoding="UTF-8"?> <beans><service xmlns="http://xfire.codehaus.org/config/1.0"><!--1. 暴露的服務(wù)名2. 自定義命名空間3. 接口路徑4. 接口實現(xiàn)類路徑 --><name>IXfireService</name><namespace>CustomNamespaces</namespace><serviceClass>com.gblfy.service.IXfireService</serviceClass><implementationClass>com.gblfy.service.impl.IXfireServiceImpl</implementationClass></service> </beans>項目截圖:
啟動項目驗證測試:
瀏覽器訪問:
注:
格式:http://ip地址:端口號/項目名/區(qū)配前綴/暴露的服務(wù)名| 協(xié)議 | http:// |
| ip地址 | localhost |
| 端口號 | 8081 |
| 項目名 | XFireTest |
| 區(qū)配前綴 | /services/和/servlet/XFireServlet/ |
| 暴露的服務(wù)名 | HelloService |
| 服務(wù)后綴 | ?wsdl |
| 部署服務(wù)器 | tomcat9 |
命名空間和方法名已標(biāo)注:
瀏覽器訪問:
這樣服務(wù)端就用哪個xfire發(fā)布服務(wù)成功了。
二、xfire客戶端搭建
1. 創(chuàng)建xfire客戶端(企業(yè)版本)
package com.gblfy.utils;import lombok.extern.slf4j.Slf4j; import org.codehaus.xfire.client.Client; import org.springframework.stereotype.Repository;import java.net.MalformedURLException; import java.net.URL;@Repository @Slf4j public class WSXfireClientUtils {/*** WSXfire 客戶端** @param url 代用地址* @param nameSpace 命名空間* @param method 方法名* @param tReqXml 請求報文* @return tResXml 響應(yīng)報文* @throws MalformedURLException* @throws Exception*/public static String wSXfireClient(String url, String nameSpace, String method, String tReqXml) throws Exception {long forStrTime = 0L;long endToStart = 0L;Client client = new Client(new URL(url));client.setProperty(nameSpace, method);log.info("開始轉(zhuǎn)發(fā)請求報文******************************* {}", tReqXml);forStrTime = System.currentTimeMillis();Object[] result = client.invoke(method, new Object[]{tReqXml});log.info("響應(yīng)報文: {}", result[0]);long forEndTime = System.currentTimeMillis();endToStart = (long) (forEndTime - forStrTime);log.info("轉(zhuǎn)發(fā)消耗的時間: {} 毫秒", endToStart);String tResXml = (String) result[0];return tResXml;} }2. xfire客戶端調(diào)用
package utils;import com.fasterxml.jackson.databind.ObjectMapper; import com.gblfy.entity.User; import com.gblfy.utils.WSXfireClientUtils; import lombok.extern.slf4j.Slf4j; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component;@Component @Slf4j public class WSXfireClientTest {//引入json工具類private static final ObjectMapper MAPPER = new ObjectMapper();@Autowiredprivate WSXfireClientUtils wsXfireClient;@Testpublic void testXfireStrType() throws Exception {String url = "http://localhost:8080/xfireUser/services/IXfireService?wsdl";String nameSpace = "CustomNamespaces";String method = "getUser";String tReqXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" + "<bookstore>\r\n"+ " <book id=\"1\">\r\n" + " <name>方國軍</name>\r\n" + " <author>喬治馬丁</author>\r\n"+ " <year>2014</year>\r\n" + " <price>89</price>\r\n" + " </book>\r\n"+ " <book id=\"2\">\r\n" + " <name>安徒生童話</name>\r\n" + " <year>2004</year>\r\n"+ " <price>77</price>\r\n" + " <language>English</language>\r\n" + " </book> \r\n"+ "</bookstore>"; // String tReqXml = "Xfire客戶端調(diào)用成功";String message = wsXfireClient.wSXfireClient(url, nameSpace, method, tReqXml);log.info("返回報文 {}", message);}@Testpublic void testXfireObjToJsonStrType() throws Exception {String url = "http://localhost:8080/xfireUser/services/IXfireService?wsdl";String nameSpace = "CustomNamespaces";String method = "getUser";User user = new User().builder().id(1l).age(2).email("gblfy@163.com").name("gblfy").build();// 1. 數(shù)據(jù)對象轉(zhuǎn)jsonStr處理 易快速解析處理String tReqXml = MAPPER.writeValueAsString(user);String message = wsXfireClient.wSXfireClient(url, nameSpace, method, tReqXml);log.info("返回報文 {}", message);} }本文項目源碼:https://gitee.com/gb_90/webserice-column
總結(jié)
以上是生活随笔為你收集整理的IDEA快速 实现 SpringMVC 整合xfire 发布 WebService 服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MyBatis-Plus_入门试炼03
- 下一篇: 使用html2Canvas将页面转化为c