<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 傻 瓜 閱讀(2973) 評論(0)  編輯  收藏 所屬分類: j2ee web service

    導航

    統計

    常用鏈接

    留言簿(7)

    我參與的團隊

    隨筆分類

    隨筆檔案

    文章分類

    友情鏈接

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 老司机永久免费网站在线观看| 少妇人妻偷人精品免费视频| 免费看片A级毛片免费看| 亚洲国产美女在线观看| 四虎在线免费视频| 亚洲人成网站在线观看播放青青| 足恋玩丝袜脚视频免费网站| 91午夜精品亚洲一区二区三区| 91精品免费国产高清在线| 亚洲无成人网77777| 永久免费毛片在线播放| 亚洲男人的天堂网站| 免费一级一片一毛片| 好湿好大好紧好爽免费视频| 亚洲人成图片小说网站| 无码精品人妻一区二区三区免费看| 嫩草影院在线播放www免费观看| 久久亚洲精品成人av无码网站| 国产精品久久久久久久久免费| 亚洲欧好州第一的日产suv| 四虎永久成人免费| 特级av毛片免费观看| 亚洲精品乱码久久久久久中文字幕| 免费福利电影在线观看| jlzzjlzz亚洲jzjzjz| 啊v在线免费观看| 可以免费观看的毛片| 亚洲欧洲日韩国产一区二区三区| 日本免费人成黄页网观看视频| 一级做受视频免费是看美女| 婷婷亚洲久悠悠色悠在线播放| 成年人免费视频观看| 成人A毛片免费观看网站| 亚洲在成人网在线看| mm1313亚洲精品无码又大又粗 | 亚洲狠狠色丁香婷婷综合| 亚洲AⅤ无码一区二区三区在线| 中国一级特黄的片子免费| 亚洲人成777在线播放| 亚洲欧洲精品成人久久曰影片| 91成人在线免费视频|