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

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

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

    java隨記

    堅持就是勝利!

     

    j2ee web service開發(二) 動態代理與動態調用

    ?j2ee web service 客戶端的三種調用方式: (一)占位程序:該種調用方式需要服務端生成所謂的占位程序,也是性能最好的一種方式,據有的文檔介紹說用占位程序實現的web服務不能實現各種編程語言比如C#之是互相調用就是會引起互操作性的問題.而且生成占位程序的web服務的確稍麻煩一點,更重要的是我不喜歡這種方式,也就不作備忘了:)。

    (二)動態代理:該種方式需要一個指向WSDL文檔的URL。具體實現:

    ??????? ServiceFactoryImpl factory = new ServiceFactoryImpl();

    // 工廠類,取得service對象,

    ?

    ??????? URL wsdlURL = new File(? "complexType-array/WEB-INF/wsdl/CountUser.wsdl").??????????????? ??toURL(); //wsdl 文檔的URL 它可以是一個遠程的URL 但是本例引用本地硬盤上的一個wsdl文件

    其好處是提高程序的性能。

    ??????? URL mappingURL = new File("complexType-array/WEB-INF/CountUser.xml").???????????????????????? toURL(); // 映射文件的URL 需要著重說明的就是這個映射文件了,標準的j2ee web service API實現中可不需要這玩意,但是在Jboss的實現中不要這個就會報錯cannot obtain java mapping type...,在jboss下開發的web 服務客戶端移植時需要特別注意,麻煩!

    ??????? QName qname = new QName("http://array", "CountUserService");

    ??????? Service service = factory.createService(wsdlURL, qname, mappingURL);// 通過工廠方法得到一個Service對象,但createService(wsdlURL, qname, mappingURL)方法是jboss的具體實現增加一的一個方法,標準API可沒有這玩意,對于數組類型的傳遞只能用這個方法了,奇怪的是客戶端居然需要部署在服務器端的映射文件,沒勁!???????

    ??????? CountUser port = (CountUser) service.getPort(CountUser.class); // 取得服務器端的接口。

    ( 三)動態調用。

    ?

    ??????? URL wsdlURL = new File(

    ??????????????? "complexType-array/WEB-INF/wsdl/CountUser.wsdl").

    ????????????????????? toURL();

    ??????? URL mappingURL = new File(

    ??????????????? "complexType-array/WEB-INF/CountUser.xml").

    ???????????????????????? toURL();

    ??????? QName qname = new QName("http://array", "CountUserService");// 表示服務名QName對象。

    ??????? Service service = factory.createService(wsdlURL, qname, mappingURL);

    ??????? Call call = service.createCall();

    ??? // 沒什么好說的,依然要用到wsdl文檔文件,映射文件。

    ??????? call.setOperationName(new QName(TARGET_NAMESPACE, "countUser"));// 指定方法名

    ??????? call.setPortTypeName(new QName("CountUser"));// 指定端口名

    ("value",Constants.TYPE_LITERAL_ANYSIMPLETYPE,ParameterMode.IN);

    ??????? call.setReturnType(Constants.TYPE_LITERAL_INT);

    ??????? Object retObj = call.invoke(new Object[] {user});

    ?

    ?

    ?

    服務器端的實現參見j2ee web service()完整的客戶端代碼如下:

    package array;

    ?

    import java.net.URL;

    import javax.xml.rpc.*;

    import javax.xml.namespace.QName;

    import java.util.*;

    import java.io.File;

    import org.jboss.ws.jaxrpc.ServiceFactoryImpl;

    import org.jboss.ws.Constants;

    ?

    public class ArrayExample {

    ? ?? public ArrayExample() {

    ??? }

    ?

    ??? private static final String TARGET_NAMESPACE =

    ??????????? "http://array";

    ?

    ??? private CountUser getPort() throws Exception {

    ?

    ??????? ServiceFactoryImpl factory = new ServiceFactoryImpl();

    ?

    ??????? URL wsdlURL = new File(

    ??????????????? "complexType-array/WEB-INF/wsdl/CountUser.wsdl").

    ????????????????????? toURL();

    ??????? URL mappingURL = new File(

    ??????????????? "complexType-array/WEB-INF/CountUser.xml").

    ???????????????????????? toURL();

    ??????? QName qname = new QName("http://array", "CountUserService");

    ??????? Service service = factory.createService(wsdlURL, qname, mappingURL);

    ?

    ??????? CountUser port = (CountUser) service.getPort(CountUser.class);

    ?

    ??????? return port;

    ??? }

    ?

    ??? public void testComplexUserArray(User[] user) throws

    ??????????? Exception {

    ??????? CountUser port = getPort();

    ?

    ??????? try {

    ??????????? int returnValue = port.countUser(user);

    ??????????? System.out.print(returnValue);

    ??????? } catch (Exception e) {

    ??????????? throw e;

    ??????? }

    ??? }

    ?

    ??? public void DIIClient(User[] user) throws Exception {

    ?

    ??????? ServiceFactoryImpl factory = new ServiceFactoryImpl();

    ?

    ??????? URL wsdlURL = new File(

    ??????????????? "complexType-array/WEB-INF/wsdl/CountUser.wsdl").

    ????????????????????? toURL();

    ??????? URL mappingURL = new File(

    ??????????????? "complexType-array/WEB-INF/CountUser.xml").

    ???????????????????????? toURL();

    ??????? QName qname = new QName("http://array", "CountUserService");

    ??????? Service service = factory.createService(wsdlURL, qname, mappingURL);

    ??????? Call call = service.createCall();

    ??????? call.setOperationName(new QName(TARGET_NAMESPACE, "countUser"));

    ??????? call.setPortTypeName(new QName("CountUser"));

    ?

    ??????? call.setReturnType(Constants.TYPE_LITERAL_INT);

    ?

    ????? ??Object retObj = call.invoke(new Object[] {user});

    ?

    ??????? System.out.println(retObj.toString());

    ??? }

    ?

    ??? public static void main(String[] args) throws Exception {

    ??????? ArrayExample arrayexample = new ArrayExample();

    ??????? User[] user = new User[2];

    ??????? user[0] = new User(" 張三", "027-88888888", new Date());

    ??????? user[1] = new User("lisi", null, new Date());

    ??????? //arrayexample.testComplexUserArray(user);

    ??????? arrayexample.DIIClient(user);

    ??? }

    }

    ?

    ?

    ?至此好象一個可以應用的web service服務就完成了,然而這才僅僅只是開始~~~~~~~~~
    如果你想賜教或者討論,歡迎加入QQ群:30406099

    posted on 2006-11-07 10:40 傻 瓜 閱讀(2965) 評論(0)  編輯  收藏 所屬分類: j2ee web service

    導航

    統計

    常用鏈接

    留言簿(7)

    我參與的團隊

    隨筆分類

    隨筆檔案

    文章分類

    友情鏈接

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 99re热免费精品视频观看| 一本久久综合亚洲鲁鲁五月天| 亚洲a视频在线观看| 国内大片在线免费看| japanese色国产在线看免费| 亚洲综合婷婷久久| 免费看大美女大黄大色| 中国一级毛片视频免费看| 亚洲午夜久久久久久尤物| 四虎国产精品免费视| 永久免费视频网站在线观看| 色屁屁www影院免费观看视频| 91精品国产亚洲爽啪在线影院| 午夜神器成在线人成在线人免费 | 亚洲欧美国产欧美色欲| 狠狠综合久久综合88亚洲| ww在线观视频免费观看| 黄色一级视频免费| 精品亚洲AV无码一区二区三区| 国产亚洲精久久久久久无码77777 国产亚洲精品成人AA片新蒲金 | 三根一起会坏掉的好痛免费三级全黄的视频在线观看| 综合自拍亚洲综合图不卡区| 四虎永久免费观看| 精品福利一区二区三区免费视频| 深夜福利在线视频免费| 亚洲自偷自偷在线成人网站传媒| 亚洲精品无码专区久久久| 国产在线不卡免费播放| 100部毛片免费全部播放完整| 亚洲日韩在线观看免费视频| 亚洲午夜精品一区二区麻豆| 亚洲一区免费观看| 亚洲五月综合缴情在线观看| 国产高清视频在线免费观看| 日韩精品免费一级视频| 久久久久久影院久久久久免费精品国产小说 | 亚洲91av视频| 亚洲熟妇无码乱子AV电影| 免费夜色污私人影院在线观看| 一二三四免费观看在线电影| 99在线观看精品免费99|