當前為10.0版本文檔,更多實例內容將在最新幫助文檔中展現,點選跳轉至 最新版幫助文檔

WebService程序數據集之jws方式

1. 準備工作

1.1 Eclipse 工程下引用 FineReport JAR 包

當我們在 FineReport 設計器基礎上進行二次開發,首先需要引入 FineReport 設計器下的 JAR 包,詳細點擊 Eclipse 中啓動設計器

1.2 Eclipse 工程下引用第三方 JAR 包

Eclipse 中也需要引入%AXIS_HOME%/web-inf/lib下面的 JAR 包,如何導入可參考 編譯Java程序 第2.2.2 節。

1.3 報表環境引用第三方 JAR 包

本地 FineReport 設計器訪問程序數據集時,将 %AXIS_HOME%/web-inf/lib下面的 JAR 包(除了log4j-1.2.8.jar,會沖突),拷貝到設計器%FR_HOME%/webapps/webroot/WEB-INF/lib 下,拷貝成功後重啓設計器。

1.4 搭建 axis 服務器

本文示例使用 axis1.4:下載 axis-bin-1_4.zip, 解壓後将 webapps/axis 這個目錄複制到 %TOMCAT_HOME%/webapps/ 下,然後啓動 Tomcat, 打開 URL: http://localhost:8080/axis/,axis 部署成功,如下圖所示:

222

2. 示例

2.1 WebService 應用服務

Tomcat 下的 axis 工程中以 JWS 方式發布了一個 WebService 應用服務 TestWS2TDClient.jws,返回一個數組數據。如下:

新建 TestWS2TDClient.java 文件,内容如下:

public class TestWS2TDClient {
public String[][] getTD() {
String[][] a = { { "城市", "銷售員", "銷售額" }, { "江蘇", "Anna", "230" }, { "江蘇", "Alex", "190" },
{ "江蘇", "Jack", "320" }, { "江蘇", "Apple", "210" }, { "浙江", "Faye", "150" }, { "浙江", "Sammi", "280" } };
return a;
}
}

以 JWS 方式發布 WebService:将寫好的 TestWS2TDClient.java 文件重命名爲TestWS2TDClient.jws,編碼格式爲 GBK,放在%Tomcat_HOME%\webapps\axis\即可。
222

訪問http://localhost:8080/axis/TestWS2TDClient.jws,如下圖所示:

222

點擊 Click to see the WSDL,如下圖所示:

222

注:若出現報錯,提示需要 tools.jar,那麽就将 JDK 下面的 tools.jar 放到 axis 的 lib 文件夾中。

2.2 在 Java 類中訪問 WebService 數據源

JAVA 中發送一個 SOAP 請求,訪問 TestWS2TDClient.jws 這個 WebService,得到返回的數據,代碼如下:

try {
String endpoint = "http://localhost:8080/axis/TestWS2TDClient.jws";
Service service = new Service(); //創建一個服務(service)調用(call)
Call call = (Call) service.createCall(); // 通過service創建call對象
call.setTargetEndpointAddress(new java.net.URL(endpoint)); // 設置service所在URL
call.setOperationName(new QName("http://localhost:8080/axis/TestWS2TDClient.jws","getTD"));
// 調用service中的getTD方法
String[][] ret = (String[][])call.invoke(new Object[] {});
// getTD方法沒有參數,因此傳一個空的對象,得到service中getTD返回的數據
return ret;
} catch (Exception e) {
e.printStackTrace();
}

注:SOAP 即簡單對象訪問協議,客戶端發送一個請求,調用相應的對象, 然後服務器返回結果。這些消息是 XML 格式的,并且封裝成符合 HTTP 協議的消息。

2.3 将獲得數據轉爲程序數據集

訪問 WebService 後,該服務會返回數據給客戶端,該例中返回一個字符串數組。定義 WebServiceTableData.java 類,擴展 AbstractTableData,将獲得的數組數據轉爲程序數據集。完整代碼請參見:

https://code.fanruan.com/demo/example/src/release/10.0/src/main/java/com/fr/data/WebServiceTableData.java

2.3 編譯 class 文件

将編譯好的 WebServiceTableData.class 文件拷貝到%FR_HOME%/webapps/webroot/WEB-INF/classes/com/fr/data文件夾下。

2.4 設計器中調用程序數據集

新建報表,定義數據集,選擇程序數據集,選擇定義好的程序數據集 WebServiceTableData.class,啓動 Tomcat 服務器,點擊預覽,效果如下圖所示:

222

附件列表


主題: 原簡體文檔
  • 有幫助
  • 沒幫助
  • 只是瀏覽

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

9s后關閉

反饋已提交

網絡繁忙