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

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

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

    Terry.Li-彬

    虛其心,可解天下之問;專其心,可治天下之學;靜其心,可悟天下之理;恒其心,可成天下之業。

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks
    今天終于搞定,貼出來分享一下
    1、在www.apache.org上下載Axis1.4,將解壓后的Axis目錄文件復制到%TOMCATHOME%\webapps目錄下
    2、重新啟動Tomcat,訪問http://localhost:8080/axis,如果能訪問,表示Axis環境安裝成功
    3、在eclipse下建立webproject,將axis的jar包導入



    2JavaBean,分別叫做Person.javaBook.java,代碼如下
    Book.java
    package?com.lucky.axis.service;

    public?class?Book?{
    ????
    private?String?bookname;
    ????
    private?Long?isbn;
    ????
    private?float?price;
    ????
    private?Integer?pages;
    ????
    public?String?getBookname()?{
    ????????
    return?bookname;
    ????}

    ????
    public?void?setBookname(String?bookname)?{
    ????????
    this.bookname?=?bookname;
    ????}

    ????
    public?Long?getIsbn()?{
    ????????
    return?isbn;
    ????}

    ????
    public?void?setIsbn(Long?isbn)?{
    ????????
    this.isbn?=?isbn;
    ????}

    ????
    public?float?getPrice()?{
    ????????
    return?price;
    ????}

    ????
    public?void?setPrice(float?price)?{
    ????????
    this.price?=?price;
    ????}

    ????
    public?Integer?getPages()?{
    ????????
    return?pages;
    ????}

    ????
    public?void?setPages(Integer?pages)?{
    ????????
    this.pages?=?pages;
    ????}


    }



    Person.java
    package?com.lucky.axis.service;

    import?java.util.Map;

    public?class?Person?{
    ????
    private?String?name;
    ????
    private?int?age;
    ????
    private?Map?skill;
    ????
    private?Book?mybook;
    ????
    public?String?getName()?{
    ????????
    return?name;
    ????}

    ????
    public?void?setName(String?name)?{
    ????????
    this.name?=?name;
    ????}

    ????
    public?int?getAge()?{
    ????????
    return?age;
    ????}

    ????
    public?void?setAge(int?age)?{
    ????????
    this.age?=?age;
    ????}

    ????
    public?Map?getSkill()?{
    ????????
    return?skill;
    ????}

    ????
    public?void?setSkill(Map?skill)?{
    ????????
    this.skill?=?skill;
    ????}

    ????
    public?Book?getMybook()?{
    ????????
    return?mybook;
    ????}

    ????
    public?void?setMybook(Book?mybook)?{
    ????????
    this.mybook?=?mybook;
    ????}


    }



    ? 建立服務器端代碼,命名為PersonInfoService.java,實現三個method,分別為public String getPersonInfo(Person person)public Book setBookInfo(String bookname, Long isbn)public Person getPersonInfo(),以下為全部代碼:

    package?com.lucky.axis.service;

    import?java.util.HashMap;
    import?java.util.Map;

    public?class?PersonInfoService?{
    ????
    public?PersonInfoService()?{
    ????}


    ????
    public?String?getPersonInfo(Person?person)?{
    ????????String?personinfo?
    =?"";
    ????????personinfo?
    =?"Hello,?"?+?person.getName()
    ????????????????
    +?"?!?This?is?you?information\r\n";
    ????????personinfo?
    =?personinfo?+?"Ages:?"?+?person.getAge()?+?"\r\n";
    ????????Map?skill?
    =?person.getSkill();
    ????????String?strskill?
    =?"";
    ????????strskill?
    =?strskill?+?skill.get("NAME")?+?"?:?you?have?"
    ????????????????
    +?skill.get("YEAR")?+?"?years?experience!\r\n";
    ????????personinfo?
    =?personinfo?+?strskill;
    ????????personinfo?
    =?personinfo?+?"Book?Name?:?"
    ????????????????
    +?person.getMybook().getBookname()?+?"\r\n";
    ????????personinfo?
    =?personinfo?+?"ISBN?:?"
    ????????????????
    +?person.getMybook().getIsbn()?+?"\r\n";
    ????????personinfo?
    =?personinfo?+?"You?pay?$"
    ????????????????
    +?person.getMybook().getPrice()?+?"?for?this?book.\r\n";
    ????????personinfo?
    =?personinfo?+?"This?book?have?"
    ????????????????
    +?person.getMybook().getPages()?+?"?pages.\r\n";
    ????????
    return?personinfo;
    ????}


    ????
    public?Book?setBookInfo(String?bookname,?Long?isbn)?{
    ????????Book?book?
    =?new?Book();
    ????????book.setBookname(bookname);
    ????????book.setIsbn(isbn);
    ????????book.setPages(
    new?Integer(265));
    ????????book.setPrice((
    float)?25.65);
    ????????
    return?book;
    ????}


    ????
    public?Person?getPersonInfo()?{
    ????????Person?person?
    =?new?Person();
    ????????person.setName(
    "Aaron");
    ????????person.setAge(
    26);
    ????????Map?skill?
    =?new?HashMap();
    ????????skill.put(
    "NAME",?"JAVA");
    ????????skill.put(
    "YEAR",?"3");
    ????????person.setSkill(skill);
    ????????Book?book?
    =?new?Book();
    ????????book.setBookname(
    "<Thinking?in?Java>");
    ????????book.setIsbn(
    new?Long(456256821));
    ????????book.setPages(
    new?Integer(982));
    ????????book.setPrice((
    float)?99.8);
    ????????person.setMybook(book);
    ????????
    return?person;
    ????}


    }


    將編譯好的Java類直接放在%Tomcat%\webapps\axis\WEB-INFO\classess\目錄下。注意將整個包路徑復制到上述目錄中





    在%Tomcat%\webapps\axis\WEB-INF\classes目錄下建立 server-config.wsdd 文件,內容如下
    <?xml?version="1.0"?encoding="UTF-8"?>
    <deployment?xmlns="http://xml.apache.org/axis/wsdd/"
    ????xmlns:java
    ="http://xml.apache.org/axis/wsdd/providers/java">
    ????
    <globalConfiguration>
    ????????
    <parameter?name="sendMultiRefs"?value="true"?/>
    ????????
    <parameter?name="disablePrettyXML"?value="true"?/>
    ????????
    <parameter?name="adminPassword"?value="admin"?/>
    ????????
    <parameter?name="attachments.Directory"
    ????????????value
    ="C:\Tomcat?5.0?(iplanetldap)\webapps\axis\WEB-INF\attachments"?/>
    ????????
    <parameter?name="axis.servicesPath"?value="/mossWS/"?/>
    ????????
    <parameter?name="dotNetSoapEncFix"?value="true"?/>
    ????????
    <parameter?name="enableNamespacePrefixOptimization"
    ????????????value
    ="false"?/>
    ????????
    <parameter?name="sendXMLDeclaration"?value="true"?/>
    ????????
    <parameter?name="sendXsiTypes"?value="true"?/>
    ????????
    <parameter?name="attachments.implementation"
    ????????????value
    ="org.apache.axis.attachments.AttachmentsImpl"?/>
    ????????
    <requestFlow>
    ????????????
    <handler?type="java:org.apache.axis.handlers.JWSHandler">
    ????????????????
    <parameter?name="scope"?value="session"?/>
    ????????????
    </handler>
    ????????????
    <handler?type="java:org.apache.axis.handlers.JWSHandler">
    ????????????????
    <parameter?name="scope"?value="request"?/>
    ????????????????
    <parameter?name="extension"?value=".jwr"?/>
    ????????????
    </handler>
    ????????
    </requestFlow>
    ????
    </globalConfiguration>
    ????
    <handler?name="Authenticate"
    ????????type
    ="java:org.apache.axis.handlers.SimpleAuthenticationHandler"?/>
    ????
    <handler?name="LocalResponder"
    ????????type
    ="java:org.apache.axis.transport.local.LocalResponder"?/>
    ????
    <handler?name="URLMapper"
    ????????type
    ="java:org.apache.axis.handlers.http.URLMapper"?/>
    ????
    <handler?name="soapmonitor"
    ????????type
    ="java:org.apache.axis.handlers.SOAPMonitorHandler">
    ????????
    <parameter?name="wsdlURL"
    ????????????value
    ="/axis/SOAPMonitorService-impl.wsdl"?/>
    ????????
    <parameter?name="namespace"
    ????????????value
    ="http://tempuri.org/wsdl/2001/12/SOAPMonitorService-impl.wsdl"?/>
    ????????
    <parameter?name="serviceName"?value="SOAPMonitorService"?/>
    ????????
    <parameter?name="portName"?value="Demo"?/>
    ????
    </handler>
    ????
    <service?name="AdminService"?provider="java:MSG">
    ????????
    <parameter?name="allowedMethods"?value="AdminService"?/>
    ????????
    <parameter?name="enableRemoteAdmin"?value="false"?/>
    ????????
    <parameter?name="className"?value="org.apache.axis.utils.Admin"?/>
    ????????
    <namespace>http://xml.apache.org/axis/wsdd/</namespace>
    ????
    </service>
    ????
    <service?name="SOAPMonitorService"?provider="java:RPC">
    ????????
    <parameter?name="allowedMethods"?value="publishMessage"?/>
    ????????
    <parameter?name="className"
    ????????????value
    ="org.apache.axis.monitor.SOAPMonitorService"?/>
    ????????
    <parameter?name="scope"?value="Application"?/>
    ????
    </service>
    ????
    <service?name="AxisDemo"?provider="java:RPC">
    ????????
    <parameter?name="allowedMethod"?value="*"></parameter>
    ????????
    <parameter?name="className"
    ????????????value
    ="com.lucky.axis.service.PersonInfoService">
    ????????
    </parameter>
    ????????
    <beanMapping?qname="myNS:Person"?xmlns:myNS="urn:PersonInfo"
    ????????????languageSpecificType
    ="java:com.lucky.axis.service.Person"?/>
    ????????
    <beanMapping?qname="myNS:Book"?xmlns:myNS="urn:PersonBookInfo"
    ????????????languageSpecificType
    ="java:com.lucky.axis.service.Book"?/>
    ????
    </service>
    ????
    <transport?name="http">
    ????????
    <requestFlow>
    ????????????
    <handler?type="URLMapper"?/>
    ????????????
    <handler
    ????????????????
    type="java:org.apache.axis.handlers.http.HTTPAuthHandler"?/>
    ????????
    </requestFlow>
    ????????
    <parameter?name="qs:list"
    ????????????value
    ="org.apache.axis.transport.http.QSListHandler"?/>
    ????????
    <parameter?name="qs:wsdl"
    ????????????value
    ="org.apache.axis.transport.http.QSWSDLHandler"?/>
    ????????
    <parameter?name="qs.list"
    ????????????value
    ="org.apache.axis.transport.http.QSListHandler"?/>
    ????????
    <parameter?name="qs.method"
    ????????????value
    ="org.apache.axis.transport.http.QSMethodHandler"?/>
    ????????
    <parameter?name="qs:method"
    ????????????value
    ="org.apache.axis.transport.http.QSMethodHandler"?/>
    ????????
    <parameter?name="qs.wsdl"
    ????????????value
    ="org.apache.axis.transport.http.QSWSDLHandler"?/>
    ????
    </transport>
    ????
    <transport?name="local">
    ????????
    <responseFlow>
    ????????????
    <handler?type="LocalResponder"?/>
    ????????
    </responseFlow>
    ????
    </transport>
    </deployment>

    其中
    <service?name="AxisDemo"?provider="java:RPC">
    ????????
    <parameter?name="allowedMethod"?value="*"></parameter>
    ????????
    <parameter?name="className"
    ????????????value
    ="com.lucky.axis.service.PersonInfoService">
    ????????
    </parameter>
    ????????
    <beanMapping?qname="myNS:Person"?xmlns:myNS="urn:PersonInfo"
    ????????????languageSpecificType
    ="java:com.lucky.axis.service.Person"?/>
    ????????
    <beanMapping?qname="myNS:Book"?xmlns:myNS="urn:PersonBookInfo"
    ????????????languageSpecificType
    ="java:com.lucky.axis.service.Book"?/>
    ????
    </service>
    是配置服務端的WebService,name="AxisDemo" 是WebService的名稱,使用http://localhost:8080/axis/services/AxisDemo?wsdl來訪問,name="allowedMethod" 表示服務類中那些方法需要封裝,value="*" 表示所有的方法都封裝,如果值封裝其中部分方法,需要把方法名稱列出來,用“,”逗號分割,name="className" 表示定義WebService服務端的類,value="com.lucky.axis.service.PersonInfoService" 表示將這個類作為WebService類封裝,<beanMapping qname="myNS:Person" xmlns:myNS="urn:PersonInfo"
    ???languageSpecificType="java:com.lucky.axis.service.Person" />這個表示類中需要引入的其他類
    重新啟動Tomcat5.5,訪問http://localhost:8080/axis/services/AxisDemo?wsdl,可以看到該Web ServiceWSDL描述信息



    ?

    編寫客戶端測試類,命名為Client.java。在該類中分別對PersonInfoService.java所提供的方法進行調用,代碼如下:

    package?com.lucky.axis.client;

    import?java.util.HashMap;
    import?java.util.Map;

    import?javax.xml.namespace.QName;

    import?org.apache.axis.client.Call;
    import?org.apache.axis.client.Service;
    import?org.apache.axis.encoding.ser.BeanDeserializerFactory;
    import?org.apache.axis.encoding.ser.BeanSerializerFactory;

    import?com.lucky.axis.service.Book;
    import?com.lucky.axis.service.Person;

    public?class?Client?{
    ????
    public?Client()?{
    ????}


    ????
    public?static?void?main(String[]?args)?throws?Exception?{
    //????????if?(args.length?<?1)?{
    //????????????System.out.println("錯誤:缺少參數");
    //????????????System.exit(0);
    //????????}
    ????????
    //?Web服務的URL
    ????????String?url?=?"http://localhost:8080/axis/services/AxisDemo";
    ????????Service?service?
    =?new?Service();
    ????????Call?call?
    =?(Call)?service.createCall();
    ????????call.setTargetEndpointAddress(url);

    ????????
    //?注冊序列化/反序列化器
    ????????QName?qn?=?new?QName("urn:PersonInfo",?"Person");
    ????????call.registerTypeMapping(Person.
    class,?qn,?new?BeanSerializerFactory(
    ????????????????Person.
    class,?qn),
    ????????????????
    new?BeanDeserializerFactory(Person.class,?qn));
    ????????QName?qnb?
    =?new?QName("urn:PersonBookInfo",?"Book");
    ????????call.registerTypeMapping(Book.
    class,?qnb,?new?BeanSerializerFactory(
    ????????????????Book.
    class,?qnb),?new?BeanDeserializerFactory(Book.class,?qnb));

    ????????
    //?設置調用方法
    ????????call.setOperationName(new?javax.xml.namespace.QName("http://test",
    ????????????????
    "getPersonInfo"));
    ????????Person?person?
    =?new?Person();
    ????????person.setName(
    "Kiah?Han");
    ????????person.setAge(
    26);
    ????????Map?map?
    =?new?HashMap();
    ????????map.put(
    "NAME",?"李彬");
    ????????map.put(
    "YEAR",?new?Integer(3));
    ????????person.setSkill(map);
    ????????Book?book?
    =?new?Book();
    ????????book.setBookname(
    "<Thinking?in?Java>");
    ????????book.setIsbn(
    new?Long(123456789));
    ????????book.setPrice((
    float)?25.98);
    ????????book.setPages(
    new?Integer(925));
    ????????person.setMybook(book);

    ????????
    //?Web服務調用
    ????????java.lang.Object?_resp?=?call.invoke(new?java.lang.Object[]?{?person?});

    ????????
    //?輸出到屏幕
    ????????System.out.println(_resp.toString());

    ????????System.out
    ????????????????.println(
    "------------Starting?setBookInfo()---------------------");
    ????????call.setOperationName(
    new?javax.xml.namespace.QName("http://test",
    ????????????????
    "setBookInfo"));
    ????????java.lang.Object?_resbook?
    =?call.invoke(new?java.lang.Object[]?{
    ????????????????
    "<Spring?pro>",?new?Long(987654321)?}
    );

    ????????Book?mybook?
    =?(Book)?_resbook;

    ????????System.out.println(mybook.getBookname());
    ????????System.out.println(mybook.getIsbn());
    ????????System.out.println(mybook.getPrice());
    ????????System.out.println(mybook.getPages());
    ????????System.out
    ????????????????.println(
    "------------End?setBookInfo()---------------------------");

    ????????System.out
    ????????????????.println(
    "------------Starting?getPersonInfo()---------------------");
    ????????call.setOperationName(
    new?javax.xml.namespace.QName("http://test",
    ????????????????
    "getPersonInfo"));
    ????????java.lang.Object?_resperson?
    =?call.invoke(new?java.lang.Object[]?{});

    ????????Person?aaron?
    =?(Person)?_resperson;
    ????????System.out.println(aaron.getName());
    ????????System.out.println(aaron.getAge());
    ????????Map?skill?
    =?aaron.getSkill();
    ????????System.out.println(skill.get(
    "NAME"));
    ????????System.out.println(skill.get(
    "YEAR"));
    ????????Book?aaronbook?
    =?aaron.getMybook();
    ????????System.out.println(aaronbook.getBookname());
    ????????System.out.println(aaronbook.getIsbn());
    ????????System.out.println(aaronbook.getPrice());
    ????????System.out.println(aaronbook.getPages());
    ????????System.out
    ????????????????.println(
    "------------End?getPersonInfo()---------------------");
    ????}


    }



    ???直接運行該Client.java中的main方法,運行結果如下:

    Hello, Kiah Han ! This is you information...
    Ages: 26
    李彬 : you have 3 years experience!
    Book Name : <Thinking in Java>
    ISBN : 123456789
    You pay $25.98 for this book.
    This book have 925 pages.

    ------------Starting setBookInfo()---------------------
    <Spring pro>
    987654321
    25.65
    265
    ------------End setBookInfo()---------------------------
    ------------Starting getPersonInfo()---------------------
    Aaron
    26
    JAVA
    3
    <Thinking in Java>
    456256821
    99.8
    982
    ------------End getPersonInfo()---------------------



    源碼: http://m.tkk7.com/Files/libin2722/axis.rar


    成功,好就到這里了,下班了,希望能給大家一點幫助

    我的聯系方式:
    qq:33614814
    e-mail:libin2722@sohu.com




    posted on 2007-11-22 18:59 禮物 閱讀(3731) 評論(2)  編輯  收藏 所屬分類: webservice

    評論

    # re: Axis1.4 開發筆記 2009-05-22 00:54 魔方網
    Thanks a lot   回復  更多評論
      

    # 文件位置好像放錯了 2012-11-20 14:58 趙光培
    在%Tomcat%\webapps\axis目錄下建立 server-config.wsdd 文件
    應該是在
    在%Tomcat%\webapps\axis\WEB-INF目錄下建立 server-config.wsdd 文件  回復  更多評論
      

    主站蜘蛛池模板: av网站免费线看| 99re6免费视频| 成人免费a级毛片| 亚洲一区在线视频观看| 亚洲精品日韩一区二区小说| 免费观看美女用震蛋喷水的视频| 亚洲AV本道一区二区三区四区 | 亚洲成a人片在线不卡一二三区 | 亚洲综合伊人制服丝袜美腿| 99久久人妻精品免费二区| 亚洲视频在线视频| 色欲aⅴ亚洲情无码AV蜜桃| 久久久www成人免费毛片| 亚洲乱码av中文一区二区| 日韩免费无砖专区2020狼| 亚洲精品国产成人99久久| 99久热只有精品视频免费观看17| 亚洲欧洲国产精品久久| a级日本高清免费看| 亚洲精品乱码久久久久久不卡| 一级毛片在线免费视频| 在线播放免费人成视频在线观看| 亚洲av无码专区在线电影天堂| 免费国产小视频在线观看| 2020天堂在线亚洲精品专区| 日本a级片免费看| 一级毛片正片免费视频手机看| 精品国产免费观看一区| jzzjzz免费观看大片免费| 亚洲AV成人片色在线观看| 在线观看视频免费完整版| 免费的黄网站男人的天堂| 内射少妇36P亚洲区| 免费无遮挡无码视频网站| 国产免费久久精品丫丫| 亚洲第一永久AV网站久久精品男人的天堂AV | 亚洲一区二区三区夜色| 高清国语自产拍免费视频国产| 和老外3p爽粗大免费视频| 亚洲午夜精品一区二区公牛电影院| 免费A级毛片av无码|