<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://www.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 文件  回復  更多評論
      

    主站蜘蛛池模板: 美女被爆羞羞网站在免费观看| 国产成人涩涩涩视频在线观看免费| 国产性生大片免费观看性| 免费无码午夜福利片 | 四只虎免费永久观看| 成人人免费夜夜视频观看| 噼里啪啦电影在线观看免费高清| 999国内精品永久免费观看| 16女性下面扒开无遮挡免费| 免费成人福利视频| 大地资源免费更新在线播放| 免费无码A片一区二三区| 免费观看美女裸体网站| 四虎影视免费永久在线观看| 国产成人亚洲综合| 精品久久香蕉国产线看观看亚洲| 亚洲精品白浆高清久久久久久| 亚洲A∨无码无在线观看| 亚洲日韩乱码中文无码蜜桃 | 久久久青草青青国产亚洲免观 | 国产成人精品免费视频软件| 亚洲精品高清一二区久久| 亚洲无人区一区二区三区| 亚洲国产精品久久久久久| 亚洲毛片基地日韩毛片基地| 久久亚洲国产最新网站| 免费一区二区三区在线视频| 三上悠亚电影全集免费| 1000部拍拍拍18勿入免费视频软件 | 久久精品国产96精品亚洲| 亚洲理论精品午夜电影| 亚洲日韩国产二区无码| 人人爽人人爽人人片A免费 | 日韩在线观看免费完整版视频| 三级黄色片免费看| av无码国产在线看免费网站| 国产成人青青热久免费精品| 亚洲AV综合色区无码另类小说| 亚洲三级视频在线观看| 日本免费精品一区二区三区| 99久久99热精品免费观看国产 |