<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java軟件報表軟件技術博客

    java報表軟件技術匯總 java報表軟件制作 報表軟件新聞
    posts - 355, comments - 100, trackbacks - 0, articles - 3
       :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

    在使用WebService作為項目的數據源時,希望報表中也是直接調用這個WebService數據源,而不是定義數據連接調用對應的數據庫表,這樣要怎么實現呢?

    在程序中訪問WebService應用服務,將WebService返回的數據轉為程序數據集,然后在設計器中調用。

    axis1.4上的WebService為例,介紹其取數方式以及將數據轉換為WebService的程序數據集的過程。

    WebService應用服務

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

    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,放在Tomcat\webapps\axis即可。

    java類中訪問WebService數據源

    Java中發布一個soap請求,訪問TestWS2TDClient.java,得到返回的數據,代碼如下:

    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協議的消息。

    在此期間需要引入axis.jar、commons-discovery-0.2.jar、commons-logging-1.0.4.jar、wadl4j-a.5.a.jar、log4j-1.2.8.jar、jaxrpc.jar六個包,可以在zxis\WEB-INF\lib下找到。

    將獲得數據轉為程序數據集

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

    package com.fr.data;

    import javax.xml.namespace.QName;
    import org.apache.axis.client.Call;
    import org.apache.axis.client.Service;
    import com.fr.data.AbstractTableData;
    import com.fr.general.data.TableDataException;

    public class WebServiceTableData extends AbstractTableData{
        
    private String[][] data;
        
        
    public WebServiceTableData() {
            
    this.data = this.getData();
        }


        
    //獲取列數
        public int getColumnCount() throws TableDataException {
            
    return data[0].length;
        }


        
    //獲取列的名稱為數組中第一行的值
        public String getColumnName(int columnIndex) throws TableDataException {
            
    return data[0][columnIndex];
        }


        
    //獲取行數為數據的長度-1
        public int getRowCount() throws TableDataException {
            
    return data.length - 1;
        }


        
    //獲取值
        public Object getValueAt(int rowIndex, int columnIndex) {
            
    return data[rowIndex + 1][columnIndex];
        }


        
    public String[][] getData() {
            
    try {
                String endpoint 
    = "http://localhost:8080/axis/TestWS2TDClient.jws";
                Service service 
    = new Service();
                Call call 
    = (Call) service.createCall();
                call.setTargetEndpointAddress(
    new java.net.URL(endpoint));
                call.setOperationName(
    new QName("http://localhost:8080/axis/TestWS2TDClient.jws",
                        
    "getTD"));
                String[][] ret 
    = (String[][])call.invoke(new Object[] {});
                
    return ret;
            }
     catch (Exception e) {
                e.printStackTrace();
            }

            
    return new String[][] {};
        }

    }

    將編譯好的class文件拷貝到%FR_HOME%/WebReport/WEB-INF/classes/com/fr/data文件夾下。

    設計器中調用程序數據集

    新建報表,定義數據集,選擇程序數據集,選擇定義好的程序數據集WebServiceTableData.class,自定義數據集的名稱為ds1,啟動tomcat服務器,點擊預覽,效果如下:




    主站蜘蛛池模板: 免费看一级毛片在线观看精品视频| 一级黄色片免费观看| 黄网址在线永久免费观看 | 青娱乐免费视频在线观看| 中文字幕亚洲精品无码| 亚洲无码黄色网址| 亚洲人成免费网站| 特色特黄a毛片高清免费观看| 亚洲综合日韩中文字幕v在线 | 亚洲嫩模在线观看| 国产成人综合久久精品免费| 久久成人免费电影| 色噜噜狠狠色综合免费视频 | 猫咪免费人成网站在线观看入口 | 亚洲色精品88色婷婷七月丁香| 免费影院未满十八勿进网站| 一级大黄美女免费播放| 国产成人亚洲精品| 亚洲亚洲人成综合网络| 日本黄页网站免费| 蜜桃成人无码区免费视频网站| 精品一区二区三区无码免费直播| 亚洲精品综合久久中文字幕| 亚洲乱码中文字幕手机在线| 黄瓜视频影院在线观看免费| a级在线免费观看| 色屁屁在线观看视频免费| 亚洲国产日韩精品| 亚洲视频网站在线观看| 久久精品亚洲男人的天堂| 免费黄色网址入口| 99无码人妻一区二区三区免费| 毛片基地看看成人免费| 亚洲av综合日韩| 亚洲色在线无码国产精品不卡| 久久国产亚洲高清观看| 亚洲大尺度无码无码专区| 亚洲中文字幕无码专区| 国产嫩草影院精品免费网址| 成年女人毛片免费播放视频m| 蜜臀AV免费一区二区三区|